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

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