본문 바로가기
MISC

Grafana에서 bpftrace 사용하기 (feat. Performance Co-Pilot)

by hyeyoo 2021. 11. 28.
※ 이 블로그의 글은 글쓴이가 공부하면서 정리하여 쓴 글입니다.
※ 최대한 내용을 검토하면서 글을 쓰지만 틀린 내용이 있을 수 있습니다.
※ 만약 틀린 부분이 있다면 댓글로 알려주세요.

FlameGraph on Grafana
BPF scripts on Grafana

최근에 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로 가서 활성화를 해준다.

Enable 클릭

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

 

Performance Co-Pilot Grafana Plugin — grafana-pcp 3.2.1 documentation

Performance Co-Pilot Grafana Plugin Performance Co-Pilot (PCP) provides a framework and services to support system-level performance monitoring and management. It presents a unifying abstraction for all of the performance data in a system, and many tools f

grafana-pcp.readthedocs.io

 

GitHub - performancecopilot/grafana-pcp: Performance Co-Pilot Grafana Plugin

Performance Co-Pilot Grafana Plugin. Contribute to performancecopilot/grafana-pcp development by creating an account on GitHub.

github.com

 

Visualizing System Performance with RHEL 8 Part 3: Kernel Metric Graphing with Performance Co-Pilot, Grafana, and Bpftrace

This post will show how we can use Performance Co-Pilot and bpftrace together to graph low-level kernel metrics that are not typically exposed through the usual Linux tools.

www.redhat.com

 

Chapter 8. Monitoring performance with Performance Co-Pilot Red Hat Enterprise Linux 8 | Red Hat Customer Portal

The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

access.redhat.com

 

DevConf.CZ 2020: Using bpftrace with Performance Co-Pilot...

View more about this event at DevConf.CZ 2020

devconfcz2020a.sched.com

 

댓글