MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Promethus配置邮件告警(prometheus配置文件中rule_files参数)

2025-03-18 22:57 huorong 精选文章 1 ℃ 0 评论

介绍

Prometheus是一个按功能划分的凭条,指标的收集和存储与警报是分开的。警报管理功能是由Alertmanager的工具提供,该工具是监控体系中的独立组件。


在Prometheus上定义警报规则后,这些规则可以出发事件,然后传播到Alertmanager,Alertmanager会决定如何处理相应的警报。Alertmanager对警报进行去重、分组,然后路由到不同的接收器,如电子邮件、短信或SaaS服务(PagerDuty等)。我们将在Prometheus服务器上编写警报规则 [2] ,这些规则将使用我们收集的指标并在指定的阈值或标准上触发警报。我们还将看到如何为警报添加一些上下文。当指标达到阈值或标准时,会生成一个警报并将其推送到Alertmanager。与Prometheus一样,Alertmanager配置也是基于YAML的配置文件。


prometheus本身不支持告警功能,主要通过插件alertmanage来实现告警。AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户。

prometheus触发一条告警的过程:

prometheus--->触发阈值--->超出持续时间--->alertmanager--->分组|抑制|静默--->媒体类型--->邮件|钉钉|微信等。


一、安装promethus的监控alertmanager插件

wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz

tar zxvf alertmanager-0.20.0.linux-amd64.tar.gz

cd alertmanager-0.20.0.linux-amd64

mv alertmanager-0.20.0.linux-amd64 /usr/local/prometheus/alertmanager


nohup /usr/local/prometheus/alertmanager/alertmanager --config.file="/usr/local/prometheus/alertmanager/alertmanager.yml" &


访问:http://IP:9093


二、prometheus集成alertmanager

  • 1、部署完毕alertmanager, 需要告知prometheus告警信息推送的位置, 通过如下配置即可完成

[root@k8s-test-01 alertmanager]# cat /usr/local/prometheus/prometheus.yml

# my global config

global:

scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.

evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.

# scrape_timeout is set to the global default (10s).

# Alertmanager configuration

alerting:

alertmanagers:

- static_configs:

- targets:

- 114.67.94.33:9093

  • 2、创建报警规则

[root@node00 prometheus]# vim prometheus.yml

rule_files:

- "rules/*rules.yml"

# - "second_rules.yml"

[root@node00 prometheus]# mkdir rules

[root@node00 prometheus]# cat rules/node_rules.yml

groups:

- name: node-alert

rules:

- alert: disk-full

expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"})

for: 1m

labels:

serverity: page

annotations:

summary: "{{ $labels.instance }} disk full "

description: "{{ $labels.instance }} disk > {{ $value }} "

解释: expr 相当于表示,表示磁盘使用率是多少的值(5%) ,for 持续时间为1分钟就会报警.(上面规则只要重启动aletemanger 就会报警)

  • 如果想要恢复的话的,可以使用 数值比较。

[root@node00 prometheus]# cat rules/node_rules.yml

groups:

- name: node-alert

rules:

- alert: disk-full

expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"}) > 8

for: 1m

labels:

serverity: page

annotations:

summary: "{{ $labels.instance }} disk full "

description: "{{ $labels.instance }} disk > {{ $value }} "


  • 3、重启动promethus /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

查看规则


查看报警信息


三、测试邮件报警问题

  • 1、alertmanger 配置文件修改(邮件发送相关) 上面的消息信息已经从prometheus推送给alertmanager了, 我们已经可以在alertmanager的web管理界面看到对应的报警信息,但是我们还没有配置如何让alertmanager把这些信息推送我们的社交软件上面去。

[root@k8s-test-01 alertmanager]# more /usr/local/prometheus/alertmanager/alertmanager.yml

global:

resolve_timeout: 5m

###################################

smtp_auth_username: "xxx@126.com"

smtp_auth_password: "*******"

#smtp_auth_secret: ""

smtp_require_tls: false

smtp_smarthost: "smtp.126.com:465"

smtp_from: "xxx@126.com"

####################################

route:

group_by: ['alertname']

group_wait: 10s

group_interval: 10s

repeat_interval: 1h

receiver: 'email-caozm'

receivers:

- name: 'email-xxx'

email_configs:

- send_resolved: true

to: xxx@126.com

inhibit_rules:

- source_match:

severity: 'critical'

target_match:

severity: 'warning'

equal: ['alertname', 'dev', 'instance']

解释: 分组(group): 将类似性质的警报合并为单个通知。

group_by: ['alertname'] # 以标签作为分组依据

group_wait: 10s # 分组报警等待时间

group_interval: 10s # 发送组告警间隔时间

repeat_interval: 1h # 重复告警发送间隔时间

抑制(inhibition): 当警报发出后,停止重复发送由此警报引发的其他警报。可以消除冗余告警


inhibit_rules:

- source_match: # 当此告警发生,其他的告警被抑制

severity: 'critical'

target_match: # 被抑制的对象

severity: 'warning'

equal: ['id', 'instance']

重启动alertmanger 进程。

  • 2、故障邮件


  • 3 恢复邮件



Tags:scrape_interval

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言