需要将prometheus的报警规则存放在/etc/rules里面的yml文件中 同时prometheus的yaml文件需要开启alertmanager,通过alertmanager触发告警到各个平台,例如钉钉。
---
rules.yml文件
groups:
- name: api-server /报警名
rules:
- alert: api-server_cnt /报警规则名称
for: 3m /持续时间
expr: count(up{job="kubernetes-apiservers"}) > 2 /报警语法
annotations: /报警的内容
summary: "api-server大于2"
values: "{{ $value }}"
labels: /打标签
severity: error
classification: lyz
workline: xdrive
- alert: InstanceGone
for: 10s
expr: absent(up{job="node"})
annotations:
summary: "host {{ $labels.instance }} is no longer reporting"
labels:
severity: critical
classification: lyz2
workline: xdrive
---
接着需要在alertmanager的配置文件中更新路由和接收者:
这里定义默认接收者为lyz,同时routes使用分支路由,匹配标签为serverity为critical的告警规则,发送给lyz2
---
最后需要在dingtalk组件中定义你的接收者发送地址,这个百度即可解决。
---
重启prometheus
---
如果成功,则可以在页面中看到
---
一旦触发警告,则可以在alertmanager控制台中看到
注意,这里silence可以配置静默时间,可永久或暂停告警。
---
接着可以在钉钉等看到告警通知
---
告警成功。