相关文章推荐
睿智的柿子  ·  prometheus.yml ...·  1 月前    · 
重感情的金鱼  ·  Azure 运营商 5G ...·  3 月前    · 
重感情的饭卡  ·  监控软件 Zabbix 和 ...·  3 月前    · 
踏实的茄子  ·  Prometheus+Grafana ...·  4 月前    · 
不羁的书签  ·  Simpleperf介绍_zhuyong00 ...·  1 年前    · 

prometheus配置告警分发到不同的钉钉群 说明了将同一条告警分发到多个钉钉群的配置方式。下面提供一个我平常使用的一个钉钉告警的模板,模板最初的原型确实记不清从哪找到了,花了不少时间,后来我自己做一些适当调整,就成了现在主要使用的形式。

钉钉告警组件

使用的 prometheus-webhook-dingtalk

如果需要可视化自定义模板,可以在启动dingtalk的时候,设置参数:--web.enable-ui,如下:

./prometheus-webhook-dingtalk  --web.enable-ui

这样后,可以通过如下路径: http://localhost:8060/ui 预览,如下,预览便是我要提供的模板样式:

模板的定义主要使用go template: https://golang.org/pkg/text/template/ , 可以根据情况自定义

模板配置代码

{{ 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" }}{{ $alertURL := "http://localhost:9093" }} {{- $alertURL -}}/#/alerts?receiver={{ .Receiver }}&tmp={{ .ExternalURL }}{{ end }}
{{ define "__text_alert_list" }}{{ range . }}
**Labels**
{{ range .Labels.SortedPairs }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}
**Annotations**
{{ range .Annotations.SortedPairs }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}
**Source:** [{{ .GeneratorURL }}]({{ .GeneratorURL }})
{{ end }}{{ end }}
{{/* Firing */}}
{{ define "default.__text_alert_list" }}{{ range . }}
**触发时间:** {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
**摘要:** {{ .Annotations.summary }}
**描述:** {{ .Annotations.description }}
**监控:** [grafana](http://localhost:3000)
**详情:**
{{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}{{ end }}
{{ end }}{{ end }}
{{/* Resolved */}}
{{ define "default.__text_resolved_list" }}{{ range . }}
**触发时间:** {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
**解除时间:** {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
**摘要:** {{ .Annotations.summary }}
**监控:** [grafana](http://localhost:3000)
**详情:**
{{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}{{ end }}
{{ end }}{{ end }}
{{/* Default */}}
{{ define "default.title" }}{{ template "__subject" . }}{{ end }}
{{ define "default.content" }}#### \[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}\] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
{{ if gt (len .Alerts.Firing) 0 -}}
![Firing-img](https://is3-ssl.mzstatic.com/image/thumb/Purple20/v4/e0/23/cf/e023cf56-0623-0cdf-afce-97ae90eabfda/mzl.uplmrpgi.png/320x0w.jpg)
**告警通知**
{{ template "default.__text_alert_list" .Alerts.Firing }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
![Resolved-img](https://is3-ssl.mzstatic.com/image/thumb/Purple18/v4/41/72/99/4172990a-f666-badf-9726-6204a320c16e/mzl.dypdixoy.png/320x0w.png)
**告警解除**
{{ template "default.__text_resolved_list" .Alerts.Resolved }}
{{- end }}
{{- end }}
{{/* Legacy */}}
{{ define "legacy.title" }}{{ template "__subject" . }}{{ end }}
{{ define "legacy.content" }}#### \[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}\] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
{{ template "__text_alert_list" .Alerts.Firing }}
{{- end }}
{{/* Following names for compatibility */}}
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}

直接复制粘贴即可拿来用,只需要简单根据自己场景调整上面的几个告警或监控的url即可。

模板中告警url的问题

点击告警的url应当跳转告警管理页面,允许静默告警,有些告警可以暂时忽视,不能让它一直在告警。告警管理页面如下:

但实际使用的时候发现告警url不对,跳到一个不正确的地址。我的解决方案,指定alertURL,忽视ExternalURL。

ExternalURL相关使用可以看里做参考: https://github.com/timonwong/prometheus-webhook-dingtalk/issues/27

我的实现方案是因为我能操作只有这个dingtalk或alertmanager,prometheus是和别人集成,不方便重启配置,我就想了这样一个方案,仅供参考。

前言在prometheus配置告警分发到不同的钉钉群说明了将同一条告警分发到多个钉钉群的配置方式。下面提供一个我平常使用的一个钉钉告警的模板,模板最初的原型确实记不清从哪找到了,花了不少时间,后来我自己做一些适当调整,就成了现在主要使用的形式。钉钉告警组件使用的prometheus-webhook-dingtalk模板配置如果需要可视化自定义模板,可以在启动dingtalk的时候,设置参数:--web.enable-ui,如下:./prometheus-webhook-dingta 本次安装使用我们自建的 prometheus 用户启动服务,用户和用户组的创建不在赘述。 使用二进制包部署AlertManager ​Alertmanager最新版本的下载地址可以从Prometheus官方网站https://prometheus.io/download/获取 tar xvf alertmanager-0.23.0.linux-amd64.tar.gz -C /soft cd /soft mv alertman $/opt/prometheus/server/ding/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk -h usage: prometheus-webhook-dingtalk [<flags>]
之前公司zabbix一直使用的是微信企业号 告警 ,有时候接口不稳定,报错时而不正常。便在网上查找 钉钉 企业号 告警 的配置内容。 与微信 告警 机制类似,先注册 一个 企业号,企业号提供 一个 接口,zabbix通过接口将 告警 信息发送至json格式文本消息到微信或 钉钉 钉钉 脚本及方法提供的大神地址:https://www.qiansw.com/golang-zabbix-alter-to-dingding.htm...
// 钉钉 机器人Webhook地址 $webhook = 'https://oapi.dingtalk.com/robot/send?access_token=your_access_token'; // 消息内容 $message = array( 'msgtype' => 'text', 'text' => array( 'content' => '这是一条来自PHP开发的 钉钉 机器人消息' // 发送请求 $options = array( 'http' => array( 'header' => "Content-type: application/json\r\n", 'method' => 'POST', 'content' => json_encode($message), $context = stream_context_create($options); $result = file_get_contents($webhook, false, $context); 在上面的示例中,我们首先定义了 钉钉 机器人的Webhook地址和要发送的消息内容。消息内容是 一个 关联数组,其中包含消息类型和消息文本的内容。然后,我们将消息内容转换为JSON格式,并使用PHP的file_get_contents()函数发送HTTP POST请求。 请注意,这只是 一个 简单的示例。在实际使用中,您可能需要添加更多的消息类型和属性,例如链接、Markdown格式等。同时,您可能还需要添加错误处理和安全性措施,以确保消息发送成功并避免潜在的攻击。