Grafana → Slack 알림 메시지 커스터 마이징

혹시·2025년 7월 7일

Azure-Operation

목록 보기
1/9

기본 알림 메시지

[커스텀 메시지]

Grafana에서 모니터링한 데이터를 Slack으로 실시간 알림 받을 수 있습니다. 이를 커스텀 해보려고 합니다.
먼저 Grafana에서 CPU 사용률을 모니터링하여 일정 임계값을 초과하면 Slack으로 알림을 전송하는 커스텀 메시지를 설정해 보겠습니다.


메트릭 우상단에 메뉴에서 알람 설정을 할 수도 있다.

Grafana에서 특정 조건(예: CPU 사용률 80% 이상) 발생 시 알림 설정을 하고, 안내 오는 포멧을 보겠습니다.

New alert rule으로 새로 만들거나 기존 알람을 edit 하면 됩니다.
이후 6. configure notification message에서 알림 메시지를 커스텀 할 수 있습니다.

Alerting > alert rules > Edit rule > 6. configure notification message

[적용 결과]

Grafana에서 Slack으로 전송되는 알림 메시지는 기본 설정 상태에서는 아래와 같이 정보는 많지만, 다소 복잡하고 가독성이 떨어지는 형식으로 표시됩니다.

이는 Grafana의 Alert가 발생하면 Notification Policy에서 정의된 Contact Point (Slack, 이메일 등) 을 통해 메시지가 전송되는데, 이때 내장된 템플릿(Built-in Templates) 형식을 사용하기 때문입니다.

경고 메시지 포맷을 사용자 정의하고 싶다면 아래 경로를 참고해 Template을 수정하거나 새로 만들 수 있습니다.

Alerting > Contact points > Notification Templates > Template group > Built-in Templates

--> 하지만 어떻게 수정해야 저 URL들이 뜨지 않을까 수정해보았습니다. (다음)







기본 알림 수정

기본 템플릿 사용 시 복잡하게 표시되던 Slack 메시지(예: rule URL 포함 등)를 간결하게 커스터마이징합니다.

alerting > contact points > Notification Templates > Add notification template group

[수정 후 알림 예시]

📉 알림 발생 시 / 📈 알림 해제 시 아래와 같이 간단하고 명확한 메시지로 Slack에 전송됩니다:

아래는 ChatGPT와 함께 작성한 Slack 메시지만을 위한 포맷 템플릿입니다. CPU 사용률을 중심으로 간단한 메시지를 구성합니다.

{{ define "slack.default.text" }}

{{ if gt (len .Alerts.Firing) 0 }}
🚨 ALERT:
{{ range .Alerts.Firing }}
- {{ .Labels.alertname }}: CPU {{ printf "%.1f%%" (index .Values "B") }} on {{ .Labels.resourceName }}
📅 Time: {{ .StartsAt }}
🎯 Threshold: 80%
{{ end }}
{{ end }}

{{ if gt (len .Alerts.Resolved) 0 }}
✅ RESOLVED:
{{ range .Alerts.Resolved }}
- {{ .Labels.alertname }} resolved on {{ .Labels.resourceName }} (current: {{ printf "%.1f%%" (index .Values "B") }})
📅 Started: {{ .StartsAt }}
📅 Resolved: {{ .EndsAt }}
{{ end }}
{{ end }}

{{ end }}

{{ define "default.message" }}
{{ template "slack.default.text" . }}
{{ end }}




가상머신 리부팅 시 알림 누락 대응하기

운영 중 가상머신이 on/off 되면서 메트릭이 일시적으로 끊기고, 알람이 즉시 발생하지 않는 경우가 있었습니다. 이는 특히 테스트 환경에서 자주 발생할 수 있는 문제입니다.

아래 항목을 고려하여 수정하였습니다.

[경고를 발생시킬 조건을 정의]

Alerting > alert rules > Edit rule > 2. Define query and alert condition > option

  • Time Range : 데이터 분석 시간 범위. 이 경우 now-1m to now는 "최근 1분부터 현재까지"를 의미
  • Interval : 각 데이터 포인트 간격 (30초마다 수집 )
    -> 너무 짧은 interval은 불필요한 알림 발생을 유발할 수 있으므로 주의가 필요합니다.

[발생하는 방식 및 조건을 정의]

Alerting > alert rules > Edit rule > 4. Set evaluation behavior

  • Pending period : 조건이 만족된 후 경고가 실제로 발동되기까지 대기 시간 (예: 1분 동안 조건이 유지돼야 발동)
  • Keep firing for : 조건이 해제돼도 경고를 계속 유지할 시간 (예: 0초이면 조건 해제 시 바로 정상 상태로 돌아감)
profile
클라우드하는 귀여운 애

0개의 댓글