prometheus学习系列十: Prometheus AlertManager配置文件说明
官方提供很多receviers的配置格式, 详细的参考官方文档: 2024-08-23 08:34:13 原文
alertmanager配置文件说明
alertmanager是通过命令行标记和配置文件配置的,命令行标记配置不可变的系统参数,配置文件定义抑制规则、通知路由和通知接收器。可以通过官方提供的routing tree editor 查看配置的路由树详细信息。
默认配置文件如下
[root@node00 ~]# cd /usr/local/prometheus/alertmanager/
[root@node00 alertmanager]# cat alertmanager.yml.default
global:
resolve_timeout: 5m route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
这个默认配置文件时通过一个webhook作为接受者,alertmanager会在报警的时候给这个webhook地址发送一个post请求,提交报警信息, 由webhook内部完成消息发送。 下面的inhibit_rules配置一个抑制规则,就是critical级别的规则抑制warning级别的报警。
global配置
- resolve_timeout: 这个解释有点绕,简单说就是在报警恢复的时候不是立马发送的,在接下来的这个时间内,如果没有此报警信息触发,才发送报警恢复消息。 默认值为5m。
- smtp_from: 发件人邮箱地址。
- smtp_smarthost: 发件人对应邮件提供商的smtp地址。
- smtp_auth_username: 发件人的登陆用户名,默认和发件人地址一致。
- smtp_auth_password: 发件人的登陆密码,有时候是授权码。
- smtp_require_tls: 是否需要tls协议。默认是true。
- wechart_api_url: 微信api地址。
- wechart_api_secret: 密码
- wechat_api_corp_id: corp id信息。
templates配置
模板用于控制我们发送的消息格式控制和内容组织的,我们可以自定义一个模板, 模板中引用alertmanager提供的一些内置变量,最终完成消息的渲染。
样例如下:
# alertmanager配置文件
templates:
- '/usr/local/prometheus/alertmanager/templates/myorg.tmpl' # cat /usr/local/prometheus/alertmanager/templates/myorg.tmpl
{{ define "slack.myorg.text" }}https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}{{ end}}
receivers配置
receivers的配置相对简单,没啥可以说的。提供一个样例配置文件。
receivers:
- name: 'email-zhaojiedi'
email_configs:
- to: '1072892917@qq.com'
- name: 'hipchat-zhaojiedi'
hipchat_configs:
- auth_token: <auth_token>
room_id: 85
message_format: html
notify: true
- name: 'pagerduty-zhaojiedi'
pagerduty_configs:
- service_key: <team-DB-key>
- name: 'opt-webhook'
send_resolved: true
url: "http://xxxxx.xxx.com/5002/dingding/xxx/send/
官方提供很多receviers的配置格式, 详细的参考官方文档:https://prometheus.io/docs/alerting/configuration/#receiver
route配置
route在这些配置中,相对是比较复杂的,这个配置主要是完成,报警规格会进入路由树,根据路由规则中的match或者match_re来匹配, 如果匹配中就会选择一个树分支来进行,找到此分支对应的receiver来发送对应的消息信息。
如果所有route信息都没法命中,就采用默认的receiver这个配置来发送消息。
样例如下:
routes:
- match_re:
service: ^(foo1|foo2|baz)$
receiver: team-X-mails
routes:
- match:
severity: critical
receiver: team-X-pager - match:
service: files
receiver: team-Y-mails routes:
- match:
severity: critical
receiver: team-Y-pager - match:
service: database
receiver: team-DB-pager
# Also group alerts by affected database.
group_by: [alertname, cluster, database]
routes:
- match:
owner: team-X
receiver: team-X-pager
continue: true
- match:
owner: team-Y
receiver: team-Y-pager
这个配置文件时从alertmanager官方的github上面找到的。 地址如下: https://github.com/prometheus/alertmanager/blob/master/doc/examples/simple.yml , 我们可以通过官方的工具来看下这个路由树是什么样的。

inhibit_rules配置
我们知道alertmanager对报警有抑制工程, 可以通过一定的规则,抑制一些报警消息,比如如下场景。
场景1 : 磁盘报警,80%报警设置为info级别,90设置为警告级别, 如果2个消息都发送,那就多余了。 我们需要设置相同报警高级别压制低级别的报警,只发送高级别的报警信息。
场景2: 节点宕机了, 在这个节点上面的各种服务报警都会触发的, 如果都发送不太方便定位问题,还容易带来巨大的压力。可以配置节点宕机压制节点层面的其他报警信息。
样例配置如下:
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
# Apply inhibition if the alertname is the same.
equal: ['alertname' ]
通过上面的配置,可以在alertname相同的情况下,critaical的报警会抑制warning级别的报警信息。
静默配置
静默配置是通过web界面配置的, 如下图。

进入静默配置页面

