
GUIDE
导读
在前面的部分中已经简单介绍过在Alertmanager中通过路由(Route)来定义告警的处理方式。路由是一个基于标签匹配的树状匹配结构。根据接收到告警的标签匹配相应的处理方式。这里将详细介绍路由相关的内容。
Alertmanager主要负责对Prometheus产生的告警进行统一处理,因此在Alertmanager配置中一般会包含以下几个主要部分:
全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置,Slack配置等内容; 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等; 告警路由(route):根据标签匹配,确定当前告警应该如何处理; 接收人(receivers):接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用; 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生;
global:[ resolve_timeout: <duration> | default = 5m ][ smtp_from: <tmpl_string> ][ smtp_smarthost: <string> ][ smtp_hello: <string> | default = "localhost" ][ smtp_auth_username: <string> ][ smtp_auth_password: <secret> ][ smtp_auth_identity: <string> ][ smtp_auth_secret: <secret> ][ smtp_require_tls: <bool> | default = true ][ slack_api_url: <secret> ][ victorops_api_key: <secret> ][ victorops_api_url: <string> | default ="https://alert.victorops.com/integrations/generic/20131114/alert/" ][ pagerduty_url: <string> | default = "https://events.pagerduty.com/v2/enqueue"][ opsgenie_api_key: <secret> ][ opsgenie_api_url: <string> | default = "https://api.opsgenie.com/" ][ hipchat_api_url: <string> | default = "https://api.hipchat.com/" ][ hipchat_auth_token: <secret> ][ wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/"][ wechat_api_secret: <secret> ][ wechat_api_corp_id: <string> ][ http_config: <http_config> ]templates:[ - <filepath> ... ]route: <route>receivers:- <receiver> ...inhibit_rules:[ - <inhibit_rule> ... ]


基于标签的告警路由
route: <route>
route:group_by: ['alertname']receiver: 'web.hook'receivers:- name: 'web.hook'webhook_configs:- url: 'http://127.0.0.1:5001/'
[ receiver: <string> ][ group_by: '[' <labelname>, ... ']' ][ continue: <boolean> | default = false ]match:[ <labelname>: <labelvalue>, ... ]match_re:[ <labelname>: <regex>, ... ][ group_wait: <duration> | default = 30s ][ group_interval: <duration> | default = 5m ][ repeat_interval: <duration> | default = 4h ]routes:[ - <route> ... ]
01
路由匹配
每一个告警都会从配置文件中顶级的route进入路由树,需要注意的是顶级的route必须匹配所有告警(即不能有任何的匹配设置match和match_re),每一个路由都可以定义自己的接受人以及匹配规则。默认情况下,告警进入到顶级route后会遍历所有的子节点,直到找到最深的匹配route,并将告警发送到该route定义的receiver中。但如果route中设置continue的值为false,那么告警在匹配到第一个子节点之后就直接停止。如果continue为true,报警则会继续进行后续子节点的匹配。如果当前告警匹配不到任何的子节点,那该告警将会基于当前路由节点的接收器配置方式进行处理。
02
告警分组
route:receiver: 'default-receiver'group_wait: 30sgroup_interval: 5mrepeat_interval: 4hgroup_by: [cluster, alertname]routes:- receiver: 'database-pager'group_wait: 10smatch_re:service: mysql|cassandra- receiver: 'frontend-pager'group_by: [product, environment]match:team: frontend


往/期/回/顾
-End-
「有用就扩散」
「有用就点在看」
更多课程咨询或免费资料领取,扫下方二维码即可!

文章转载自西安川石,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




