Comments (33)
贴下今天刚亲测OK的。。。。
{{ define "wechat.default.message" }}
{{ if gt (len .Alerts.Firing) 0 -}}
Alerts Firing:
{{ range .Alerts }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{- end }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
Alerts Resolved:
{{ range .Alerts }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
恢复时间: {{ .EndsAt.Format "2006-01-02 15:04:05" }}
{{- end }}
{{- end }}
告警链接:
{{ template "__alertmanagerURL" . }}
{{- end }}
from prometheus_practice.
你这个警告模板不会,恢复的信息和警告的信息不能分开。
测试一下便分晓
测试发现,如果同一类型的多个告警源, 既有firing也有resolved时,也会一同发送。参考官方模板,写成如下格式感觉更好:
{{- define "_alert_list" -}}
{{- range .Alerts.Firing -}}
--------
告警类型:{{ .Labels.alertname }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{ end -}}
{{- end -}}
{{- define "_resolve_list" -}}
{{- range .Alerts.Resolved -}}
************
告警类型:{{ .Labels.alertname }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
恢复时间: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{ end -}}
{{- end -}}
{{- define "wechat.dcos.message" -}}
{{- if and (gt (len .Alerts.Firing) 0) (gt (len .Alerts.Resolved) 0) -}}
Alerts Firing:{{.Alerts.Firing | len}}
Alerts Resolved:{{len .Alerts.Resolved}}
{{ template "_alert_list" . }}
{{ template "_resolve_list" . }}
{{- else -}}
{{- if gt (len .Alerts.Firing) 0 -}}
Alerts Firing:{{.Alerts.Firing | len}}
{{ template "_alert_list" . }}
{{- end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}
Alerts Resolved:{{len .Alerts.Resolved}}
{{ template "_resolve_list" . }}
{{- end -}}
{{- end -}}
{{- end -}}
from prometheus_practice.
@d-peng 告警模版可以参考
{{ define "wechat.default.message" }}
{{ range .Alerts }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{ end }}
{{ end }}
from prometheus_practice.
- 修改
alertmanger.yml
,指定覆盖的模版文件地址,例如:
templates:
- 'demo.tmpl'
- 在 demo.teml 里面添加自定义的内容,例如
{{ define "wechat.default.message" }}
// 添加你自己想要的内容
{{- end }}
from prometheus_practice.
http://www.songjiayang.com/posts/alertmanager-mo-ban-zhong-shi-jian-format
能否分享下wechat.tmpl模板
from prometheus_practice.
@d-peng 如果有定制化的开发需求,需要接触下 go 语言,如果只是一些自定义配置,例如告警消息,可以参考下 go 的 template 模版引擎
from prometheus_practice.
请问,触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }},中的时间是写死的,如果要取实时的值,需要取哪个lable的值?
from prometheus_practice.
您好,用这个模板显示的时间都是UTC时间,能转成本地时间吗
from prometheus_practice.
StartsAt.Format 可以调用time 包 Local 方法转换成 我们想要的时间:比如
StartsAt.Local 即可
from prometheus_practice.
你这个警告模板不会,恢复的信息和警告的信息不能分开。
from prometheus_practice.
你这个警告模板不会,恢复的信息和警告的信息不能分开。
测试一下便分晓
from prometheus_practice.
@ningbingjian1 可以把时间+8小时转化为北京时间,然后打印输出
from prometheus_practice.
@ningbingjian1 可以把时间+8小时转化为北京时间,然后打印输出
怎样在模板里面加+8 小时呢。 模板是这样的 :故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
from prometheus_practice.
@shiyiwenv 比较笨一点就是直接把时间加8小时,例如:
{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
from prometheus_practice.
@shiyiwenv 比较笨一点就是直接把时间加8小时,例如:
{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
按照上面的方式试了一下,go模板语法会报错的。 :( unexpected "(" in operand"
from prometheus_practice.
@shiyiwenv 比较笨一点就是直接把时间加8小时,例如:
{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
按照上面的方式试了一下,go模板语法会报错的。 :( unexpected "(" in operand"
你用的 Alertmanager 版本是多少,我直接测试的 golang 代码是可以使用的,比如 https://play.golang.org/p/kORApsIIMzj
from prometheus_practice.
@shiyiwenv 比较笨一点就是直接把时间加8小时,例如:
{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
按照上面的方式试了一下,go模板语法会报错的。 :( unexpected "(" in operand"
你用的 Alertmanager 版本是多少,我直接测试的 golang 代码是可以使用的,比如 https://play.golang.org/p/kORApsIIMzj
我的alertmanager 是 0.14.0 . 可能gotemplate 不能这样写吗? 我不太熟悉gotemplate 。
from prometheus_practice.
@imluyuan 模板可以用,但是很容易多条告警是通过一条消息发送出来的。
告警恢复:
告警主题: 在 kube-etcd 集群中出现节点故障
告警类型: TargetDown
命名空间: kube-system
故障主机: 192.168.112.216:2379
告警级别: warning
触发时间: 2019-04-12 07:17:02
恢复时间: 2019-04-12 07:19:02
告警主题: 在 kube-etcd 集群中出现节点故障
告警类型: TargetDown
命名空间: kube-system
故障主机: 192.168.112.217:2379
告警级别: warning
触发时间: 2019-04-12 07:22:02
恢复时间: 2019-04-12 07:35:02
告警链接:
http://dev.alertmanager.com/#/alerts?receiver=wechat
这种情况该怎么去解决呢?
from prometheus_practice.
@fat8701 您好 我用的钉钉要怎么改呢
from prometheus_practice.
@fat8701 您好 我用的钉钉要怎么改呢
没用钉钉 https://www.jianshu.com/p/f0fae97d9349 供参考 网上相关帖子应该不少
from prometheus_practice.
@fat8701 也就是您上面给的模块 就只是适合WeChat的
from prometheus_practice.
@fat8701 也就是您上面给的模块 就只是适合WeChat的
仅用wechat测试过,邮件应该也ok,钉钉比较特殊吧,需要进行消息格式转换。自己测测吧。
from prometheus_practice.
@fat8701 请问,在alertmanager的receivers段如何调用该模板?
from prometheus_practice.
@fat8701 请问,在alertmanager的receivers段如何调用该模板?
见2楼回复
from prometheus_practice.
@fat8701 如果有多个模板,如何为接收器指定不同的模板名字?
from prometheus_practice.
@fat8701 如果有多个模板,如何为接收器指定不同的模板名字?
API request data as defined by the WeChat API.
[ message: <tmpl_string> | default = '{{ template "wechat.default.message" . }}' ]
和模板里定义的名字对应
from prometheus_practice.
mark
from prometheus_practice.
@fat8701
hello 你的这个模板 Firing和Resolved 也会在同一封邮件发送啊
from prometheus_practice.
@fat8701
hello 你的这个模板 Firing和Resolved 也会在同一封邮件发送啊
这个是微信告警,不是邮件;同一类告警(Firing or Resolved)会集中在一条信息中(先列出所有Firing再列出所有Resolved),个人觉得同一类告警分开2条发没必要,当然你也可以按需修改。
from prometheus_practice.
@fat8701 这样啊 微信和邮件不通用啊。您这个只有微信的模板吗? 对应的邮件模板有没有?
还有一个问题就是 怎么样才能做到 一条告警一封邮件?
from prometheus_practice.
@fat8701 这样啊 微信和邮件不通用啊。您这个只有微信的模板吗? 对应的邮件模板有没有?
还有一个问题就是 怎么样才能做到 一条告警一封邮件?
抱歉,这个模板邮件应该通用,但我没有测试过;邮件我暂时用的官方提供的模板,个人觉得分组告警更好;不清楚能否做到 一条告警一封邮件,go玩得还不溜...
from prometheus_practice.
你这个警告模板不会,恢复的信息和警告的信息不能分开。
测试一下便分晓
测试发现,如果同一类型的多个告警源, 既有firing也有resolved时,也会一同发送。参考官方模板,写成如下格式感觉更好:
{{- define "_alert_list" -}} {{- range .Alerts.Firing -}} -------- 告警类型:{{ .Labels.alertname }} 告警主题: {{ .Annotations.summary }} 告警详情: {{ .Annotations.description }} 触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{ end -}} {{- end -}} {{- define "_resolve_list" -}} {{- range .Alerts.Resolved -}} ************ 告警类型:{{ .Labels.alertname }} 告警主题: {{ .Annotations.summary }} 告警详情: {{ .Annotations.description }} 触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} 恢复时间: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{ end -}} {{- end -}} {{- define "wechat.dcos.message" -}} {{- if and (gt (len .Alerts.Firing) 0) (gt (len .Alerts.Resolved) 0) -}} Alerts Firing:{{.Alerts.Firing | len}} Alerts Resolved:{{len .Alerts.Resolved}} {{ template "_alert_list" . }} {{ template "_resolve_list" . }} {{- else -}} {{- if gt (len .Alerts.Firing) 0 -}} Alerts Firing:{{.Alerts.Firing | len}} {{ template "_alert_list" . }} {{- end -}} {{- if gt (len .Alerts.Resolved) 0 -}} Alerts Resolved:{{len .Alerts.Resolved}} {{ template "_resolve_list" . }} {{- end -}} {{- end -}} {{- end -}}
alertmanager v0.19.0测试后,时区更改时有效的, 谢谢!
from prometheus_practice.
贴下今天刚亲测OK的。。。。
{{ define "wechat.default.message" }}
{{ if gt (len .Alerts.Firing) 0 -}}
Alerts Firing:
{{ range .Alerts }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{- end }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
Alerts Resolved:
{{ range .Alerts }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
恢复时间: {{ .EndsAt.Format "2006-01-02 15:04:05" }}
{{- end }}
{{- end }}
告警链接:
{{ template "__alertmanagerURL" . }}
{{- end }}
你这个警告模板不会,恢复的信息和警告的信息不能分开。
测试一下便分晓
测试发现,如果同一类型的多个告警源, 既有firing也有resolved时,也会一同发送。参考官方模板,写成如下格式感觉更好:
{{- define "_alert_list" -}} {{- range .Alerts.Firing -}} -------- 告警类型:{{ .Labels.alertname }} 告警主题: {{ .Annotations.summary }} 告警详情: {{ .Annotations.description }} 触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{ end -}} {{- end -}} {{- define "_resolve_list" -}} {{- range .Alerts.Resolved -}} ************ 告警类型:{{ .Labels.alertname }} 告警主题: {{ .Annotations.summary }} 告警详情: {{ .Annotations.description }} 触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} 恢复时间: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{ end -}} {{- end -}} {{- define "wechat.dcos.message" -}} {{- if and (gt (len .Alerts.Firing) 0) (gt (len .Alerts.Resolved) 0) -}} Alerts Firing:{{.Alerts.Firing | len}} Alerts Resolved:{{len .Alerts.Resolved}} {{ template "_alert_list" . }} {{ template "_resolve_list" . }} {{- else -}} {{- if gt (len .Alerts.Firing) 0 -}} Alerts Firing:{{.Alerts.Firing | len}} {{ template "_alert_list" . }} {{- end -}} {{- if gt (len .Alerts.Resolved) 0 -}} Alerts Resolved:{{len .Alerts.Resolved}} {{ template "_resolve_list" . }} {{- end -}} {{- end -}} {{- end -}}
你这模板,告警内容交叉了
from prometheus_practice.
Related Issues (8)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from prometheus_practice.