Prometheus, Grafana, Node exporter로 모니터링 구현에는 성공했는데, Grafana를 계속 켜두면서 모니터링 하기에는 불편함이 너무 많았다. 이를 해결하기 위해 Grafana의 alert기능을 이용하여 Slack과 연동해보았다.
이 글은 Grafana와 Slack 연동 방법에 대해서 정리한 글입니다. https://helloresekai.tistory.com/58 내용과 이어집니다.
1. Slack API 설정
1-1. Slack App 생성
Slack API 페이지 에 접속하여 로그인합니다.
우측 상단의 Create New App을 누르고 From scratch를 눌러줍니다.
App Name을 입력하고, 연동할 Slack Workspace를 선택하고 Create App을 눌러 생성합니다.
1-2. Token 생성 및 기타 설정
생성이 완료 됐으면, 목록에서 방금 생성한 App을 클릭합니다.
왼쪽 카테고리에서 OAuth & Permissions 를 누르고 페이지를 내리다가 Scopes 설정을 해줍니다.
여기서 위 사진과 같이 chat:wirte, files:write 를 추가해줍니다.
해당 권한을 추가한 이유는, 그라파나에서 Slack API를 통해 메시지와 그래프 이미지를 전송하기 위해서입니다.
1-3. Bot User OAuth Token 설정
OAuth Tokens for Your Workspace 목록에서 Install to Workspace 버튼을 클릭하여 Bot User OAuth Token을 생성해줍니다.
1-4. Webhooks 설정
Token 생성이 완료되면 Webhooks URL을 생성해줍니다.
Incoming Webhooks 메뉴에서 off를 on으로 활성화시켜줍니다.
활성화 후, 목록이 보여지는데 Add New Webhook to Workspace 를 눌러 Webhooks URL을 생성합니다.
Slack WorkSpace에서 모니터링 알람을 받을 채널을 선택하고 권한 허용해줍니다.
1-5. Slack 앱의 Workspace 에서 알람 받을 채널 추가
슬랙의 모니터링 받을 채널 채팅창에 @grafana 라고 입력하여 grafana를 해당 Slack App에 초대합니다.
2. Grafana Alert 설정
2-1. Grafana Alert Rule 생성
왼쪽 카테고리의 Alert rules 를 눌러 생성할 수도 있지만, 좀 더 쉬운 방법이 있다.
기존에 만들어뒀던 Dashboard에 들어가서 원하는 항목의 오른쪽 상단에 마우스를 가져다 대면 나오는 Edit을 선택한다.
Alert탭을 눌러 New alert rule을 눌러준다.
그럼 템플릿에 적용되어있던 세분화된 쿼리 항목들을 볼 수 있다.
스크롤을 조금 밑으로 내리다보면 Rule type을 세팅할 수 있는데, Add expression을 눌러 Classic condition을 선택해준다.
WHEN과 Choose, IS ABOVE 값을 상황에 맞게 선택하고 오른쪽 상단의 Set as alert condition 을 눌러 해당 condition을 선택한다.
Set evaluation behavior 에서 Folder을 선택해줍니다. 없다면 New folder를 선택하여 폴더를 만들어준다.
선택한 폴더에 만들 Alert Rule이 생성된다.
이 후, 우측 상단의 Sava rule and exit를 눌러 Alert Rule을 생성한다.
2-2. Contact points 설정
이제 Contact points 에서 내가 전송받고자 하는 매개체를 선택해 주어야 한다.
여기서 앞서 미리 생성했던, Slack의 WebHook URL과 Token이 필요하다.
전부 입력되었으면 우측 상단의 Test를 눌러 실제로 Alert 메세지가 오는지 확인한다.
2-3. Notification policies 설정
이제 생성된 Contact Points를 실제 Notification policies에 등록 해주어야 한다.
등록하지 않으면, Alert가 발생해도 Alert 메시지가 전송되지 않는다.
Default policy가 이미 있을텐데, 우측 끝의 ... 을 눌러 Edit을 눌러준다.
여기서 Contact point를 선택하고, Timing options를 설정한다.
이 부분을 잘못만지면 알람 지옥을 겪을 수 있으니 상황에 맞춰 적당한 값을 입력해야한다.
모두 입력했으면 Update default policy를 눌러 설정을 완료한다.
3. 결과
서비스 중인 프로젝트에서는 기본 프리티어의 메모리를 사용하고있어 스왑메모리로 용량을 늘려주었기 때문에 스왑메모리 기준으로 메모리 사용량에 대한 알림을 받게끔 설정해두었다.
정상적으로 Slack 알림을 받을 수 있었다!
📌 Reference
https://grafana.com/docs/grafana/v9.0/alerting/notifications/
Notification policies | Grafana documentation
Thank you! Your message has been received!
grafana.com
https://afsdzvcx123.tistory.com/entry/Grafana-Alert-Slack-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0
[Grafana] Alert Slack 연동하기
참고 https://grafana.com/docs/grafana/v9.0/alerting/notifications/ https://cleaning-toolbox.tistory.com/94 https://gurumee92.tistory.com/272 개요 그라파나에서 Alert Rule 을 생성 후, Slack 과 연동하여 알람 메시지를 Slack 으로 전
afsdzvcx123.tistory.com
'DevOps > Monitoring' 카테고리의 다른 글
Prometheus, Grafana, Node Exporter로 서버 모니터링 구현기 (with Docker) - 1 (1) | 2024.03.04 |
---|