이전 글에서 이어집니다.
이전 글에서 한번 언급한 것 처럼 프로메테우스를 이용한 모니터링 데이터를 시각화 할 때 가장 많이 언급되는 서비스는 Grafana 입니다. Grafana는 프로메테우스뿐만 아니라 엘리스틱서치 등 여러 종류의 데이터 소스를 시각화할 수 있는 오픈 소스 서비스입니다.
간단하게 그라파나를 살펴보겠습니다.
아래의 이미지는 그라파나 홈 화면 UI인데요. 화면 왼쪽 메뉴를 보면, 그라파나에서 제공하는 대부분의 기능들을 보실 수 있습니다.
메뉴 설명
대략적으로 grafana를 알아봤으니, 실행할 서버를 설치하고 실행해보겠습니다.
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update
sudo apt install grafana
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
서버가 정상적으로 실행됐으면, UI에 접속해봅시다.
(Grafana 의 기본 포트는 3000 이며, 기본 아이디/비밀번호는 admin/admin 입니다.)
설정을 바꾸려면 /etc/grafana/grafana.ini
파일 내용을 변경하시면 됩니다.
비밀번호는 바로 바꾸는걸 추천드리며, 설정으로 바꾸려면 grafana.ini
에서 admin_password
를 수정하시면 됩니다.
추가로 다른 사람들이 계정을 만들지 못하도록 allow_sign_up 플래그도 false로 변경하는 것을 추천드립니다.
설정에서 접근 port도 변경할 수 있습니다.
만약 설정값을 바꾸게 되면 sudo systemctl restart grafana-server
로 서버를 재시작 해야 합니다.
이제 서버 세팅도 완료했으니, 프로메테우스를 연동해봅시다.
Configuration 메뉴에서 Data source 메뉴로 가서 Add data source를 해줍니다.
Prometheus
를 검색해서 HTTP URL을 아까 설정했던 http://localhost:19001
으로 적어주고 save 해줍니다.
새롭게 대시보드를 그리려면, Create 메뉴에서 Dashboard를 선택, Add new panel을 선택합니다.
패널이 추가되면 가운데 보이는 메트릭(Metrics) 부분에 PromQL(Prometheus Query Language) 을 적어줍니다.
예시 :
1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (kubernetes_node)
PromQL 참고 :
남이 만든 대시보드를 가져오고 싶다면, Create 메뉴에서 Import를 선택, 특정 대시보드의 ID를 가져오면 됩니다.
예를 들어 아래의 Node exporter 대시보드를 가져오고 싶다면, 1860을 입력하면 됩니다.
이제 수집한 데이터를 활용해 만들고싶은 차트들을 그려 대시보드를 완성하시면 됩니다!
그라파나는 여러 채널로 알림들을 보낼 수 있습니다.
슬랙 알림 연동은 그렇게 복잡하지 않아, 참고 글 첨부로 대신하려 합니다. 이 글을 참고하시면 됩니다.
이번 글에서는 prometheus와 grafana를 활용해 노드 모니터링 하는 법에 대해 알아보았습니다.
참고로, docker를 사용해 만든 Near monitoring 샘플 코드가 있습니다. 참고하시려면, 깃헙 레포를 방문해주세요.
해당 레포는 Grafana provisioning을 활용해 grafana 서버를 세팅할 때 미리 설정해놓은 데이터소스를 가져와 미리 그려놓은 대시보드를 만들어줍니다.
provisioning에 대해 관심 있으신 분은 이 링크를 참고해보세요.