zoukankan      html  css  js  c++  java
  • Alertmanager 基础

    概述

      官网地址: https://prometheus.io/docs/alerting/latest/alertmanager/

        Prometheus 警报分为两部分。Prometheus 服务器中的警报规则将警报发送到警报管理器。Alertmanager 然后管理这些警报,包括沉默,抑制,聚集和通过的方法,如电子邮件发出通知,对呼叫通知系统,以及即时通讯平台。

    • 客户端通常是Prometheus Server,但它也支持接收来自其它工具的告警;
    • Alertmanager对告警通知进行分组、去重后,根据路由规则将其路由到不同的receiver,如Email、短信或微信等;
    Altermanager还支持对告警进行去重、分组、抑制、静默和路由等功能;
    • 分组(Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没;
    • 抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在;
    • 静默(Silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性;
    • 路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为;

    Prometheus监控系统的告警逻辑

      首先要配置 Prometheus 称为 Alermanager 的告警客户端.

            在 Alertmanager 上定义 receiver , 他们通常能够预计某个媒介接收告警信息的特定用户.

      在 Alertmanager 上定义路由规则(route), 一边将接收到的告警通知按需分别进行处理.

      在 Prometheus 上定义告警规则, 生成告警通知,发送给 Alermanager.

     

    部署 Alertmanager

    [root@ops ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
    [root@ops ~]# tar -xf alertmanager-0.23.0.linux-amd64.tar.gz -C /usr/local/
    [root@ops ~]# ln -s /usr/local/alertmanager-0.23.0.linux-amd64/ /usr/local/alertmanager

    准备启动文件

    [root@ops alertmanager]# cat /usr/lib/systemd/system/alertmanager.service
    [Unit]
    Description="alertmanager"
    Documentation=https://alertmanager.io/
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/alertmanager/alertmanager  --config.file=/usr/local/alertmanager/alertmanager.yml  --storage.path=/usr/local/alertmanager/data/
    
    Restart=on-failure
    RestartSecs=5s
    SuccessExitStatus=0
    LimitNOFILE=65536
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=alertmanager
    
    
    [Install]
    WantedBy=multi-user.target

    启动程序

    [root@ops alertmanager]# systemctl start alertmanager.service 
    [root@ops alertmanager]# systemctl enable alertmanager.service 
    [root@ops alertmanager]# systemctl status alertmanager.service 

    浏览器访问测试

    http://ip_or_server_name:9093

    配置文件准备

    [root@ops alertmanager]# cat /opt/alertmanager/alertmanager.yml 
    global:
      #resolve_timeout: 5m
      smtp_smarthost: 'smtp.163.com:25'         # 163 smtp 服务器地址
      smtp_from: 'xxx@163.com'            # 告警邮件地址
      smtp_auth_username: 'xxx'           # 认证用户名
      smtp_auth_password: 'xxxxxxxxx'    # 认证秘钥
      smtp_require_tls: false                   # 不启用 ssl
    route:                                      # 路由组
      group_by: ['alertname']                   # 
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 1h
      receiver: email-receiver                 # 发送给那个组
    receivers:                                 # 收件人组
    - name: 'email-receiver' 
      email_configs:
      - to: 'aaa@sina.com'                 # 收件人地址
    inhibit_rules:
      - source_match:
          severity: 'critical'
        target_match:
          severity: 'warning'
        equal: ['alertname', 'dev', 'instance']

    Prometheus配置

    主配置文件配置段

    ....
    
    rule_files:
      - recording_rules/*.yaml
      - alerting_rules/*.yml                     # 告警文件
    
      - job_name: 'alertmanager'             # alertmanager 纳入 prometheus  监控
        file_sd_configs:
        - files:
          - targets/alertmanager-server.yaml

    target配置文件

    [root@ops prometheus]# cat targets/alertmanager-server.yaml 
    - targets:
      - 192.168.168.105:9093
      labels:
        app: alertmanager
        lob: ops

    规则文件

    [root@ops prometheus]# cat alerting_rules/instance-down.yml 
    groups:
    - name: Allinstances     # 组名
      rules:
      - alert: instanceDown  # 规则名称
        expr: up == 0        # 匹配规则 实例宕机 promQl 表达式
        for: 10s             # 检测持续时间
        annotations:         # 告警自己也是一个时间序列 注解
          title: "instance down" # 告警标题
          description: 'Instance has been down for more than 1 minute.' # 告警详情
        labels:              # 新标签
          serverity: "critical"
  • 相关阅读:
    Managing C++ Objects: 管理C++对象 —— 一些建议准则
    像Java一样管理对象:T&形式仅仅用在参数传递
    Visual Studio的语法着色终于调得赏心悦目
    j.u.c: Java并发包的5大块
    笔记:Java Language Specification
    线程与锁
    分布式系统涉及的基本问题
    微服务为什么是一种趋势
    js实现复制功能
    css label两端对齐
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/15525917.html
Copyright © 2011-2022 走看看