一、告警模板
alertmanager是可以自定义告警模板的。
注意钉钉需要部署prometheus-webhook-dingtalk,这个也是支持模板的,但是模板要写在prometheus-webhook-dingtalk里,而不是alertmanager
项目链接https://github.com/timonwong/prometheus-webhook-dingtalk
通过配置templates参数,指定模板位置。详细可以看我上一篇文章
下面是一个模板示例(网上copy的):
vim /etc/alertmanager/template/wechat.tmpl{ {- define "wechat.tmpl" }}
{ {- range $i, $alert := .Alerts.Firing -}}
[报警项]:{ { index $alert.Labels "alertname" }}
[实例]:{ { index $alert.Labels "instance" }}
[job]:{ { index $alert.Labels "job" }}
[报警内容]:{ { index $alert.Annotations "summary" }}
[开始时间]:{ { $alert.StartsAt.Format "2006-01-02 15:04:05" }}
====================
{ {- end }}
{ {- end }}define: 定义模板名称
range: 循环遍历
index: 通过key取值
二、数据结构介绍
1.Data.Receiver: 接收器的名称
.Status: 如果存在告警,则为firing,否则resolved(恢复)。
.Alerts: 所有告警对象(alert对象)的列表。(另外他还提供了两个函数用于过滤告警和恢复列表Alerts.Firing:代表告警列表,Alerts.Resolved:代表恢复列表),告警对象的数据结构可以看下面alert部分
.GroupLabels: 告警的分组标签(没猜错应该是对应配置文件的group_by)
.CommonLabels: 所有告警共有的标签
.CommonAnnotations: 所有告警共有的注解
.ExternalURL: 告警对应的alertmanager链接地址
2.Alert:
看这个之前可以先了解上面的AlertsStatus: 当前这一条报警的状态。firing(告警)或resolved(恢复)
Labels: 当前这一条报警的标签
Annotations: 当前这一条报警的注解
StartsAt: 当前这一条报警的开始时间
EndsAt: 当前这一条报警的结束时间
GeneratorURL: 告警对应的alertmanager链接地址
3. kv数据的一些内置方法
kv数据相当于python里的字典,在模板中提供了一些方法可以操作kv数据
SortedPairs: 排序
Remove: 删除一个key
Names: 返回标签集中标签名的名称列表。
Values: 返回标签集中标签名的值列表。
4.go模板常用内置