alertmanager 分组,抑制, 静默
分组
概述
分组将类似性质的警报分类为单个通知。当许多系统同时发生故障并且可能同时触发数百到数千个警报时,这在较大的中断期间尤其有用。
示例:当发生网络分区时,集群中正在运行数十个或数百个服务实例。您的一半服务实例无法再访问数据库。Prometheus 中的警报规则被配置为在每个服务实例无法与数据库通信时发送警报。因此,数百个警报被发送到 Alertmanager。
作为用户,您只想获得一个页面,同时仍然能够准确查看哪些服务实例受到影响。因此,可以将 Alertmanager 配置为按集群和警报名称对警报进行分组,以便它发送单个紧凑通知。
警报分组、分组通知的时间以及这些通知的接收者由配置文件中的路由树进行配置。
在 route 段中进行配置。
配置参数
route: group_by: ['alertname', 'app'] # 分组时使用的标签,默认情况下,所有的告警都组织在一起,而一旦指定分组标签,则Alertmanager将按这些标签进行分组; group_wait: 30s # 发出一组告警通知的初始等待时长;允许等待一个抑制告警到达或收集属于同一组的更多初始告警,通常是0到数分钟; group_interval: 40s # 发送关于新告警的消息之前,需要等待多久;新告警将被添加到已经发送了初始通知的告警组中;一般在5分钟或以上; repeat_interval: 1m # 成功发送了告警后再次发送告警信息需要等待的时长,一般至少为3个小时;
配置示例
route: group_by: ['alertname', 'app'] group_wait: 30s group_interval: 40s repeat_interval: 1m
alertmanage前端查看
抑制
抑制是一个概念,如果某些其他警报已经触发,则抑制某些警报的通知。
示例:发出警报,通知无法访问整个集群。如果该特定警报正在触发,Alertmanager 可以配置为静音与该集群相关的所有其他警报。这可以防止收到与实际问题无关的数百或数千个触发警报的通知。
禁止通过 Alertmanager 的配置文件进行配置。
当存在与另一组匹配器匹配的警报(源)时,禁止匹配的规则进行告警(静默)。对于equal
列表中的标签名称,目标警报和源警报都必须具有相同的标签值。
从语义上讲,缺少标签和带有空值的标签是一回事。因此,如果equal
源警报和目标警报中都缺少 中列出的所有标签名称,则将应用禁止规则。
配置参数
# DEPRECATED: Use target_matchers below. # Matchers that have to be fulfilled in the alerts to be muted. # 目标报警字符串匹配 target_match: [ <labelname>: <labelvalue>, ... ] # DEPRECATED: Use target_matchers below. # 目标报警正则匹配 target_match_re: [ <labelname>: <regex>, ... ] # A list of matchers that have to be fulfilled by the target # alerts to be muted. # 目标报警的匹配列表 target_matchers: [ - <matcher> ... ] # DEPRECATED: Use source_matchers below. # Matchers for which one or more alerts have to exist for the # inhibition to take effect. # 源报警字符串匹配 source_match: [ <labelname>: <labelvalue>, ... ] # DEPRECATED: Use source_matchers below. # 源报警正则匹配器 source_match_re: [ <labelname>: <regex>, ... ] # A list of matchers for which one or more alerts have # to exist for the inhibition to take effect. # 源报警列表匹配器 source_matchers: [ - <matcher> ... ] # Labels that must have an equal value in the source and target # alert for the inhibition to take effect. # 匹配标签 [ equal: '[' <labelname>, ... ']' ]
配置示例
alertmanage配置示例
inhibit_rules: - source_match: severity: 'critical' target_match_re: severity: '.*' equal: ['instance']
prometheus alert rule 配置示例
- alert: 主机内存不足 expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 99 for: 10s labels: severity: "critical" annotations: summary: 主机内存不足 (主机地址 {{ $labels.instance }}) description: "主机内存已满 当前内存小于百分之70\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" - alert: warning 测试内存 expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 98 for: 10s labels: severity: "warning" annotations: summary: warning 主机内存不足 (主机地址 {{ $labels.instance }}) description: "主机内存已满 当前内存小于百分之70\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
Prometheus 查看触发的告警信息
查看告警邮件
邮件中可以看到没有标题为 (warning 测试内存)的告警邮件, 抑制生效。
静默
静音是在给定时间内简单地将警报静音的直接方法。静音是基于匹配器配置的,就像路由树一样。检查传入警报是否与活动静默的所有相等或正则表达式匹配器匹配。如果他们这样做,则不会发送该警报的通知。
静音是在 Alertmanager 的 Web 界面中配置的。
静默可以在告警的时候要恢复服务器的时候避免重复告警, 或者说系统维护的时候也可以进行设置。
作者:闫世成
出处:http://cnblogs.com/yanshicheng