IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
本文最后更新于:2024年7月25日 下午
上一篇文章
IoT 边缘集群基于 Kubernetes Events 的告警通知实现
目标
- 告警恢复通知 - 经过评估无法实现
- 原因:告警和恢复是单独完全不相关的事件,告警是
Warning级别,恢复是Normal级别,要开启恢复,就会导致所有NormalEvents 都会被发送,这个数量是很恐怖的;而且,除非特别有经验和耐心,否则无法看出哪条Normal对应的是 告警的恢复.
- 原因:告警和恢复是单独完全不相关的事件,告警是
- 未恢复进行持续告警 - 默认就带的能力,无需额外配置.
- 告警内容显示资源名称,比如节点和 pod 名称
- 可以设置屏蔽特定的节点和工作负载并可以动态调整
- 比如,集群
001中的节点worker-1做计划性维护,期间停止监控,维护完成后重新开始监控。
- 比如,集群
配置
告警内容显示资源名称
典型的几类 events:
1 | |
1 | |
1 | |
1 | |
1 | |
我们可以把更多的字段加入到告警信息中,其中就包括:
- 节点:
{{ Source.Host }} - Pod:
{{ .InvolvedObject.Name }}
综上,修改后的 event-exporter-cfg yaml 如下:
1 | |
屏蔽特定的节点和工作负载
比如,集群
001中的节点worker-1做计划性维护,期间停止监控,维护完成后重新开始监控。
继续修改 event-exporter-cfg yaml 如下:
1 | |
默认的 drop 规则为: - type: "Normal", 即不对 Normal 级别进行告警;
现在加入以下规则:
1 | |
... host: "worker-1": 不对节点worker-1做告警;... namespace: "cattle-monitoring-system": 不对 NameSpace:cattle-monitoring-system做告警;... name: "*emqx*": 不对 name (name 往往是 pod name) 包含emqx的做告警kind: "Pod|Deployment|ReplicaSet": 不对PodDeploymentReplicaSet做告警 (也就是不关注应用,组件相关的告警)...version: "dev": 不对label含有version: "dev"的做告警 (可以通过它屏蔽特定的应用的告警)
最终效果
如下图:


🎉🎉🎉
IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
https://ewhisper.cn/posts/31024/