prometheus告警插件-alertmanager
prometheus本身不支持告警功能,主要通过插件alertmanage来实现告警。AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户。
prometheus触发一条告警的过程:
prometheus--->触发阈值--->超出持续时间--->alertmanager--->分组|抑制|静默--->媒体类型--->邮件|钉钉|微信等。
配置alertmanager
- 安装alertmanager。https://github.com/prometheus/alertmanager/releases/download/v0.16.2/alertmanager-0.16.2.linux-amd64.tar.gz
- 配置告警信息 vim alertmanager.yml
- global:
- resolve_timeout: 5m
- smtp_smarthost: 'smtp.163.com:25'
- smtp_from: 'xxx@163.com'
- smtp_auth_username: 'xxx@163.com'
- smtp_auth_password: 'xxxxxx'
- smtp_require_tls: false
- route: # route用来设置报警的分发策略
- group_by: ['alertname'] # 采用哪个标签来作为分组依据
- group_wait: 10s # 组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
- group_interval: 10s # 两组告警的间隔时间
- repeat_interval: 20m # 重复告警的间隔时间,减少相同邮件的发送频率
- receiver: 'default-receiver' # 设置默认接收人
- routes: # 可以指定哪些组接手哪些消息
- - receiver: 'default-receiver'
- continue: true
- group_wait: 10s
- - receiver: 'fping-receiver'
- group_wait: 10s
- match_re: #根据标签分组,匹配标签dest=szjf的为fping-receiver组
- dest: szjf
- receivers:
- - name: 'default-receiver'
- email_configs:
- - to: 'xxxxxxxx@qq.com'
- - name: "fping-receiver"
- webhook_configs:
- - url: 'http://127.0.0.1:9095/dingtalk'
- send_resolved: true
- global:
注意:之前报警了但是邮件一直没有发送出去,# telnet smtp.163.com 25发现也不通,发现是腾讯云做了限制,需要点击25端口解封。
启动alertmanage
# ./amtool check-config alertmanager.yml # 检查配置
Checking 'alertmanager.yml' SUCCESS
Found:
- global config
- route
- 0 inhibit rules
- 1 receivers
- 0 templates
# ./alertmanager --config.file='alertmanager.yml' # 启动
web ui查看 : http://alertmanager_ip:9093
配置prometheus与alertmanager通信
# vim prometheus.yml
- alerting:
- alertmanagers: # 配置alertmanager
- - static_configs:
- - targets:
- - 127.0.0.1:9093 #alertmanager服务器ip端口
- rule_files: # 告警规则文件
- - 'rules/*.yml'
配置报警规则rules
# vim rules/node.yml
- groups:
- - name: test
- rules:
- - alert: 内存使用率过高
- expr: 100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100 > 30
- for: 1m # 告警持续时间,超过这个时间才会发送给alertmanager
- labels:
- severity: warning
- annotations:
- summary: "Instance {{ $labels.instance }} 内存使用率过高"
- description: "{{ $labels.instance }} of job {{$labels.job}}内存使用率超过80%,当前使用率[{{ $value }}]."
- - alert: cpu使用率过高
- expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 0
- for: 1m
- labels:
- severity: warning
- annotations:
- summary: "Instance {{ $labels.instance }} cpu使用率过高"
- description: "{{ $labels.instance }} of job {{$labels.job}}cpu使用率超过80%,当前使用率[{{ $value }}]."
# 尽可能把详细告警信息写入summary标签值,因为告警短信/邮件/钉钉发送的内容使用了summary标签中的值。
检查告警规则,重启prometheus
# ./promtool check rules rules/node.yml
Checking rules/node.yml
SUCCESS: 2 rules found
amtool 管理工具可以查看:
- # ./amtool alert --alertmanager.url=http://localhost:9093
- Alertname Starts At Summary
- 内存使用率过高 2019-04-09 13:14:45 CST Instance 192.168.1.12:9100 内存使用率过高
在prometheus界面的alert可以看到告警状态。
- 绿色表示正常。
- 红色状态为 PENDING表示alerts 还没有发送至 Alertmanager,因为rules里面配置了for: 1m。
- 1分钟后状态由 PENDING 变为 FIRING,此时,prometheus才将告警发给alertmanager,在 Alertmanager 中可以看到有一个 alert。
收到邮件:
告警收敛(分组,抑制,静默)
- 分组(group): 将类似性质的警报合并为单个通知。
- group_by: ['alertname'] # 以标签作为分组依据
- group_wait: 10s # 分组报警等待时间
- group_interval: 10s # 发送组告警间隔时间
- repeat_interval: 1h # 重复告警发送间隔时间
- 抑制(inhibition): 当警报发出后,停止重复发送由此警报引发的其他警报。可以消除冗余告警
- inhibit_rules:
- - source_match: # 当此告警发生,其他的告警被抑制
- severity: 'critical'
- target_match: # 被抑制的对象
- severity: 'warning'
- equal: ['id', 'instance']
- 静默(silences): 是一种简单的特定时间静音的机制。例如:服务器要升级维护可以先设置这个时间段告警静默。
静默在alertmanager的web界面silence里面配置,create silence。
配置完成后可以看到
在这期间就收不到报警邮件了。
prometheus告警插件-alertmanager的更多相关文章
- prometheus告警模块alertmanager注意事项(QQ邮箱发送告警)
配置alertmanager的时候,都是根据网上的教程来配置的. 因为我是用QQ邮箱来发送告警的,所以alertmanager.yml的邮箱配置如下: global: resolve_timeout: ...
- prometheus + grafana + node_exporter + alertmanager 的安装部署与邮件报警 (一)
大家一定要先看详细的理论教程,再开始搭建,这样报错后才容易找到突破口 参考文档 https://www.cnblogs.com/afterdawn/p/9020129.html https://www ...
- Prometheus告警模型分析
Prometheus作为时下最为流行的开源监控系统,其庞大的生态体系:包括针对各种传统应用的Exporter,完整的二次开发工具链,与Kubernetes等主流平台的高度亲和以及由此带来的强大的自发现 ...
- Prometheus 告警收敛
Prometheus 告警收敛 告警面临最大问题,是警报太多,相当于狼来了的形式.收件人很容易麻木,不再继续理会.关键的告警常常被淹没.在一问题中,alertmanger在一定程度上得到很好解决. P ...
- Prometheus 告警状态了解
Prometheus 告警状态了解 一旦这些警报存储在Alertmanager,它们可能处于以下任何状态: · Inactive:这里什么都没有发生. · Pending:已触发阈值,但未满足告警持续 ...
- 02 . Prometheus告警处理
Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告 ...
- Prometheus监控神器-Alertmanager篇(1)
本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解. 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警 ...
- Prometheus—告警altermanger
Prometheus-告警altermanger 1.告警altermanger装配 2.告警Mysql 3.Prometheus针对nodes告警规则配置 相关内容原文地址链接: 51CTO:wfw ...
- Prometheus告警处理
在Prometheus Server中定义告警规则以及产生告警,Alertmanager组件则用于处理这些由Prometheus产生的告警.Alertmanager即Prometheus体系中告警的统 ...
随机推荐
- vue国际化
插件:vue-i18n main.js引入i18n.js:+2行 新建文件(i18n.js),引入VueI18n.locale.语言包 新建语言包,包括index/zh/en(名字随意,引用正确就好) ...
- Grunt搭建自动化web前端开发环境--完整流程
Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...
- vim : 依赖: vim-common (= 2:7.3.429-2ubuntu2) 但是 2:7.3.429-2ubuntu2.1 正要被安装
sudo apt-get purge vim-common sudo apt-get update sudo apt-get upgrade sudo apt-get install vim Just ...
- redux中间件的原理
前言react已经出来很久了,其生态圈之庞大,一锅炖不下!各种react-xx,已让我们不堪重负,github上随便一个demo,引入的模块至少都是五指之数+.看着头疼,嚼之无味…….在此建议新学者, ...
- Angular4 构建,部署,多环境
- python 什么是闭包
1.啰嗦一下 学这个知识点的时候,我本来想先了解下定义, 知道个大概再说, 翻了几篇博客,基本上都是有例子带着进入理解这块.即使读了定义,思想还是不能显出个框架. 想吃快餐,有些行,有些就不可以(这里 ...
- 20190317 A
今天是学长wsy的题,我理论会100+50+30=180,实际100+20+10=130,充分体现我的菜 最近日常模拟赛挂分50到60,很危险,这2天一定要调整好... Upd:T2我认为50的划分数 ...
- Py 最全的常用正则表达式大全 ZZ
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下.给自己留个底,也给朋友们做个参考. ...
- [c/c++] programming之路(27)、union共用体
共用体时刻只有一个变量,结构体变量同时并存 一.创建共用体的三种形式 #include<stdio.h> #include<stdlib.h> #include<stri ...
- Synchronized使用方法
Synchronized是我们常用来维持线程安全时使用的一个关键字,内部通过monitor(监视器锁,由C++实现)来实现.而monitor本质又是依赖底层操作系统的mutex lock来实现.而操作 ...