Promotor adalah implementasi Webhook untuk pemberitahuan alarm AlertManager. Saat ini mendukung钉钉
dan企业微信
, dan mendukung tampilan grafik alarm waktu nyata dalam pemberitahuan pesan.
Proyek ini ditulis dalam bahasa Go dan ada banyak cara untuk menginstal Promotor.
Kloning proyek secara langsung dan buat secara manual:
$ git clone https://github.com/cnych/promoter.git
$ cd promoter
$ go build -a -o promoter cmd/promoter/main.go
$ ./promoter --config.file= < your_file >
Gambar Promotor diunggah ke Docker Hub. Anda dapat mencoba menggunakan perintah berikut untuk memulai layanan:
$ docker run --name promoter -d -p 8080:8080 cnych/promoter:main
Konfigurasi berikut pada dasarnya mencakup konfigurasi yang digunakan oleh Promotor:
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
Di bawah global, Anda dapat mengonfigurasi atribut global, seperti kunci WeChat atau DingTalk perusahaan. Di bawah S3, terdapat konfigurasi penyimpanan objek (Alibaba Cloud OSS juga dapat digunakan) untuk menyimpan gambar yang dihasilkan oleh ikon pemantauan.
receivers
di bawah ini adalah penerima yang dikonfigurasi untuk berbagai pesan. Anda dapat mengonfigurasi WeChat Perusahaan dan DingTalk secara bersamaan dalam satu penerima. Ini mendukung dua format: text
dan markdown
. Misalnya, name
di sini adalah rcv1
penerima Alamat Webhook adalah: http://<promoter-url>/rcv1/send
, yang perlu dikonfigurasi di Webhook AlertManager.
Perlu dicatat bahwa format Markdown Enterprise WeChat tidak mendukung tampilan gambar secara langsung.
Templat default terletak di template/default.tmpl
dan dapat disesuaikan sesuai kebutuhan Anda:
{{ 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 }}