Promoter ist eine Webhooks-Implementierung für AlertManager-Alarmbenachrichtigungen. Es unterstützt derzeit钉钉
und企业微信
und unterstützt die Anzeige von Echtzeit-Alarmdiagrammen in Nachrichtenbenachrichtigungen.
Das Projekt ist in der Go-Sprache geschrieben und es gibt viele Möglichkeiten, Promoter zu installieren.
Klonen Sie das Projekt direkt und erstellen Sie es manuell:
$ git clone https://github.com/cnych/promoter.git
$ cd promoter
$ go build -a -o promoter cmd/promoter/main.go
$ ./promoter --config.file= < your_file >
Das Promoter-Image wird auf Docker Hub hochgeladen. Sie können versuchen, den Dienst mit dem folgenden Befehl zu starten:
$ docker run --name promoter -d -p 8080:8080 cnych/promoter:main
Die folgende Konfiguration deckt im Wesentlichen die vom Promoter verwendete Konfiguration ab:
global :
prometheus_url : http://192.168.31.31:30104
wechat_api_secret : <secret>
wechat_api_corp_id : <secret>
dingtalk_api_token : <secret>
dingtalk_api_secret : <secret>
s3 :
access_key : <secret>
secret_key : <secret>
endpoint : oss-cn-beijing.aliyuncs.com
region : cn-beijing
bucket : <bucket>
receivers :
- name : rcv1
wechat_configs :
- agent_id : <agent_id>
to_user : " @all "
message_type : markdown
message : ' {{ template "wechat.default.message" . }} '
dingtalk_configs :
- message_type : markdown
markdown :
title : ' {{ template "dingtalk.default.title" . }} '
text : ' {{ template "dingtalk.default.content" . }} '
at :
atMobiles : [ "123456" ]
isAtAll : false
Unter „Global“ können Sie globale Attribute wie Unternehmens-WeChat- oder DingTalk-Schlüssel konfigurieren. Unter S3 gibt es eine Objektspeicherkonfiguration (Alibaba Cloud OSS kann auch verwendet werden), um die durch das Überwachungssymbol generierten Bilder zu speichern.
receivers
sind die konfigurierten Empfänger für verschiedene Nachrichten aufgeführt. Sie können Enterprise WeChat und DingTalk text
in einem markdown
konfigurieren. name
ist hier beispielsweise sehr rcv1
Die Webhook-Adresse des Empfängers lautet: http://<promoter-url>/rcv1/send
und muss im AlertManager-Webhook konfiguriert werden.
Es ist zu beachten, dass das Markdown-Format von Enterprise WeChat keine direkte Anzeige von Bildern unterstützt.
Die Standardvorlage befindet sich in template/default.tmpl
und kann nach Ihren eigenen Bedürfnissen angepasst werden:
{{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }}
{{ define "default.__text_alert_list" }}{{ range . }}
**{{ .Annotations.summary }}**
{{ range .Images }}
![click there get alert image]({{ .Url }})
{{- end }}
**description:**
> {{ .Annotations.description }}
**labels:**
{{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}{{ end }}
{{ end }}{{ end }}
{{ define "dingtalk.default.title" }}{{ template "__subject" . }}{{ end }}
{{ define "dingtalk.default.content" }}
{{ if gt (len .Alerts.Firing) 0 -}}
### {{ .Alerts.Firing | len }} Alerts Firing:
{{ template "default.__text_alert_list" .Alerts.Firing }}
{{ range .AtMobiles }}@{{ . }}{{ end }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
### **{{ .Alerts.Resolved | len }} Alerts Resolved:**
{{ template "default.__text_alert_list" .Alerts.Resolved }}
{{ range .AtMobiles }}@{{ . }}{{ end }}
{{- end }}
{{- end }}
{{ define "wechat.default.message" }}
{{ if gt (len .Alerts.Firing) 0 -}}
### {{ .Alerts.Firing | len }} Alerts Firing:
> {{ template "default.__text_alert_list" .Alerts.Firing }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
### **{{ .Alerts.Resolved | len }} Alerts Resolved:**
{{ template "default.__text_alert_list" .Alerts.Resolved }}
{{- end }}
{{- end }}
{{ define "wechat.default.to_user" }}{{ end }}
{{ define "wechat.default.to_party" }}{{ end }}
{{ define "wechat.default.to_tag" }}{{ end }}
{{ define "wechat.default.agent_id" }}{{ end }}