• 搜索
  • 夜间模式
    ©2026  依刻学习 Theme by OneBlog

    依刻学习博客

    搜索
    标签
  • 首页>
  • 学习的一天>
  • 正文
  • promethues的alertmangnger实现

    2025年04月17日 30 阅读 0 评论 4892 字

    前言

    基于promethues+grafana进一步实现alertmangnger警告

    IPROLE
    192.168.179.140server,expoter,alertmanager
    192.168.179.191pushgateway

    实践

    1.部署alertmangnger
    下载安装alertmangnger

    cd /app
    wget   https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz
    tar xf alertmanager-0.28.1.linux-amd64.tar.gz
    mv alertmanager-0.28.1.linux-amd64 alertmanager
    ln  -s  /app/alertmanager/alertmanager /usr/bin/ 

    启动

    vim /usr/lib/systemd/system/alertmanager.service 
    
    [Unit]
    Description=alertmanager by prometheus
    After=network.target
     
    [Service]
    ExecStart=/app/alertmanager/alertmanager --config.file=/app/alertmanager/alertmanager.yml --storage.path=/app/alertmanager/data
    ExecReload=/bin/kill -HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    KillMode=process
    Restart=on-failure
    RestartSec=42s
     
    [Install]
    WantedBy=multi-user.target
    
    systemctl daemon-reload
    systemctl restart alertmanager.service
    1. 配置alertmangnger
      alertmangnger.yml配置文件仅配置警告方式,这里仅配置如何发邮件
    #配置文件解释
    cat /app/alertmanager/alertmanager.yml
    
    # 全局配置
    global:
      resolve_timeout: 5m         # dns解析超时时间
      smtp_from: 'xxx@qq.com'       # 发件人(邮箱)
      smtp_smarthost: 'smtp.xx.com:25'         # smtp服务器
      smtp_auth_username: 'xxx@qq.com'        # 邮箱名称 
      smtp_auth_password: 'xxxxx'    # 邮箱授权码
      smtp_require_tls:        false            #加密    
    #配置收件人间隔时间,收件方式
    route:
      group_by: ['A','B']  # 传入报警分组标签,如A=a,B=b将多个报警分为单个组
      group_wait: 30s      # 设置在发送警报之后,Alertmanager 重新等待新警报的时间。如果在指定时间内内没有新的警报加入组,那么这个组的警报将被发送出去。
      group_interval: 300s  # 发送组警报的时间间隔
      repeat_interval: 4h   # 对同一个警报组的重复通知之间的时间间隔  不能太短,否则频繁发送邮件会被smtp服务器拒绝
      receiver: 'myemail'   # 警告接受者(参考receivers)
    # 定义模板
    #templates:
    #  - 'xxx/*.tmpl'
    #警告接受者
    receivers:
    - name: 'myemail'    #名称
      email_configs:
      - to: 'xxx@xx.xom'    #目标邮箱
    
    # 抑制规则:当在已经触发某些警告的情况下,压制与其相关的其他特定警告不发送通,用于避免一个问题导致的大量连锁问题警告而无法确定真正的错误
    inhibit_rules: 
      - source_match:
          severity: 'critical'
        target_match:
          severity: 'warning'
        equal: ['alertname', 'dev', 'instance', 'prod']
    #配置警告
    vim  /app/alertmanager/alertmanager.yml
    
    global:
      resolve_timeout: 5m
      smtp_from: '195xxxxx@163.com'
      smtp_smarthost: 'smtp.163.com:25'
      smtp_auth_username: '195xxxxx@163.com'
      smtp_auth_password: 'EZxxxx'
    route:
      group_by: ['alertname']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 1h
      receiver: 'myemail'
    templates:
      - '/app/alertmangnger/templates/*.yaml'
    receivers:
      - name: 'myemail'
        email_configs:
          - to: '30xxxxx@qq.com'
    inhibit_rules:
      - source_match:
          severity: 'critical'
        target_match:
          severity: 'warning'
        equal: ['alertname', 'dev', 'instance']

    访问http://192.168.179.140:9093/,查看alertmanager

    3.配置promethues服务端
    prometheus.yml

    #promethues配置文件警告部分解释
    cat /app/prometheus/prometheus.yml
    
    #开启警告
    alerting:
        alertmanagers:
        - static_configs:
          - targets:
            - "ip/域名:9093"    #指定alertmanagers所在的主机
    #配置rules规则(等同于触发器)
    rules_files:
      - "报警文件路径/1.yml"    #相对于promethues.yaml所在的目录
      - "报警路径文件/2.yml"
    配置警告
    vim /app/prometheus/prometheus.yml
    
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              - "localhost:9093"
    rule_files:
      - "rules/rule1.yml"
    #警告规则文件解释(promethues.yml中的rule_files指定)
    #这里配置的是触发警告的条件(规则)
    groups:
    - name:  name1    #组名称
      rules:
      -  alert: alert1    #规则名称
          expr:    判断语句  #故障的判断,这里使用PromeQL
         for:      5m        #检测间隔(s)
         labels:
             severity:    1    #优先级
             team: 组名
         annotations:    #描述
             summary:  "故障"    #发送的消息
    #配置客户端down警告
    vim /app/prometheus/rules/rule1.yml
    
    groups:
    - name:  check_node_status
      rules:
      -  alert: check_node_is_up
         expr:  up{job=~"prometheus-.*"} == 0
         for:      15s
         labels:
             severity:    1    
             team: node
         annotations:    
             summary:  "{{ $labels.instance }} 节点停止运行"

    不能混合空格和制表符

    在promethues查看定义的规则内容(9090端口)

    配置好能够在Rule health看见规则

    4.测试
    停止promethues-2节点

    systemctl stop pushgateway.service

    查看节点状态

    查看规则值

    查看alertmanager中出现的警告组

    QQ邮箱收到了警告邮件

    本文著作权归作者 [ wymm ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    Copyright©2026  All Rights Reserved.  Load:0.020 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。