之前用 Python 实现了一个非常简陋的报警表 AlertManager 的钉钉接收器,一直想在钉钉的通知消息通知中将当前报警图表也展示出来,这样显然对用户来说更加友好。中展之前想的示监思路是通过爬虫的方式去 Prometheus 页面将 Graph 图形截图保存下来,该方式理论上确实是香港云服务器控图可行的,但是报警表这种方式不稳定因素较多,而且会占用大量的通知资源。 今天换了另外一种方式来实现,中展直接去绘制渲染报警图表,示监然后上传到对象存储中保存起来,控图在钉钉中就可以直接展示了,云南idc服务商报警表Promoter 就是通知这个方案的一个实现,支持在消息通知中展示实时报警图表,中展效果图如下所示: 目前是示监将报警数据渲染成图片后上传到 S3 对象存储,所以需要配置一个对象存储(阿里云 OSS 也可以),控图此外消息通知展示样式支持模板定制,该功能参考自项目 https://github.dev/timonwong/prometheus-webhook-dingtalk。 默认模板位于 template/default.tmpl,站群服务器可以根据自己需求定制: { { 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 "__alertmanagerURL" }}{ { .ExternalURL }}/#/alerts?receiver={ { .Receiver }}{ { end }} { { define "default.__text_alert_list" }}{ { range . }} ### { { .Annotations.summary }} **详情:** { { .Annotations.description }} { { range .Images }} **条件:** `{ { .Title }}`