본문 바로가기

Infra

Prometheus + Blackbox Exporter로 서버 ICMP(Ping) Health Check 구성하기 (3)

이전 포스트에서는 Grafana + Prometheus + Blackbox Exporter를 통해 ICMP 모니터링을 구현하였다면 이번 포스트에서는 Grafana 와 SLACK을 연동하여 특정 alert 상황에서 Slack 채널로 알림을 보내는 설정을 진행해 보도록 하겠습니다.

 

🔔 Slack 알림 설정

1. Slack Webhook 생성

  1. Slack API(https://api.slack.com/apps) 에서 앱 생성
    Create New App -> From scratch -> App Name 입력, 본인이 사용하는 Slack Workspace 선택 
  2. Incoming Webhook 활성화
    좌측 네비게이션 바에  Incoming Webhooks 선택 -> Off상태 를 On 상태로 변경 
  3. 알림 보낼 채널 선택
    -> Add New Webhook to Workspace 선택 ->
  4. Webhook URL 복사

2. Grafana Contact Point 등록

  • Alerting → Contact Points → New Contact Point
  • Type: Slack
  • Webhook URL 붙여넣기
  • 이름: Slack Alert

3. Alert Rule: 5분 동안 ping 실패 시 알림 설정

  • Alerting -> Alert rules -> New alert rule 

1) Enter alert rule name -> 지정할 Alert rule 이름 설정 


2) Define query and alert condition -> 우측에 보시면 Advanced options가 존재합니다. 해당 설정을 키고 설정하는걸 추천드립니다.

 - type = Prometheus선택

 - Metric = probe_success 선택

 - Label filters = job = icmp_ping , instance =~ ..*\\..*\\..*\\..*\\ 입력

    * ..*\\..*\\..*\\..*\\  의미 (0.0.0.0 ~ 255.255.255.255 까지 targets.json에 설정된 모든 IP Listen)


3)Operations 추가 버튼 클릭 

 - 하단에  Sum over time (Range 5m) -> Equal to (0) 로 설정 -> 5분동안 0으로 표시된 Job, Instance 내역을 받아오기 위해 사용 됩니다.


4) Expressions 추가 선택 -> Threshold 선택 -> Input [A] IS EQUAL TO 0 선택 -> Threshold 테이블 좌측에 Set as alert condition 선택 

  * 위에서 설정한 Define query and alert condition 측에 나온 5분동안 0으로 표시된 내역이 있으면 알림을 보내라는 Action을     추가해 준 상황입니다. A로만 적용하는 경우, 알림이 가지 않으니 꼭 B를 alert condition으로 지정해 주시기 바랍니다.

 

5) Add folder and labels = Alert group과 alert folder를 생성해 주시면 됩니다. (신규 설치시 존재하지 않으니 신규 생성해주시면 됩니다.)

 

6) Set evaluation behavior 

생성해 주신 Group 선택 -> Pending Period = None 으로 설정 

 

7) Configure notifications 

contact point 를 위에서 생성한 contact points를 지정해 주시면 됩니다. 

※ 주요 설정 

 - Override timings -> ON

  ( 동일한 오류 상황에 대하여 1회 발신이 아닌 지속 알림이 필요한 경우 사용됩니다. 설정하지 않은 경우 최초 1회만 알림이 수신되게 됩니다.)

 - Group wait = 0s

 - Group Interval = 30s ( 문제 발생시 30초 주기로 알림 송부)

 - Repeat interval = 1s (기존 알림 발생 이후 대기 시간)

 

8) Configure notification message 

Summary 측에 Slack측으로 송부할 오류메세지를 작성합니다.

ex)

🚨 서버 DOWN!
❌ {{ $labels.instance }} is not responding to ping. 

 

 

이후 우측 상단 save rule을 선택하여 저장해 주시면 됩니다.

 

Test 방법은VM을 통해 테스트 하시는 방법을 추천드립니다.