玩转prometheus告警 alertmanger(三)之alertmanger定时静默

目录

1. 前言

2. 配置过程

3. 总结


1. 前言

由于一些历史原因,存在一些特定场景,如凌晨3点至7点数据库同步时,会存在同步失败的告警,需要屏蔽此段时间的同步失败告警。

alertmange可以通过静默(Sliences)实现告警屏蔽,但只能选择一段时间,无法实现重复在每天的指定时间段静默告警,那么,如何实现这个功能?

解决思路:

通过脚本调用alertmanager api接口生成静默规则,将脚本定时执行,以实现上述功能需求,具体的做法就是通过crontab定时执行脚本,通过对alertmanager api接口进行调用,创建静默指定告警规则在某个时间段静默的功能。

alertmanager api接口文档参考:https://github.com/prometheus/alertmanager/blob/main/api/v2/openapi.yaml

2. 配置过程

需要在web界面操作,配合F12调试,获取创建sliences后的cURL语句,并改成脚本可用的语句即可

生成sliences

 

创建静默规则这里要注意开始和结束时间,这里以需要静默的时间段为准

 

 

 

获取到的curl命令如下。这一段还需要进行修改

curl "http://192.168.1.99:9093/api/v2/silences" ^
  -H "Accept: */*" ^
  -H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6" ^
  -H "Cache-Control: no-cache" ^
  -H "Connection: keep-alive" ^
  -H "Content-Type: application/json" ^
  -H "Origin: http://192.168.1.99:9093" ^
  -H "Pragma: no-cache" ^
  -H "Referer: http://192.168.1.99:9093/" ^
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.54" ^
  --data-raw "^{^\^"matchers^\^":^[^{^\^"name^\^":^\^"alertname^\^",^\^"value^\^":^\^"^服^务^器_mysql^主^机^内^存^使^用^率^告^警^\^",^\^"isRegex^\^":false,^\^"isEqual^\^":true^},^{^\^"name^\^":^\^"instance^\^",^\^"value^\^":^\^"192.168.1.88:9100^\^",^\^"isRegex^\^":false,^\^"isEqual^\^":true^}^],^\^"startsAt^\^":^\^"2022-10-11T03:21:53.880Z^\^",^\^"endsAt^\^":^\^"2022-10-11T05:21:53.880Z^\^",^\^"createdBy^\^":^\^"11^\^",^\^"comment^\^":^\^"11^\^",^\^"id^\^":null^}" ^
  --compressed ^
  --insecu

修改后的效果如下,这样就能直接在linux下直接使用curl命令Post了

curl "http://192.168.1.99:9093/api/v2/silences" ^
  -H 'Content-Type: application/json' \
  --data "^{^\^"matchers^\^":^[^{^\^"name^\^":^\^"alertname^\^",^\^"value^\^":^\^"^服^务^器_mysql^主^机^内^存^使^用^率^告^警^\^",^\^"isRegex^\^":false,^\^"isEqual^\^":true^},^{^\^"name^\^":^\^"instance^\^",^\^"value^\^":^\^"192.168.1.88:9100^\^",^\^"isRegex^\^":false,^\^"isEqual^\^":true^}^],^\^"startsAt^\^":^\^"2022-10-11T03:21:53.880Z^\^",^\^"endsAt^\^":^\^"2022-10-11T05:21:53.880Z^\^",^\^"createdBy^\^":^\^"11^\^",^\^"comment^\^":^\^"11^\^",^\^"id^\^":null^}" ^
  --compressed ^
  --insecu

然后将命令放到脚本中,配置crontab定时执行,完整脚本如下

# 时间根据需求自行修改。这里仅作参考
# 当天
start_date=`date +%F`
# 明天
end_date=`date +%F --date="+1 day"`
curl "http://192.168.1.99:9093/api/v2/silences" ^
  -H 'Content-Type: application/json' \
  --data "^{^\^"matchers^\^":^[^{^\^"name^\^":^\^"alertname^\^",^\^"value^\^":^\^"^服^务^器_mysql^主^机^内^存^使^用^率^告^警^\^",^\^"isRegex^\^":false,^\^"isEqual^\^":true^},^{^\^"name^\^":^\^"instance^\^",^\^"value^\^":^\^"192.168.1.88:9100^\^",^\^"isRegex^\^":false,^\^"isEqual^\^":true^}^],^\^"startsAt^\^":^\^"'${start_date}'T03:21:53.880Z^\^",^\^"endsAt^\^":^\^"'${end_date}'T05:21:53.880Z^\^",^\^"createdBy^\^":^\^"11^\^",^\^"comment^\^":^\^"11^\^",^\^"id^\^":null^}" ^
  --compressed ^
  --insecu

3. 总结

每个静默规则只能针对一个分组告警类型,所以,如果需要多个告警类型的静默规则,需要按步骤2进行操作后添加到脚本中,临时解决方案就这样了,如果有更好的解决方案,欢迎一起探讨~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值