Alertmanager 基础

摘要:
Prometheus服务器中的警报规则向警报管理器发送警报。然后,Alertmanager管理这些警报,包括静音、抑制、聚合和传递方法,如电子邮件通知、呼叫通知系统和即时消息平台。

概述

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

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

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

Alertmanager 基础第1张

Prometheus监控系统的告警逻辑

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

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

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

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

 Alertmanager 基础第2张

部署 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"

免责声明:文章转载自《Alertmanager 基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C/C++学习)22.QTcpServer、QTcpSocket、QUdpSocket使用system()函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IP分割和重组

数据链路层不同,MTU(最大传输单元)就不同。但是IP协议是网络层的协议,它需要将数据链路层进行抽象。使得所有的数据链路对于上层的表现是一致的。 任何一台主机必要对IP分片进行相应的处理。因为,较大的报文无法一下子发送出去,需要进行分片分次发送。是否有必要进行分片是由路由器决定的,只要路由器认为有必要分片,就会进行分片。路由器只管分片,不管重组。重组是需要...

VUE三 vue-router(路由)详解

前端路由 根据不同的 url 地址展示不同的内容或页面,无需依赖服务器根据不同URL进行页面展示操作 优点 用户体验好,不需要每次都从服务器全部获取,快速展现给用户 缺点 使用浏览器的前进,后退键的时候会重新发送请求,没有合理地利用缓存 单页面无法记住之前滚动的位置,无法在前进,后退的时候记住滚动的位置 一、路由(以user为例) userList--...

vue路由懒加载

当打包构建应用时,javascript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。 结合Vue的异步组件和webpack的code splitting feature,轻松实现路由组件的懒加载。 我们要做的就是把路由对应的组件定义成异步组件: const Foo =...

docker network

前言:前面的部分一直都是单机跑docker,但实际生产环境不可能只用一台来跑。肯定会用到多台,因为他们都是内部私有ip,那么多台主机之间的容器如何通信?这个是个很头疼的问题!目前主流几种方法如下: 1、使用路由机制打通网络 2、使用Open vSwitch(OVS)打通网络 3、使用flannel来打通网络 4、使用Quagga来实现自动学习路由第一种:使...

VUE-路由配置及跳转方式

需求 在vue中,页面的他跳转和卡片切换一般会用到路由router,具体不多说,主要记录一下路由的配置和几种常用的跳转方式 路由配置重定向 index.js : import Home from '../components/Home' import Page2 from '../components/Page2' import Chil1 from '....

在OpenWrt中安装Wiwiz实现portal认证

1.系统需求硬件 已安装了OpenWrt固件的无线路由器(典型的有Linksys WRT54G系列) 软件 Wifidog 你可以尝试执行以下命令安装Wifidog: opkg update # Optional opkg install wifidog 复制代码将无线路由器接入Internet。设置并启用无线网络,即,使用无线路由器创建一个可用的Acc...