Alertmanager通过命令行标志和配置文件进行配置。命令行标志配置不可变的系统参数,配置文件定义抑制规则、通知路由和通知接收者。
可视化编辑器可以帮助建立路由树。
要查看所有可用的命令行标志,请运行 alertmanager -h
。
Alertmanager可以在运行时重新加载其配置。如果新配置格式不正确,则更改将不会应用,并且会记录错误。(可以使用amtool工具测试alertmanager.yml的语法,该工具默认在alertmanager的源代码包已存在,用法:./amtool check-config alertmanager.yml )
通过发送SIGHUP信号到
alertmanager进程
或使用HTTP POST请求/-/reload endpoint来触发配置重载,例如:curl -XPOST localhost:9093/-/reload (alertmanager服务默认监听9093端口)。
配置文件
要指定加载的配置文件,请使用该--config.file
标志。
./alertmanager --config.file=simple.yml
该文件以YAML格式写入,由以下所述的格式定义。括号表示参数是可选的。对于非列表参数,值设置为指定的默认值。
通用占位符定义如下:
<duration>
:持续时间 ,匹配正则表达式[0-9]+(ms|[smhdwy])
<labelname>
:字符串,匹配正则表达式匹[a-zA-Z_][a-zA-Z0-9_]*
<labelvalue>
:unicode字符串<filepath>
:当前工作目录中的有效路径<boolean>
:布尔值,true
或false
<string>
:常规字符串<secret>
:常规secret字符串,例如密码<tmpl_string>
:使用前已使用模板扩展的字符串<tmpl_secret>
:使用前已使用模板扩展的secret字符串
其他占位符分别指定。
提供的有效示例文件 显示了上下文中的用法。
全局配置指定在所有其他配置上下文中有效的参数。它们还用作其他配置部分的默认设置。
global:
# 默认的SMTP From标头字段。
[ smtp_from: <tmpl_string> ]
#用于发送电子邮件的默认SMTP主机,包括端口号。端口号通常为25,对于基于TLS的SMTP(有时称为STARTTLS),端口号通常为587。
#示例:smtp.example.org:587
[ smtp_smarthost: <string> ]
#标识SMTP服务器的默认主机名。
[ smtp_hello: <string> | default = "localhost" ]
#使用CRAM-MD5,LOGIN和PLAIN的SMTP身份验证。 如果为空,则Alertmanager不会对SMTP服务器进行身份验证。
[ smtp_auth_username: <string> ]
# 使用LOGIN和PLAIN的SMTP身份验证
[ smtp_auth_password: <secret> ]
#使用PLAIN的SMTP身份验证。
[ smtp_auth_identity: <string> ]
# 使用CRAM-MD5的SMTP身份验证。
[ smtp_auth_secret: <secret> ]
#默认的SMTP TLS要求。
#请注意,Go不支持与远程SMTP端点的未加密连接。
[ smtp_require_tls: <bool> | default = true ]
# 用于Slack通知的API URL。
[ 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客户端配置
[ http_config: <http_config> ]
#ResolveTimeout是警报管理器使用的默认值
#不包括EndsAt,经过此时间后,如果尚未更新警报,则可以将警报声明为已解决。
#这对Prometheus的警报没有影响,因为它们始终包含EndsAt。
[ resolve_timeout: <duration> | default = 5m ]
#从中读取自定义通知模板定义的文件。
#最后一个组件可以使用通配符匹配器,例如 '模板/*.tmpl'。
templates:
[ - <filepath> ... ]
# 路由树的根节点。
route: <route>
# 通知接收者列表。
receivers:
- <receiver> ...
# 抑制规则列表。
inhibit_rules:
[ - <inhibit_rule> ... ]
<route>
配置文件中的路由配置部分(route:)定义了路由树中的节点及其子节点。如果未设置,则其可选配置参数将从其父节点继承。
每个警报都会在已配置的顶级route处进入路由树,该顶级路由树必须能匹配所有报警(即没有任何已配置的匹配器)。然后,它遍历子节点。如果continue
设置为false,它将在第一个匹配的子项之后停止。如果continue
在匹配的节点上为true,则警报将继续与后续的同级节点进行匹配。如果警报与节点的任何子节点都不匹配(不匹配的子节点或不存在子节点),则根据当前节点的配置参数来处理警报。
##################### 修正线
[ receiver: <string> ]
#根据group_by传入的标签对报警进行分组,例如,针对cluster=A和alertname=LatencyHigh的多个警报将被分为一个组。
#要按所有可能的标签进行聚合,请使用特殊值'...'作为唯一的标签名称,例如:group_by:['...']
#这样可以有效地完全禁用聚合,按原样传递所有警报。 除非您的警报量非常低或上游通知系统执行自己的分组,否则这不太可能是您想要的。
[ group_by: '[' <labelname>, ... ']' ]
# 报警是否应继续匹配后续的同级节点。
[ continue: <boolean> | default = false ]
# 报警必须满足匹配某些标签才能匹配节点。
match:
[ <labelname>: <labelvalue>, ... ]
# 报警必须满足标签匹配某些正则表达式才能匹配节点。
match_re:
[ <labelname>: <regex>, ... ]
#最初发送一组警报通知的等待时间。 允许等待禁止警报到达或为同一组收集更多初始警报。 (通常0秒到几分钟。)
[ group_wait: <duration> | default = 30s ]
#在发送有关新报警的通知之前要等待多长时间,该通知已添加到已经发送了初始通知的一组警报中。 (通常5m或更多。)
[ group_interval: <duration> | default = 5m ]
#如果已经成功发送报警通知,则等待多长时间才能再次发送通知。 (通常3h或更长时间)。
[ repeat_interval: <duration> | default = 4h ]
# 零个或多个子路由。
routes:
[ - <route> ... ]