[Grafana] Alert Slack 연동하기

참고


개요

  • 그라파나에서 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가지 항목이 있습니다.
    1. Rule Type
    2. Create a query to be alerted on
    3. Define alert conditions
    4. Add details for your alert

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

이 글을 공유하기

댓글

Designed by JB FACTORY