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"

 

posted @ 2021-11-08 20:04  闫世成  阅读(323)  评论(0编辑  收藏  举报