블록체인 노드 모니터링 해보기 Part 2(feat. Grafana, Prometheus)

승톨·2022년 9월 17일
0

이전 글에서 이어집니다.

Grafana로 모니터링 데이터 시각화하기

이전 글에서 한번 언급한 것 처럼 프로메테우스를 이용한 모니터링 데이터를 시각화 할 때 가장 많이 언급되는 서비스는 Grafana 입니다. Grafana는 프로메테우스뿐만 아니라 엘리스틱서치 등 여러 종류의 데이터 소스를 시각화할 수 있는 오픈 소스 서비스입니다.

간단하게 그라파나를 살펴보겠습니다.

아래의 이미지는 그라파나 홈 화면 UI인데요. 화면 왼쪽 메뉴를 보면, 그라파나에서 제공하는 대부분의 기능들을 보실 수 있습니다.

메뉴 설명

  1. Search
    • 사용자가 만든 대시보드를 대시보드의 태그, 이름으로 검색할 수 있습니다.
  2. Create
    • 새로운 대시보드를 구성할 수 있고 다른 사람이 만든 대시보드를 추가할 수도 있습니다.
    • 대시보드를 분류해 관리하는 폴더를 설정합니다.
  3. Dashboards
    • 대시보드들을 모아볼 수 있는 페이지입니다.
    • 이미 만들어진 여러 대시보드를 연결해 한 화면에서 파워포인트의 슬라이드 쇼처럼 확인할 수 있는 playlist 와 특정 시간의 대시보드 화면을 캡쳐해서 공유할 수 있는 snapshot이 있습니다.
  4. Explore
    • 데이터 소스를 선택해 여러 표현식을 확인합니다.
    • PromQL을 테스트할 수 있습니다.
  5. Alerting
    • 알림을 보내기 위한 채널과 알림 규칙을 설정합니다.
  6. Configuration
    • 대시보드 구성을 설정합
  7. Server Admin
    • 새로운 사용자를 추가하거나 유저 role을 설정할 수 있습니다.

대략적으로 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 를 수정하시면 됩니다.

참고 : https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#override-configuration-with-environment-variables

추가로 다른 사람들이 계정을 만들지 못하도록 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에 대해 관심 있으신 분은 이 링크를 참고해보세요.

profile
소프트웨어 엔지니어링을 연마하고자 합니다.

0개의 댓글