
Prometheus教程(6)AlertManager告警部署与配置
一、 Alertmanager 介绍
AlertManager 是 Prometheus 生态中实现告警管理的关键组件。Prometheus会定期检查指标数据是否与设定好的告警规则匹配,如果达到了告警阈值,会生成相应的告警通知并发送给AlertManager。告警通知包括邮件、电话、短信、钉钉、企业微信等多种方式,并且还有类似睿象云(https://www.aiops.com/)等第三方告警平台提供了电话告警、短信告警API。
AlertManager 还可以根据告警消息包含的标签和事先配置的路由规则,将告警消息通知给不同的接收者,在告警过程中还支持对告警信息进行分组、去重、抑制和分发工作,确保告警信息的精准送达和高效处理,例如将带有"database"标签的告警通过WeChat发给DBA。
二、安装与配置Alertmanager
1、下载安装包
通过github下载二进制格式的安装包,进行解压后可以获取到二进制程序以及配置文件alertmanager.yml
wget https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz tar zxf alertmanager-0.28.1.linux-amd64.tar.gz -C /data/alertmanager
2、Alertmanager的配置
通过alertmanager.yml文件可以进行告警分组、告警路由、告警抑制、告警静默等配置,配置文件分为以下几个主要部分:
· 全局配置(global):全局通用参数,比如用于邮件通知的SMTP配置以及其他第三方配置
· 模板(templates):定义告警通知时使用的模板。例如HTML模板、邮件模板
· 告警路由(route):根据告警标签进行匹配,确定告警分组和通知逻辑
· 接收人 (receivers):接收人信息,配合告警路由使用,确保告警通知到达正确的目的地,可以是邮箱、微信等
· 抑制规则 (inhibit rules):通过设置抑制规则来减少不必要的告警,避免告警泛滥
alertmanager.yml 基础配置示例
global: #定义发送邮件所使用的服务器信息,这里使用的是QQ邮箱,相关信息都在QQ邮箱中获取 smtp_smarthost: 'smtp.qq.com:587' smtp_from: '13841276@qq.com' smtp_auth_username: '13841276@qq.com' smtp_auth_password: 'xxxxxxxxxxxxxxxx' smtp_require_tls: true route: group_by: ['alertname'] #按标签对告警分组,同一标签下的多条告警会合并成一条消息,减少邮件数量。该标签要和Prometheush rules里定义的一致 group_wait: 30s #收到第一条新告警后等待30秒再一起发送,避免告警风暴 group_interval: 5m #如果同一分组下的告警在上次发送后又出现,需要等5分钟才再次发送 repeat_interval: 1h #如果告警持续存在,重复发送的间隔,避免频繁发送 receiver: 'email-alert' #指定告警接受者 receivers: #定义告警接受者 - name: 'email-alert' #告警接受者的名字 email_configs: #配置邮件告警 - to: '13841276@qq.com' # 收件人邮箱 send_resolved: true # 发送恢复通知 #inhibit_rules: # - source_match: # severity: 'critical' # target_match: # severity: 'warning' # equal: ['alertname', 'dev', 'instance']
3、启动Altermanager
· 使用amtool检查配置文件语法
#检查配置文件 ./amtool check-config alertmanager.yml
· 配置文件检测没有问题后就可以启动服务,默认监听9093端口,通过浏览器访问可以看到相关配置信息,并且可以进行静默配置等操作
#启动服务 ./alertmanager --config.file=alertmanager.yml
4、对接Prometheus
· 修改prometheus配置文件,增加alerting区域配置,让alertmangers能与Prometheus通信
global: scrape_interval: 60s #配置Altermanager信息 alerting: alertmanagers: - static_configs: - targets: - 10.128.35.242:9093 #指定Prometheus告警规则文件 rule_files: - "/data/prometheus/conf/node.yml" scrape_configs: - job_name: "prometheus" metrics_path: "/metrics" static_configs: - targets: ["10.128.35.242:9090"] - job_name: "node" metrics_path: "/metrics" static_configs: - targets: - "10.128.35.242:9100" - "10.128.35.243:9100" - "10.128.35.244:9100"
· 配置Prometheus告警规则,虽然脱离Altermanager也可以进行配置,但是没有告警功能。这里建议为不同的对象建立不同的规则文件,比如web.yml、mysql.yml,便于管理
vi /data/prometheus/rules/node.yml groups: - name: node_alerts #告警分组,组下的告警会整合在一个通知中,需要和Altermanager里的group_by一致 rules: - alert: InstanceDown #定义告警事件名 expr: up == 0 #报警表达式,当表达式成立时就满足告警条件 for: 1m #事件持续时长,当表达式和持续时间都满足后就触发告警,如果为0代表立即触发 labels: #为告警事件自定义标签 severity: critical #定义了severity标签,值为critical,可用于告警分组 annotations: #告警注释内容 summary: "Instance {{ $labels.instance }} down" #告警主题 description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute" #告警详情
观察Prometheus与Alertmanager的联通状态
5、告警状态与查看
当报警触发后访问Altermanager Web控制台可以看到具体的信息以及告警状态,告警状态会分为 Inactive(无事件)、Pending(触发阈值,但未满足告警持续时间)、Firing(触发告警)三种,当满足触发告警条件后就会发送告警通知,此时在Altermanager和Prometheus控制台都可以看到信息
猜你喜欢

运维技术 Prometheus教程(7)使用PushGateway自定义监控
一、PushGateway 介绍在 Prometheus 的体系结构中,需要依赖 PushGateway 来对一些生命周期较短的任务或者无法被 Prometheus 直接拉取到指标的对象进行...

运维技术 Prometheus教程(5)常用exporter的安装与使用配置
一、exporter介绍Prometheus exporter的作用是通过HTTP协议开放符合规范的指标数据给Prometheus抓取。在Prometheus官网提供了大量现成的exporter,基本...

运维技术 Prometheus教程(4)指标类型与常用函数
一、Prometheus 指标类型介绍Prometheus 提供了四种指标类型,这些类型定义了指标值的语义和处理方式,不同的指标类型也有不同的聚合函数搭配使用1、Gauges仪表盘型,该指标类型的值会...

运维技术 Prometheus教程(3)PromQL用法详解
一、PromQL 基本介绍PromQL 全称 Prometheus Query Language,它是 Prometheus 专用查询语言。通过PromQL可以灵活的对每个指标实现条件查询、...
运维技术 Prometheus教程(2)安装部署Grafana并对接Prometheus

一、Grafana介绍Grafana是一款开源的可视化平台,它能够将来自不同数据源的数据(可以集成 Prometheus、Elasticsearch、MySQL 等多种数据源)转换成丰富的图形、图表(...
文章评论