최근에 BPF 스크립트, Flame Graph를 Grafana 같은 모니터링 시스템에서 실행하는건 어떤가 생각했는데 이미 있었다. 와 이게 된다니!! 이 글에서는 Ubuntu 21.04 (hirsute)에서 Performance Co-Pilot 플러그인으로 Grafana에서 bpftrace를 사용하는 방법을 다룬다.
bpftrace 설치
당연하게도 bpftrace를 Grafana에서 사용하려면 bpftrace를 먼저 설치해야한다.
$ sudo apt-get install -y bpftrace
bpftrace 설치는 간단한데 bpftrace를 사용하려면 커널이 BPF 관련 일부 config가 활성화된 상태로 빌드되어야 한다. 요즘 배포판에선 대부분 기본적으로 켜져있는 것 같다.
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_BPF_EVENTS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENTS=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_UPROBES=y
CONFIG_UPROBE_EVENTS=y
CONFIG_DEBUG_FS=y
현재 config가 뭔지 확인하려면 vi /boot/config-$(uname -r) 으로 확인해보자. bpftrace 설치 관련해서 자세한 내용은 bpftrace/INSTALL.md를 참고하자.
Performance Co-Pilot (PCP)
pcp는 리눅스, 윈도우, OS X, 솔라리스, FreeBSD 등 다양한 플랫폼에서 성능 모니터링을 하게 해주는 도구이다.
$ sudo apt-get install -y pcp
여기서 주의할 점은 pcp의 버전이 어느 정도 높아야 bpftrace를 사용할 수가 있다. 나는 5.3번대 버전을 설치했더니 잘 되었다. 잘 안된다면 소스를 빌드해서 설치하는 것도 방법이다.
grafana 설치
$ sudo apt-get install -y apt-transport-https
$ sudo apt-get install -y software-properties-common wget
$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
$ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
$ sudo apt-get update
$ sudo apt-get install -y grafana
grafana-pcp 플러그인 설치
$ wget https://github.com/performancecopilot/grafana-pcp/releases/download/v3.2.0/performancecopilot-pcp-app-3.2.0.zip
$ sudo unzip -d /var/lib/grafana/plugins/ performancecopilot-pcp-app-3.2.0.zip
$ sudo systemctl restart grafana-server
이제 플러그인이 추가됐으면 Grafana로 가서 활성화를 해준다.
bpftrace PMDA 설치
$ cd /var/lib/pcp/pmdas/bpftrace
$ sudo ./Install
sasl2-bin 설치
bpftrace는 root 권한을 요구하는데, 아무 계정이나 bpftrace를 실행하도록 하면 별로 좋지 않으므로 전용 계정을 만들어주어야 한다. 우선 saslpasswd2가 포함되어있는 sasl2-bin 패키지를 설치하자.
$ sudo apt-get install -y sasl2-bin
사용자 계정 추가 및 비밀번호 설정
여기서는 metrics라는 사용자 계정을 추가한다. 뒤에서 PCP bpftrace 데이터 소스를 추가할 때 사용한다.
$ useradd -r metrics
$ passwd metrics
$ saslpasswd2 -a pmcd metrics
$ chown root:pcp /etc/pcp/passwd.db
$ chmod 640 /etc/pcp/passwd.db
$ sudo systemctl restart pmcd
/var/lib/pcp/pmdas/bpftrace/bpftrace.conf 수정
bpftrace의 기능을 사용하려면 dynamic_scripts를 활성화해주어야 한다. enabled=false인 경우 enabled=true로 바꿔주자.
[dynamic_scripts]
enabled=true
그리고 allowed_users에 metrics도 추가해주자.
allowed_users=root,metrics
bpftrace PMDA 다시 설치
$ cd /var/lib/pcp/pmdas/bpftrace
$ sudo ./Remove
$ sudo ./Install
Data Source에서 PCP bpftrace추가
주소는 http://<IP 주소>:44322로 써주고, Auth는 Basic Auth를 선택한 후 아까 만든 계정 정보를 입력해준다.
PCP bpftrace의 대시보드 추가
데이터 소스에서 PCP bpftrace로 들어가면 미리 만들어진 대시보드를 사용할 수 있다. 잘 작동하는지 확인해보자.
Done!
굿! 이제 기본적인 설정은 다 끝났다.
Flame Graph
bpftrace scripts
'MISC' 카테고리의 다른 글
[나는 리뷰어다] 동시성 프로그래밍 (1) | 2022.10.02 |
---|---|
Grafana로 모니터링 시스템 구축하기 (0) | 2021.11.18 |
오드로이드 홈서버 구축기 - 운영체제 설치 (Armbian) (0) | 2021.11.18 |
오드로이드 홈서버 구축기 - 하드웨어 구성 (3) | 2021.11.16 |
루팅 없이 안드로이드에서 Docker 돌리기 (0) | 2020.09.18 |
댓글