Promethus配置邮件告警

介绍

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 恢复邮件
  • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2020年10月15日
    下一篇 2020年10月15日

    相关推荐