Giter VIP home page Giter VIP logo

Comments (33)

Liamlu28 avatar Liamlu28 commented on May 30, 2024 21

贴下今天刚亲测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.

fat8701 avatar fat8701 commented on May 30, 2024 9

你这个警告模板不会,恢复的信息和警告的信息不能分开。

测试一下便分晓

测试发现,如果同一类型的多个告警源, 既有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.

songjiayang avatar songjiayang commented on May 30, 2024 3

@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.

songjiayang avatar songjiayang commented on May 30, 2024
  1. 修改 alertmanger.yml ,指定覆盖的模版文件地址,例如:
templates:
  - 'demo.tmpl'
  1. 在 demo.teml 里面添加自定义的内容,例如
{{ define "wechat.default.message" }}
// 添加你自己想要的内容
{{- end }}

from prometheus_practice.

prodanlabs avatar prodanlabs commented on May 30, 2024

http://www.songjiayang.com/posts/alertmanager-mo-ban-zhong-shi-jian-format
能否分享下wechat.tmpl模板

from prometheus_practice.

songjiayang avatar songjiayang commented on May 30, 2024

@d-peng 如果有定制化的开发需求,需要接触下 go 语言,如果只是一些自定义配置,例如告警消息,可以参考下 go 的 template 模版引擎

from prometheus_practice.

tangxuye avatar tangxuye commented on May 30, 2024

请问,触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }},中的时间是写死的,如果要取实时的值,需要取哪个lable的值?

from prometheus_practice.

ningbingjian1 avatar ningbingjian1 commented on May 30, 2024

您好,用这个模板显示的时间都是UTC时间,能转成本地时间吗

from prometheus_practice.

Liamlu28 avatar Liamlu28 commented on May 30, 2024

StartsAt.Format 可以调用time 包 Local 方法转换成 我们想要的时间:比如
StartsAt.Local 即可

from prometheus_practice.

scdylh avatar scdylh commented on May 30, 2024

你这个警告模板不会,恢复的信息和警告的信息不能分开。

from prometheus_practice.

Liamlu28 avatar Liamlu28 commented on May 30, 2024

你这个警告模板不会,恢复的信息和警告的信息不能分开。

测试一下便分晓

from prometheus_practice.

songjiayang avatar songjiayang commented on May 30, 2024

@ningbingjian1 可以把时间+8小时转化为北京时间,然后打印输出

from prometheus_practice.

shiyiwenv avatar shiyiwenv commented on May 30, 2024

@ningbingjian1 可以把时间+8小时转化为北京时间,然后打印输出

怎样在模板里面加+8 小时呢。 模板是这样的 :故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}

from prometheus_practice.

songjiayang avatar songjiayang commented on May 30, 2024

@shiyiwenv 比较笨一点就是直接把时间加8小时,例如:

{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

from prometheus_practice.

shiyiwenv avatar shiyiwenv commented on May 30, 2024

@shiyiwenv 比较笨一点就是直接把时间加8小时,例如:

{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

按照上面的方式试了一下,go模板语法会报错的。 :( unexpected "(" in operand"

from prometheus_practice.

songjiayang avatar songjiayang commented on May 30, 2024

@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 avatar shiyiwenv commented on May 30, 2024

@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.

ixiaoyi93 avatar ixiaoyi93 commented on May 30, 2024

@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.

zxitedu avatar zxitedu commented on May 30, 2024

@fat8701 您好 我用的钉钉要怎么改呢

from prometheus_practice.

fat8701 avatar fat8701 commented on May 30, 2024

@fat8701 您好 我用的钉钉要怎么改呢

没用钉钉 https://www.jianshu.com/p/f0fae97d9349 供参考 网上相关帖子应该不少

from prometheus_practice.

zxitedu avatar zxitedu commented on May 30, 2024

@fat8701 也就是您上面给的模块 就只是适合WeChat的

from prometheus_practice.

fat8701 avatar fat8701 commented on May 30, 2024

@fat8701 也就是您上面给的模块 就只是适合WeChat的

仅用wechat测试过,邮件应该也ok,钉钉比较特殊吧,需要进行消息格式转换。自己测测吧。

from prometheus_practice.

aukeyits avatar aukeyits commented on May 30, 2024

@fat8701 请问,在alertmanager的receivers段如何调用该模板?

from prometheus_practice.

fat8701 avatar fat8701 commented on May 30, 2024

@fat8701 请问,在alertmanager的receivers段如何调用该模板?

见2楼回复

from prometheus_practice.

aukeyits avatar aukeyits commented on May 30, 2024

@fat8701 如果有多个模板,如何为接收器指定不同的模板名字?

from prometheus_practice.

fat8701 avatar fat8701 commented on May 30, 2024

@fat8701 如果有多个模板,如何为接收器指定不同的模板名字?

API request data as defined by the WeChat API.
[ message: <tmpl_string> | default = '{{ template "wechat.default.message" . }}' ]
和模板里定义的名字对应

from prometheus_practice.

wanghy8166 avatar wanghy8166 commented on May 30, 2024

mark

from prometheus_practice.

arsenalpoll avatar arsenalpoll commented on May 30, 2024

@fat8701
hello 你的这个模板 Firing和Resolved 也会在同一封邮件发送啊

from prometheus_practice.

fat8701 avatar fat8701 commented on May 30, 2024

@fat8701
hello 你的这个模板 Firing和Resolved 也会在同一封邮件发送啊

这个是微信告警,不是邮件;同一类告警(Firing or Resolved)会集中在一条信息中(先列出所有Firing再列出所有Resolved),个人觉得同一类告警分开2条发没必要,当然你也可以按需修改。

from prometheus_practice.

arsenalpoll avatar arsenalpoll commented on May 30, 2024

@fat8701 这样啊 微信和邮件不通用啊。您这个只有微信的模板吗? 对应的邮件模板有没有?
还有一个问题就是 怎么样才能做到 一条告警一封邮件?

from prometheus_practice.

fat8701 avatar fat8701 commented on May 30, 2024

@fat8701 这样啊 微信和邮件不通用啊。您这个只有微信的模板吗? 对应的邮件模板有没有?
还有一个问题就是 怎么样才能做到 一条告警一封邮件?

抱歉,这个模板邮件应该通用,但我没有测试过;邮件我暂时用的官方提供的模板,个人觉得分组告警更好;不清楚能否做到 一条告警一封邮件,go玩得还不溜...

from prometheus_practice.

gongzhao1 avatar gongzhao1 commented on May 30, 2024

你这个警告模板不会,恢复的信息和警告的信息不能分开。

测试一下便分晓

测试发现,如果同一类型的多个告警源, 既有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.

thirdcountry avatar thirdcountry commented on May 30, 2024

贴下今天刚亲测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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.