prometheus + grafana 로 cpu rate 시각화 하기

jinwook han·2022년 5월 28일
0
post-thumbnail

목표:
노드의 cpu 사용률을 grafana로 시각화한다.

아래 구조를 만든다.
1. prometheus exporter를 통해 노드의 cpu rate를 수집한다.
2. prometheus 서버가 exporter의 metric을 pull한다.
3. grafana가 prometheus 서버에 저장된 metric을 시각화한다.

exporter 설치

node_exporter를 설치한다.

brew install node_exporter

https://formulae.brew.sh/formula/node_exporter

실행해보자.

brew services start node_exporter

http://localhost:9100/metrics에서 메트릭을 확인할 수 있다.


cpu 관련 메트릭도 수집하고 있다.

prometheus 설치

가이드를 참고한다.

https://prometheus.io/docs/prometheus/latest/getting_started/

실행 파일을 다운로드받은 후, 다음 명령어로 실행한다.

./prometheus --config.file=prometheus.yml

brew로도 다운받을 수 있다.
아래 명령어를 사용한다.
brew install prometheus
MacBook Air (13-inch, 2017)인 글쓴이 로컬에서는 brew install하는데 시간이 오래 걸려서, 다른 방법을 사용했다.


prometheus 서버가 띄워진 것을 확인한다. 9090 번이 default port다.

prometheus와 exporter의 연결

exporter/metrics로 노출하는 정보를 prometheus에서 pull할 수 있어야 한다.

local에서 작업한다면 추가적인 작업은 필요없다.

prometheus.yml의 기본 설정에 exporter의 url이 추가되어 있기 때문이다.

만약 local 환경이 아니라면, exporter의 ip 주소를 static_configs에 추가해 주자.

설정이 반영된 후, prometheus에서도 cpu 메트릭을 확인할 수 있다. exporter에서 노출하는 cpu 메트릭을 prometheus가 pull하고 있다.

Grafana 설치

brew로 설치한다.

brew install grafana

실행한다.

brew services start grafana

localhost:3000을 확인해보자.


로그인 페이지를 볼 수 있다.

Grafana와 prometheus 연결

grafana 설정에 들어간다.


prometheus data source를 추가한다.


URL에 prometheus의 url을 적는다. 그 외에 필요한 설정을 추가한다.


explore 탭으로 들어가보자. prometheus 메트릭을 검색하면 결과를 볼 수 있다.

CPU 계산하는 promQL

stackoverflow에서 다음 promQL을 추천하고 있다.

https://stackoverflow.com/questions/34923788/prometheus-convert-cpu-user-seconds-to-cpu-usage

100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

위 방법을 사용하면 될 것 같다.

node_cpu_seconds_total의 mode는 idle, nice, user, system으로 나뉜다.

idle 모드를 제외한 나머지 모드에서 cpu는 계산 중 상태이므로, 100%에서 idle한 비율을 빼는 방법을 사용한다.

15초 동안 idle한 시간이 0초라면 cpu는 100%이고, idle한 시간이 15초이면 cpu는 0%다.

grafana 대시보드에서 cpu 시각화하기

대시보드에서 패널을 추가한다.


cpu 계산하는 promQL 코드를 panel 설정에 추가한다.


CPU 사용률을 대시보드에서 볼 수 있다!

0개의 댓글