[Grafana] Alert Slack 연동하기
- 인프라/그라파나 & 프로메테우스
- 2022. 12. 14. 20:43
참고
- https://grafana.com/docs/grafana/v9.0/alerting/notifications/
- https://cleaning-toolbox.tistory.com/94
- https://gurumee92.tistory.com/272
개요
- 그라파나에서 Alert Rule 을 생성 후, Slack 과 연동하여 알람 메시지를 Slack 으로 전달 받는 방법에 대해서 정리 진행합니다.
그라파나 버전
8.5.5
버전
Slack 설정하기
- Grafana 에서 Alert 가 발생했을 떄, Slack 으로 메시지를 받으려면 Slack 에서 Web Hook 을 생성해야 합니다.
- Slack API 홈페이지 에 접속합니다.
- 만약 로그인이 되어 있지 않다면, 로그인을 진행해 주시기 바랍니다.
로그인이 되어 있다고 가정하고 다음으로 진행하겠습니다.
Slack App 생성하기
- 로그인이 완료 되었다면,
Create New App
버튼을 클릭해 Slack App 을 생성해야 합니다. - 아래 과정을 통해, Slack App 을 생성해 줍니다.
- 생성 완료 되었다면, 아래와 같이 App 목록이 보이게 됩니다.
Token 생성 및 기타 설정
- 앞서
grafana
이름을 가진 Slack App을 생성하였습니다. - App 목록에서 생성한 App 을 마우스로 클릭해 줍니다.
- 클릭하게 되면, 왼쪽에 설정 메뉴들이 보이고 여기서
OAuth & Permissions
메뉴가 보입니다. - 해당 메뉴를 선택해 줍니다.
OAuth & Permissions
메뉴를 선택 하였다면, 다양한 옵션을 설정할 수 있는 화면이 나옵니다.- 여기서
Scopes -> Bot Token Scopes
항목을 찾아서OAuth Scope
을 추가해 주어야 합니다. - 추가해야 할 Scope 은
chat:write
,files:write
2개 입니다. - 해당 권한을 추가한 이유는, 그라파나에서 Slack API 를 통해 메시지와 그래프 이미지를 전송하기 위해서 입니다.
Add an OAuth Scope
버튼을 통해chat:write
,files:write
Scope 을 추가할 수 있습니다.
Bot User OAuth Token 설정하기
OAuth Tokens for Your Workspace
목록에서Install to Workspace
버튼을 클릭하여,Bot User OAuth Token
을 생성해 줍니다.
Webhooks 생성하기
- 앞서, Token 생성이 완료 되었다면
Webhooks URL
을 생성해 주어야 합니다. Incoming Webhooks
메뉴를 클릭하게 되면 아래와 같은 화면이 나옵니다.- 여기서
off
버튼을on
으로 활성화 시켜줍니다.
- 활성화 시키면
Webhook URLs for Your Workspace
목록이 보이는 것을 볼 수 있습니다. - 여기서
Add New Webhook to Workspace
버튼을 클릭해 줍니다.
- 최종적으로 다음과 같이 Webhooks URL 이 생성된 것을 확인할 수 있습니다.
Slack 앱에서 Workspace 에서 알람 받을 채널 추가하기
- 앞서, Token 과 WebHook URL 생성을 완료 하였습니다.
- 이제 실제로, 그라파나에서 Alert 메시지를 받기 위한 WorkSpace 에서 가서 채널 을 생성해 줍니다.
- 저는
일반
채널에서 테스트 진행하였습니다.
- 채널 추가를 다 했다면, 다음으로 채팅장에서
@APP_NAME
으로 메시지를 입력하여 보내면, 본인이 앞에서 만들었던 Slack App 을 초대할 수 있습니다. - 저는
grafana
이름을 가진 Slack App 을 만들었기 때문에@grafana
입력하여 메시지를 보냈습니다.
- 메시지를 입력 후,
grafana
봇이 채널 방에 추가된 것을 확인할 수 있습니다. - 여기까지 완료 되었다면, Slack 에서 설정은 완료 되었고 Grafana 에서 Alert 메시지를 받을 준비가 다 되었습니다.
- 다음으로 Grafana 에서 Alert Rule 을 생성하여 어떻게 Slack 에 메시지를 통지하는지 까지 방법에 대해서 알아 보겠습니다.
Grafana Alert 생성하기
- 앞서, Slack 설정 및 연동을 모두 마쳤습니다.
- Grafana ALert 생성하기에 앞서 Grafana 에서 제공해주는 Alert 메뉴는 다음과 같습니다.
- Alert rules : 임계값이나 여러 표현식을 사용하여 알람을 설정하는 메뉴입니다.
- Contact points : Alert message 의 템플릿을 만들거나 Alert 를 어떠한 플랫폼(gmail, slack etc..) 으로 전송할 지 정하는 메뉴입니다.
- Notifiction policies : Label 을 체계적으로 정리하여 그룹화 시켜 확인할 수 있는 메뉴입니다.
- Silences : 특정 시간에 Alert 를 울리지 않게 하는 메뉴 입니다.
- Admin : Alert 의 Json 파일을 확인할 수 있고 외부의 AlertManager 랑 연동할 수 있습니다.
Grafana Alert Rule 생성하기
- 이제 Grafana 에서 Alert 를 생성하는 방법에 대해서 알려 드리도록 하겠습니다.
- 그라파나 메인 화면에 접속 후,
벨
모양의 아이콘을 클릭합니다.
- 클릭하게 되면, 아래와 같은 UI 화면이 나옵니다.
New alert rule
버튼을 클릭하게 되면, 본인이 만들고자 하는 Alert Rule 을 생성할 수 있습니다.Create alert rule
목록에는 크게 4가지 항목이 있습니다.- Rule Type
- Create a query to be alerted on
- Define alert conditions
- Add details for your alert
- Rule Type
1. Rule Type
Rule Type
에서는 Rule 이름과 Group 등을 지정해 줍니다.- 저는 현재 Server 의 Storage 용량을 체크하는 Rule 을 만들기 위해,
Storage Rule
이라는 이름으로 명명하였습니다.
2. Create a query to be alerted on
Create a query to be alerted on
에서는 실제 Alert 발생하고자 하는 query 값을 입력 하는 부분입니다.
Create a query to be alerted on
에는 크게 A 영역과 B 영역으로 나뉩니다.- A영역에서는 어떠한 값을 기준으로 Alert를 발생시킬 지 값을 추출하는 쿼리문을 작성합니다.
- B는 A의 값을 어떠한 기준으로 Alert를 발생시킬지 Alert 의 기준을 설정합니다.
위에 query 는 현재 Server 가 사용하는 storage 용량을 체크하는 쿼리문입니다. 그리고 B 영역에서는 마지막 값이 50 이면 Alert 가 발생되도록 기준 값을 설정하였습니다.
3. Define alert conditions
Define alert conditions
에서는 Alert 기준 값을 몇초 이상 지속되게 발생하는지 체크하는 부분입니다.- 아래에서는
Evaluate every = 1m
,for = 5m
이기 때문에 5분동안 1분 간격으로 기준값을 초과했는지에 대한 유무를 판단한다는 의미입니다.
4. Add details for your alert
Add details for your alert
에서는 Alert에 대한 내용을 작성하며 맨 밑에 Label을 추가함으로 확장된 기능들을 사용할 수 있습니다.- 예를 들어 Level=1, Level=2, Level=3으로 Label을 붙여 Level마다 다른 플랫폼으로 Alert를 발생시킬 수 있습니다.
Alert Rule 생성 완료
- 위 작업을 완료 후, Save 하게 되면 Alert Rule 이 하나 생성된 것을 확인할 수 있습니다.
- 아래와 같이
Storage Test Alert
이름을 가진 Alert Rule 이 생성된 것을 확인할 수 있습니다.
Contact points 설정하기
- 앞서 Alert Rule 을 하나 생성하였습니다.
- Rule 을 생성했다고 해서 Alert 가 발생 하였을 때, 알람 메시지가 바로 전송되는 것이 아닙니다.
Contact points
에서 내가 전송받고자 하는 매개체를 선택해 주어야 합니다.- 여기서 앞서 미리 생성했던, Slack 의 WebHook URL 과 Token 이 필요합니다.
Contact points
메뉴에 들어가게 되면, 아래와 같이New Contact point
버튼이 보이게 됩니다.
New Contact point
버튼 클릭 하게 되면, 아래와 같이 Contact point 를 생성할 수 있는 폼이 나옵니다.- 저는 Slack 을 연동시킬 것이기 때문에, Token 정보와 Slack 정보를 선택해주었습니다.
- 이제 연동이 되었는지 확인하기 위해 Test 버튼을 클릭한 후, 실제로 Alert 메시지가 오는지 확인합니다.
- 위와 같이 Slack 으로 Alert 메시지가 오는 것을 확인할 수 있습니다.
Notification policies
- 다은은
Notification policies
입니다. - 앞서, Contact Points 를 생성 하였습니다.
- 이제 생성된 Contact Points 를 실제
Notification policies
에 등록을 해주어야 합니다. - Notification policies 에 등록하지 않으면, Alert 가 발생하더라도 Alert 메시지가 전송되지 않습니다.
Notification policies
등록하는 방법은 다음과 같습니다.Edit
버튼을 클릭합니다.
- 아래 화면에서, 앞서 만들었던
SlackTest
이름의 Contact Points 를 선택 후 저장 진행합니다. - 다음과 같이, Contact point 값이 SlackTest 로 변경된 것을 확인할 수 있습니다.
- Timings 는 원하는 대로 설정해 주시면 됩니다.
- 여기까지 모두 등록을 마쳐야 Grafana 에서 Alert 가 발생 시, Slack 에 정상적으로 메시지 전달이 됩니다.
728x90
'인프라 > 그라파나 & 프로메테우스' 카테고리의 다른 글
[Grafana] Grafana DashBoard URL iframe 태그 호출 방법 (0) | 2023.01.05 |
---|---|
[Grafana] Slack Alert 메시지 커스텀 하는 방법 (0) | 2022.12.15 |
[인프라] RabbitMQ Prometheus 개별 Queue Metric 수집 방법 (0) | 2022.10.13 |
[인프라] Grafana Login 페이지 Disable 방법 (0) | 2022.09.29 |
[인프라] Grafana Multiple Y Axis 사용방법 (0) | 2022.09.18 |
이 글을 공유하기