目录
一, Alertmanager 简介
二, Alertmanager 部署
三, Alertmanager 配置
四, 自定义告警规则和发送
一, Alertmanager 简介
Prometheus 是一个划分平台, metrics 的收集和存储与警报是分开的, 警报是由 Alertmanager 负责, 这是监控环境的独立部分. 警报的规则是在 Prometheus server 上进行定义的, 这些规则可以触发时间, 然后将其传到 alertmanager,alertmanager 随后决定如何处理各自的警报, 处理复制之类的问题, 并决定在发送警报时使用什么机制: 实时消息, 电子邮件或者是其他钉钉, 微信等工具.
二, Alertmanager 部署
Alertmanager 默认监听 9093 端口, 集群接听端口 9094.
- # 下载
- [[email protected] ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0-rc.0/alertmanager-0.20.0-rc.0.linux-amd64.tar.gz
- # 解压
- [[email protected] ~]# tar -zxf alertmanager-0.20.0-rc.0.Linux-amd64.tar.gz -C /usr/local/
- [[email protected] ~]# mv /usr/local/alertmanager-0.20.0-rc.0.Linux-amd64 /usr/local/alertmanager-0.20.0
- [[email protected] ~]# ln -sv /usr/local/alertmanager-0.20.0 /usr/local/alertmanager
- # 运行
- [[email protected] ~]# ln -sv /usr/local/alertmanager/alertmanager /usr/local/bin/
- [[email protected] ~]# alertmanager &
- [[email protected] ~]# netstat -tulnp |grep alert
- tcp6 0 0 :::9093 :::* LISTEN 41194/alertmanager
- tcp6 0 0 :::9094 :::* LISTEN 41194/alertmanager
- udp6 0 0 :::9094 :::* 41194/alertmanager
访问 http://:9093 即可访问 alertmanager 的 web 界面, 如下:
三, Alertmanager 配置
Alertmanager 的配置有两个地方, 一个是在 Prometheus server 端进行配置告警节点, 指定匹配告警规则文件路径, 以及监控 alertmanager 本身. 另一个直接配置 alertmanager 自身的配置, 在 alertmanager.YAML 进行配置.
- [[email protected] alertmanager]# cat /usr/local/prometheus/prometheus.YAML
- ...
- # Alertmanager configuration
- alerting:
- alertmanagers:
- - static_configs:
- - targets:
- - 192.168.0.143:9093 #配置 alertmanager 节点列表
- rule_files:
- - "rules/*_rules.yml" #指定规则文件
- # - "rules/*_alert.yml"
- scrape_configs:
- ......
- - job_name: 'alertmanager' #指定监控任务 alertmanager
- static_configs:
- - targets: ['192.168.0.143:9093']
添加完成后, 在 prometheus server 的 Web 端可以查看到 alertmanager 的 targets 列表, 如下:
配置完成 prometheus.YAML 后, 再来看看默认的 alertmanager.YAML 的介绍, 如下:
- [[email protected] alertmanager]# cat alertmanager.YAML
- global:
- resolve_timeout: 5m #处理超时时间, 默认为 5min
- route:
- group_by: ['alertname'] # 报警分组依据
- group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知
- group_interval: 10s # 在发送新警报前的等待时间
- repeat_interval: 1h # 发送重复警报的周期 对于 email 配置中, 此项不可以设置过低, 否则将会由于邮件发送太多频繁, 被 smtp 服务器拒绝
- receiver: 'web.hook' # 发送警报的接收者的名称, 以下 receivers name 的名称
- receivers:
- - name: 'web.hook' # 警报
- webhook_configs: # webhook 配置
- - url: 'http://192.168.0.143:5001/'
- inhibit_rules: # 一个 inhibition 规则是在与另一组匹配器匹配的警报存在的条件下, 使匹配一组匹配器的警报失效的规则. 两个警报必须具有一组相同的标签.
- - source_match:
- severity: 'critical'
- target_match:
- severity: 'warning'
- equal: ['alertname', 'dev', 'instance']
global: 全局配置, 包括报警解决后的超时时间, SMTP 相关配置, 各种渠道通知的 API 地址等等.
route: 用来设置报警的分发策略, 它是一个树状结构, 按照深度优先从左向右的顺序进行匹配.
receivers: 配置告警消息接受者信息, 例如常用的 email,wechat,Slack,webhook 等消息通知方式.
inhibit_rules: 抑制规则配置, 当存在与另一组匹配的警报 (源) 时, 抑制规则将禁用与一组匹配的警报(目标).
四, 自定义告警规则和发送
在 prometheus.YAML 中创建规则文件, 进行监控 node02 主机的 node_exporter 是否存活, 并发送告警信息如下:
- [[email protected] prometheus]# pwd
- /usr/local/prometheus
- [[email protected] prometheus]# mkdir rules
- [[email protected] rules]# VIM node_rules.YAML
- groups:
- - name: node-up # 分组名称
- rules: # 规则设置
- - alert: node-up #告警名称
- expr: up{job="node02"} == 0 # 表达式, 查询式语句查询 up 的值是否等于 0, 如果等于则告警
- for: 15s # 告警持续时间
- labels:
- severity: 1
- team: node
- annotations: # 注解
- summary: "{{ $labels.instance }} 已停止运行超过 15s!"
- [[email protected] rules]# systemctl restart prometheus
设定 prometheus.YAML 中的 rules 后, 再配置 alertmanager 的告警相关信息, 如下:
- [[email protected] alertmanager]# pwd
- /usr/local/alertmanager
- [[email protected] alertmanager]# VIM alertmanager.YAML
- global:
- resolve_timeout: 5m
- route:
- group_by: ['alertname']
- group_wait: 10s
- group_interval: 10s
- repeat_interval: 1h
- receiver: 'dingtalk' #使用钉钉告警
- receivers:
- - name: 'dingtalk'
- webhook_configs:
- - send_resolved: true
- url: 'https://oapi.dingtalk.com/robot/send?access_token=f91dc80ss8xaczc220f480d408c347669bf75ca7840ad892df74fc9fe8f1'
- inhibit_rules:
- - source_match:
- severity: 'critical'
- target_match:
- severity: 'warning'
- equal: ['alertname', 'dev', 'instance']
Prometheus 学习笔记(6)Alertmanager 告警
来源: http://www.bubuko.com/infodetail-3329838.html