Customize 하지않은 상태로 Test 알림을 보내게되면 다음과 같은 알림을 얻을 수 있는데 필요한 정보만 Alerting하게 하는것이 Customize 하는 목적입니다.
**Firing**
Value: [no value]
Labels:
- alertname = TestAlert
- instance = Grafana
Annotations:
- summary = Notification test
Silence: http://-----
1. Alerts & IRM -> Contact points 로 이동
2.Notification Templates에서 + Add notification template 버튼을 눌러 새로운 템플릿을 만듭니다.
기본적으로 Nofification Templates은 Go 언어의 Template 문법을 사용하므로 사용방법과 관련 함수 Reference는 페이지 아래에 참조페이지에 링크 해놨습니다.
{{ define "telegram.print_alert" -}}
{{range $k, $v := .Values}} {{ $k }}={{ $v }} {{end}}
{{ if .Annotations -}
이벤트: {{ .Annotations.custom }} {{ .Values.B }}건 발생
서비스: npgweb
시간 : {{ .StartsAt.Format "2006-01-02 Mon 15:04:05"}}:
{{ end -}}
{{- end }}
{{ define "testTemplate" -}}
{{ if .Alerts.Firing -}}
[FIRING: {{ len .Alerts.Firing }}]
{{ range .Alerts.Firing }}
{{ template "telegram.print_alert" . }}
{{ end -}}
{{ end }}
{{ if .Alerts.Resolved -}}
[RESOLVED: {{ len .Alerts.Resolved }}]
{{ range .Alerts.Resolved }}
{{ template "telegram.print_alert" .}}
{{ end -}}
{{ end }}
{{- end }}
{{ define "testTemplate" -}} 을 통해 함수를 정할 수 있습니다. 위의 코드와 같이 "telegram.print_alert", "testTemplate" 2가지 함수를 만들었고 {{ template "Name" }} 으로 함수 사용이 가능합니다.
{{ if .Alerts.Firing -}} {{ end }} 를 이용하여 특정 조건이 갖춰줬을 때 해당 정보가 출력되게 합니다.
{{ range }} {{ end }} 를 이용해서 반복문을 수행할 수 있으며 KV(Key-Value)값은 각 변수에 할당해서 출력되게 할 수 있습니다.
위의 template을 이용해서 다음과 같은 알림을 얻을 수 있습니다.
[FIRING: 1]
B=1 C=2
이벤트: [Apache Status 304 Error 4건 발생]
서비스: npgweb
시간 : 2024-03-06 Wed 17:40:35:
참조페이지 :
https://grafana.com/docs/grafana/latest/alerting/manage-notifications/template-notifications/create-notification-templates/
https://grafana.com/docs/grafana/latest/alerting/manage-notifications/template-notifications/reference/
https://pkg.go.dev/time#pkg-constants
'DevOps' 카테고리의 다른 글
Dockerfile을 이용한 코드에 의한 서버 구축 (0) | 2024.10.21 |
---|---|
[Vector] Logstash 대체안 Vector (0) | 2024.04.19 |
[SonarQube/Jenkins] SonarQube + Jenkins + GitLab 연동하기 (0) | 2023.04.24 |
[Jenkins] Jenkins로 SpringBoot/Django/React 배포하기 (ver.2) (1) | 2023.03.22 |
[AWS] EC2 인스턴스(Ubuntu)에서 Docker 설치 (1) | 2023.03.13 |