Prometheus+Altermanager实现钉钉告警

发布于:2024-06-10 ⋅ 阅读:(379) ⋅ 点赞:(0)

Prometheus+Altermanager实现钉钉告警

Prometheus和Altermanager的安装这里就不赘述了,我之前的文章有写到
不记得的小伙伴可以去看看Prometheus和Altermanager的安装使用

直接开始上操作
下载钉钉并打开,先创建一个接收告警信息的钉钉群
在这里插入图片描述
添加一个自定义的钉钉机器人,为了方便测试,都默认就好了,不用选其它配置
将webhook复制下来,等下要通过这个webhook来发送钉钉消息
在这里插入图片描述

在Altermanager告警机器下载钉钉告警插件地址

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

我这里选择解压到/usr/local目录下

tar -xvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /usr/local

修改目录名,显得短一点

mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 prometheus-webhook-dingtalk

然后进入钉钉告警插件目录,将模板配置文件复制一份

cd /usr/local/prometheus-webhook-dingtalk
cp config.example.yml config.yml

修改配置文件,这里主要是配置告警方式,其它没用的可以注释掉,将刚才复制webhook替换成自己的

vim config.yml

在这里插入图片描述

然后修改告警模板,这个模板可以根据自己的需求进行设置

vim contrib/dingtalk.tmpl
{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}
 
 
{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
 
**告警名称**: {{ index .Annotations "title" }} 
 
**告警级别**: {{ .Labels.severity }} 
 
**告警主机**: {{ .Labels.instance }} 
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
 
**告警名称**: {{ index .Annotations "title" }}
 
**告警级别**: {{ .Labels.severity }}
 
**告警主机**: {{ .Labels.instance }}
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
 
**恢复时间**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
 
{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}
 
{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**====侦测到{{ .Alerts.Firing | len  }}个故障====**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}
 
{{ if gt (len .Alerts.Resolved) 0 }}
**====恢复{{ .Alerts.Resolved | len  }}个故障====**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}
 
 
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

模板设置好后就可以启动了,由于测试我就直接启动了
想保持进程一直运行可以用nohup或者写成服务,根据自己的需要选择

./prometheus-webhook-dingtalk --config.file=config.example.yml >dingtalk.log 2>&1 &

可以执行命令查看端口启动情况,默认使用 8060 端口

netstat -ntlp|grep 8060

接下来到alertmanager的配置

修改alertmanager配置文件,添加钉钉告警方式
大家根据自己alertmanager安装的目录来,我自己是安装在/opt目录下的

vim /opt/alertmanager-0.26.0/alertmanager.yml

在这里插入图片描述

修改好配置以后重新加载alertmanager的配置

curl -lv -X POST http://192.168.121.161:9093/-/reload

到这里配置就结束了,然后现在去实验检测结果

将Prometheus监控的服务器关闭一台,模拟服务器挂掉的情况
在这里插入图片描述

可以看到Prometheus已经发送告警信息

在这里插入图片描述

然后查看alertmanager的告警接收情况,可以看到告警已经产生

在这里插入图片描述
可以看到钉钉群也已经接收到告警信息
在这里插入图片描述
到这里Prometheus监控之钉钉告警就完成了。


网站公告

今日签到

点亮在社区的每一天
去签到