总结
alertmanager集成报警系统的几个重要功能。
- 分组: 可以通过route书的group_by来进行报警的分组,多条消息一起发送。
- 抑制: 重要报警抑制低级别报警。
- 静默: 故障静默,确保在接下来的时间内不会在收到同样报警信息。
prometheus学习系列十: Prometheus AlertManager配置文件说明的更多相关文章
- prometheus学习系列九: Prometheus AlertManager使用
在Prometheus的报警系统中,是分为2个部分的, 规则是配置是在prometheus中的, prometheus组件完成报警推送给alertmanager的, alertmanager然后管理这 ...
- prometheus学习系列五: Prometheus配置文件
在prometheus监控系统,prometheus的职责是采集,查询和存储和推送报警到alertmanager.本文主要介绍下prometheus的配置文件. 全局配置文件简介 默认配置文件 [ro ...
- Prometheus学习系列(二)之Prometheus FIRST STEPS
前言 本文来自Prometheus官网手册 和 Prometheus简介 说明 Prometheus是一个监控平台,通过在监控目标上的HTTP端点来收集受监控目标的指标.本指南将向您展示如何使用Pro ...
- Prometheus学习系列(六)之Prometheus 查询说明
前言 本文来自Prometheus官网手册和 Prometheus简介 Prothetheus查询 Prometheus提供一个函数式的表达式语言PromQL (Prometheus Query La ...
- Prometheus学习系列(五)之Prometheus 规则(rule)、模板配置说明
前言 本文来自Prometheus官网手册1.2.3.4和 Prometheus简介1.2.3.4 记录规则 一.配置规则 Prometheus支持两种类型的规则,这些规则可以定期配置,然后定期评估: ...
- Prometheus学习系列(九)之Prometheus 联盟、迁移
前言 本文来自Prometheus官网手册 和 Prometheus简介 FEDERATION 允许Prometheus服务器从另一台Prometheus服务器抓取选定的时间序列. 一,用例 联盟有不 ...
- prometheus学习系列三:node_exporter安装部署
node_exporter简介 node_exporter安装部署 [root@node00 ~]# cd /usr/src/ [root@node00 src]# wget https://gith ...
- prometheus学习系列一: Prometheus简介
Prometheus简介 prometheus受启发于Google的Brogmon监控系统(相似kubernetes是从Brog系统演变而来), 从2012年开始由google工程师Soundclou ...
- prometheus学习系列二: Prometheus安装
下载 在prometheus的官网的download页面,可以找到prometheus的下载二进制包. [root@node00 src]# cd /usr/src/ [root@node00 src ...
随机推荐
- 如何更新GitHub上的代码?
更新github上的代码 一.克隆代码 1.先是把自己GitHub上的代码克隆到本地(下载到本地) 步骤1.随便创建一个新文件夹(用来存放下载下来的代码) 步骤2.在文件夹中打开cmd 输入下载指令下 ...
- haproxy 配置文件详解 之 综述
HAProxy 配置文件根据功能和用途,主要有5 个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置. 1.global 部分 用来设定全局配置参数,属于进程级的配置,通常和操作系 ...
- Unix/Linux系统下的nobody用户是什么?
1.Windows系统在安装后会自动建立一些用户帐户,在Linux系统中同样有一些用户帐户是在系统安装后就有的,就像Windows系统中的内置帐户一样. 2.它们是用来完成特定任务的,比如nobody ...
- rpm安装和卸载
以jdk的卸载和安装为例. 1. 查找已安装的包名 $ rpm -q jdk jdk-1.7.0_79-fcs.x86_64 如果系统中有已经安装的jdk包,则会输出包名. 2. 卸载已安装的包 $ ...
- python3 pathlib库中的Path类的使用
调用库 from pathlib import Path 获取 Path 的文件名 Path.name 参考 https://blog.csdn.net/amanfromearth/article/d ...
- Ansible之playbook的使用
playbook介绍 一. 为什么引入playbook 我们完成一个任务,例如安装部署一个httpd服务,我们需要多个模块(一个模块也可以称之为task)提供功能来完成.而playbook就是组织多个 ...
- Symbol 小妙处
input 框输入后发送异步请求,页面拿到响应进行渲染.但偶尔会遇到问题:响应内容和输入结果不一致.因为 http 无法保证响应到达的顺序. 如何解决呢?提供一个小思路. myRequest.js i ...
- VUE后缀页面调试
在VUE中Js代码可以直接设置断点进行调试,但是vue文件中点击断点无反应,可以在想要断点的地方增加一行代码即可 debugger
- golang gin 上传图片到aws s3
要上传图片到aws s3首先需要 知道 aws 的地区 也就是region ,还需要知道储存桶的名字,其次就是Access key ID和Secret access key package handl ...
- Java学习之旅(一):探索extends
鄙人为兴趣爱好,0基础入门学习Java,有些心得想法,记录于此,与君分享. 然毕竟新手,学识尚浅,错误之处,希望多多指正批评,也是对我最大的帮助! 前言:本篇文章,主要讨论在子类继承父类之后,一些继承 ...