Prometheus+Altermanager实现钉钉告警

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监控之钉钉告警就完成了。

### 如何配置 Alertmanager 示例教程 #### 配置概述 为了有效管理告警并将其路由到不同的接收者,Alertmanager 提供了一套灵活的配置选项。通过合理配置,能够显著提升团队工作效率和系统可靠性[^1]。 #### 基本配置 在 `prometheus.yml` 文件中的 `alerting` 段落里,在 `alertmanagers` 下指定 Alertmanager 的地址,通常为本地的 9093 端口,这使得 Prometheus 能够向 Alertmanager 发送告警信息[^2]: ```yaml alerting: alertmanagers: - static_configs: - targets: - localhost:9093 ``` #### 接收器配置 接收器用于定义当触发特定条件时应采取的动作。下面是一个简单的例子,展示了如何添加一个名为 `team-email` 的接收器,并设置了 Webhook URL 来处理来自该接收器的通知: ```yaml receivers: - name: 'team-email' email_configs: - to: 'example@example.com' webhook_configs: - url: 'http://webhook.example.com/' ``` #### 自定义模板 利用自定义模板功能可进一步个性化通知的内容格式。可以在 Alertmanager 配置文件中加入如下路径来加载外部模板文件[^3]: ```yaml templates: - '/etc/alertmanager/templates/*.tmpl' ``` 对于更复杂的场景,还可以创建 HTML 或纯文本形式的消息体,以便更好地适应不同类型的通信渠道需求。 #### 高级特性——告警路由与分组策略 告警路由允许基于标签匹配规则将事件分配给相应的接收器;而分组则有助于减少重复提醒次数以及优化用户体验。例如,这里展示了一个基本的路由设定方式: ```yaml route: group_by: ['job'] routes: - match: severity: critical receiver: 'critical-team-pagerduty' - match_re: service: ^(foo|bar)$ receiver: 'devops-slack-channel' ``` 此部分还支持更多参数调整,比如设置等待时间(`group_wait`)、间隔(`repeat_interval`)等属性以满足实际业务逻辑的要求。 #### 整合第三方服务实例 如果希望集成额外的服务作为告警目标之一,则可以通过扩展现有的接收器列表实现这一目的。以下片段说明了怎样把名为 `alertmanager2es` 的插件接入进来[^4]: ```yaml receivers: - name: 'alertmanager2es' webhook_configs: - url: 'https://your-alertmanager2es-url/webhook' route: ... - receiver: 'alertmanager2es' continue: true ``` 上述配置确保所有未被其他分支捕获的告警都将转发至 `alertmanager2es` 进行后续处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值