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"
作者:闫世成
出处:http://cnblogs.com/yanshicheng
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。