prometheus에서 알림 및 복구 시 알림 내용 간 전환
TL;DR
소개
경고 알림에 경고 이름뿐만 아니라 조금 자세한 정보와 문장을 추가하고 싶어집니다.
그것에는 alert rule의 ANNOTATIONS
로 지정한 summary라든지가 text: '{{ .CommonAnnotations.summary }}'
처럼 지정하면 slack에 흘릴 수 있는 것을 알 수 있다.
또, send_resolved: true
를 alertmanager 설정으로 지정하면 경고로부터 복구했을 때는 slack 로 통지해 준다.
Alerting rules | Prometheus
구성 | Prometheus
Custom Alertmanager Templates | Prometheus
alert.ruleALERT hoge_alert
IF hoge_metrics == 0
FOR 1s
LABELS {
severity="critical",
}
ANNOTATIONS {
summary = "hoge of {{ $labels.host_name }} is NG.",
}
alertmanager.yml...
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXX'
channel: '#alerting-test'
text: "{{ .CommonAnnotations.summary }}"
send_resolved: true
...
하지만 보시다시피 통지 하단의 문장이 NG 그대로 기분 나쁘다.
그래서 alert rule 마다 지정한 경고시 문언, 복구시 문언을 나누도록 해 보았다.
또, slack의 title 상당한 곳에 label이 어긋나 늘어서 있지만 엉망이 되고 있다.
경고 규칙에 복구 시 메시지 정의
ANNOTATIONS내는 좋아하는 프로퍼티를 정의할 수 있으므로 이하와 같이 써 보자.
alert.ruleALERT hoge_alert
IF hoge_metrics == 0
FOR 1s
LABELS {
severity="critical",
}
ANNOTATIONS {
firing_text = "hoge of {{ $labels.host_name }} is NG.",
resolved_text = "hoge of {{ $labels.host_name }} is OK.",
}
alertmanager로 경고 시간과 복구 시간 내용 간 전환
title:
는 경고명이 {{ .GroupLabels.alertname }}
로 취해지지만, 선두에 [FIRING], [RESOLVED]는 넣고 싶기 때문에 if로 조건 분기.
text:
뿐만 아니라 {{ .CommonAnnotations.firing_text }}
와 {{ .CommonAnnotations.resolved_text }}
에서 alert rule의 ANNOTATIONS를 호출합니다.
alertmanager.yml...
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXX'
channel: '#alerting-test'
title: '{{ if eq .Status "firing" }}[FIRING]{{else}}[RESOLVED]{{end}} {{ .GroupLabels.alertname }}'
text: '{{ if eq .Status "firing" }}{{ .CommonAnnotations.firing_text }}{{else}}{{ .CommonAnnotations.resolved_text }}{{end}}'
send_resolved: true
...
동작 확인 : 경고 소리
이런 식으로.
prometheus에서 테스트 경고 by pushgateway - Qiita
할 수 있었다!
label이 사라졌고, 문언도 경고시와 복구시에 바뀔 수 있다.
요약
ALERT hoge_alert
IF hoge_metrics == 0
FOR 1s
LABELS {
severity="critical",
}
ANNOTATIONS {
summary = "hoge of {{ $labels.host_name }} is NG.",
}
...
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXX'
channel: '#alerting-test'
text: "{{ .CommonAnnotations.summary }}"
send_resolved: true
...
ANNOTATIONS내는 좋아하는 프로퍼티를 정의할 수 있으므로 이하와 같이 써 보자.
alert.rule
ALERT hoge_alert
IF hoge_metrics == 0
FOR 1s
LABELS {
severity="critical",
}
ANNOTATIONS {
firing_text = "hoge of {{ $labels.host_name }} is NG.",
resolved_text = "hoge of {{ $labels.host_name }} is OK.",
}
alertmanager로 경고 시간과 복구 시간 내용 간 전환
title:
는 경고명이 {{ .GroupLabels.alertname }}
로 취해지지만, 선두에 [FIRING], [RESOLVED]는 넣고 싶기 때문에 if로 조건 분기.
text:
뿐만 아니라 {{ .CommonAnnotations.firing_text }}
와 {{ .CommonAnnotations.resolved_text }}
에서 alert rule의 ANNOTATIONS를 호출합니다.
alertmanager.yml...
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXX'
channel: '#alerting-test'
title: '{{ if eq .Status "firing" }}[FIRING]{{else}}[RESOLVED]{{end}} {{ .GroupLabels.alertname }}'
text: '{{ if eq .Status "firing" }}{{ .CommonAnnotations.firing_text }}{{else}}{{ .CommonAnnotations.resolved_text }}{{end}}'
send_resolved: true
...
동작 확인 : 경고 소리
이런 식으로.
prometheus에서 테스트 경고 by pushgateway - Qiita
할 수 있었다!
label이 사라졌고, 문언도 경고시와 복구시에 바뀔 수 있다.
요약
...
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXX'
channel: '#alerting-test'
title: '{{ if eq .Status "firing" }}[FIRING]{{else}}[RESOLVED]{{end}} {{ .GroupLabels.alertname }}'
text: '{{ if eq .Status "firing" }}{{ .CommonAnnotations.firing_text }}{{else}}{{ .CommonAnnotations.resolved_text }}{{end}}'
send_resolved: true
...
이런 식으로.
prometheus에서 테스트 경고 by pushgateway - Qiita
할 수 있었다!
label이 사라졌고, 문언도 경고시와 복구시에 바뀔 수 있다.
요약
title:
에 있어도 좋았을지도 하지만 힘든 일
이상.
Reference
이 문제에 관하여(prometheus에서 알림 및 복구 시 알림 내용 간 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noexpect/items/5faab079fbf700ae7eb3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)