一. 报警机制

在 prometheus 中定义你的监控规则,即配置一个触发器,某个值超过了设置的阈值就触发告警, prometheus 会推送当前的告警规则到 alertmanager,alertmanager 收到了会进行一系列的流程处理,然后发送到接收人手里。

Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件、微信、钉钉、Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等,是一款很好用的告警通知系统。

下文告警对象为钉钉机器人,lertManager+Webhook的安装及配置,均采用docker方式。

二.启动并配置 Prometheus

1.docker启动Prometheus

docker run -d \--restart always \--name prometheus \-p 9090:9090 \-v /opt/prometheus/rules:/usr/local/prometheus/rules \-v /opt/prometheus/groups:/usr/local/prometheus/groups \-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \prom/prometheus:main \--config.file=/etc/prometheus/prometheus.yml# prometheus配置文件prometheus.yml 挂载
# 挂载文件夹: rules规则告警信息,groups监控信息

Prometheus 默认配置文件 prometheus.yml 在容器内路径为 /etc/prometheus/prometheus.yml.
包含警告 和监控配置信息

# cat prometheus.yml
global:scrape_interval:     10sevaluation_interval: 10s# 警报管理器配置
alerting:alertmanagers:- static_configs:- targets:- 192.168.1.140:9093rule_files: #加载规则一次,并根据全局evaluation_interval定期对其进行评估- "/usr/local/prometheus/rules/*.yml"# 监控管理器配置
scrape_configs:- job_name: prometheusstatic_configs:- targets: ['192.168.1.140:9090']labels:instance: prometheus- job_name: linuxfile_sd_configs: #自动加载方式 - files: ['/usr/local/prometheus/groups/nodegroups/*.json']

ps:监控配置没有使用默认静态配置方式static_configs     缺点:每次配置都需要重启 Prometheus 服务;如需要分批次添加很多 Node 时,频繁重启服务就会造成监控的多次中断。
监控配置使用的实时动态识别方式:file_sd_configs

2. node.json文件

# cat node.json
[{"targets": ["192.168.1.140:9100","192.168.1.22:9100"],"labels": {"instance": "vm-192.168.1.22","service": "node-service"}}
]

启动成功,以后在添加或修改 Node 相关的 exproter,就可以直接在该 Json 文件中更新即可,不需要重启 Prometheus 服务,更多关于 Prometheus 配置可以参考 官网文档。

三.启动并配置 AlertManager

1.Docker 启动 AlertManager

docker run -d \--restart always \--name alertmanager \-p 9093:9093 \-v /opt/prometheus/alertmanager.yml:/etc/alertmanager/alertmanager.yml \prom/alertmanager:latest# 告警信息配置文件挂载AlertManager.yml

启动完成后,浏览器访问 http://<IP>:9093 可以看到默认提供的 UI 页面

2.  AlertManager 配置钉钉机器人告警

# 镜像pull
docker pull timonwong/prometheus-webhook-dingtalk# 启动容器
docker run -d --restart always -p 8060:8060 --name webhook timonwong/prometheus-webhook-dingtalk --ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"

另一种方法,提前把配置文件config.yml里面的webhook1信息修改好,挂载config.yml

# 启动容器
docker run -d \
--restart always \
-p 8060:8060 \
--name webhook \
-v /opt/prometheus/config.yml:/etc/prometheus-webhook-dingtalk/config.yml \
timonwong/prometheus-webhook-dingtalk***************************************************************************
# config.yml配置信息修改webhook1的token和secret等
# cat config.yml
targets:webhook1:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx37b358eabc4d4d89f91cc5d9b92921d4exxxxxxxxxxxx# secret for signaturesecret: xxxxxxxxxxxx15ef1b8337dbcb0b822acb547815acccf030a447105xxxxxxxxxxxxwebhook2:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxwebhook_legacy:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx# Customize template contentmessage:# Use legacy templatetitle: '{{ template "legacy.title" . }}'text: '{{ template "legacy.content" . }}'webhook_mention_all:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxmention:all: truewebhook_mention_users:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxmention:mobiles: ['156xxxx8827', '189xxxx8325']

测试配置webhook

# 测试webhook
curl   -H "Content-Type: application/json"  -d '{ "version": "4", "status": "firing", "description":"description_content"}'  http://localhost:8060/dingtalk/webhook1/send

AlertManager 默认配置文件为 alertmanager.yml,在容器内路径为 /etc/alertmanager/alertmanager.yml,默认配置如下
添加webhook钉钉机器人告警+

global:resolve_timeout: 5mroute:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 5mreceiver: 'webhook'routes:- receiver: webhookgroup_wait: 10s
receivers:
- name: 'webhook'webhook_configs:- url: 'http://localhost:8060/dingtalk/webhook1/send'send_resolved: true
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

配置作用解释:
global: 全局配置,包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。
route: 用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。
receivers: 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式。
inhibit_rules: 抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。

3. Prometheus 配置 AlertManager 告警规则

Prometheus 配置 AlertManager 服务地址以及告警规则,用于prometheus配置文件读取此告警内容

# record-rules.yml记录规则文件
# alert-rules.yml 告警规则文件
[root@localhost rules]# cd /opt/prometheus/rules/
[root@localhost rules]# ll
总用量 20
-rwxrwxrwx 1 root root  6371 12月 15 14:50 alert-rules.yml
-rwxrwxrwx 1 root root 10783 12月 15 14:51 record-rules.yml************************************************************
#上面的是自己添加的规则文件,下面贴一个告警规则可以自己增加# vim node-up.yml
groups:
- name: node-uprules:- alert: node-upexpr: up{job="node-exporter"} == 0for: 15slabels:severity: 1team: nodeannotations:summary: "{{ $labels.instance }} 已停止运行超过 15s!"

更多关于 rule 详细配置可以参考 这里。

rules告警web页面展示

这里说明一下 Prometheus Alert 告警状态有三种状态:Inactive、Pending、Firing。

Inactive:非活动状态,表示正在监控,但是还未有任何警报触发。
Pending:表示这个警报必须被触发。由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所有的验证都通过,则将转到 Firing 状态。
Firing:将警报发送到 AlertManager,它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到 Inactive,如此循环。

4. 触发报警发送钉钉机器人

四. 文档参考

https://www.cnblogs.com/namedgx/p/14919857.html

https://www.jianshu.com/p/9fdd4f3497c6

https://blog.csdn.net/An1090239782/article/details/105195179

https://blog.csdn.net/aixiaoyang168/article/details/98474494

AlertManager 告警信息相关推荐

  1. 【Prometheus】Alertmanager告警全方位讲解

    Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告 ...

  2. Prometheus 之 Alertmanager告警抑制与静默

    一.告警级别 在rules告警规则中,根据不同的阈值制定不同的告警等级. 告警严重度 关键字 严重 critical.disaster.blocker.immediate.fatal.crit.sev ...

  3. 使用Prometheus+Alertmanager告警JVM异常情况

    本文介绍如何使用Prometheus+Alertmanager来对JVM的某些情况作出告警. 本文所提到的脚本可以在这里下载. 摘要 用到的工具: Docker,本文大量使用了Docker来启动各个应 ...

  4. Prometheus之Alertmanager告警

    文章目录 告警流程 部署Alertmanager Alertmanager配置介绍 Prometheus rule文件配置 邮件告警 开启邮箱授权 配置Alertmanager 验证 钉钉告警 钉钉创 ...

  5. 突出告警信息(DBA_OUTSTANDING_ALERTS)

    2019独角兽企业重金招聘Python工程师标准>>> 突出告警信息(DBA_OUTSTANDING_ALERTS) <循序渐进Oracle:数据库管理.优化与备份恢复> ...

  6. 使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  7. 钉钉api 获取 accesstoken_python3自定义告警信息发送至钉钉群

    至从公司正式使用钉钉后,我们告警信息就慢慢从微信转到了钉钉上,首先为什么从微信转到钉钉呢? 1.微信告警需要获取企业微信APPID.APPSECRET.agentid. 2.添加告警接受人时需要在企业 ...

  8. Catlyst 6509告警信息--把trunk口配置成access

    Catlyst 6509告警信息--把trunk口配置成access. Catlyst 6509核心交换告警信息处理--把trunk口配置成access. 2008-12-28    (jj) 1.  ...

  9. 实战技巧:Python爬取OEM 12C上的告警信息并推送至微信企业号

    关注我们获得更多精彩 作者 | 徐美兰 ,邮政软件开发工程师,广东.湖南邮政金融数据中心任职多年,擅长Oracle数据库性能诊断与调优,对基于Python的数据分析与挖掘开发具有浓厚兴趣. 编者说明: ...

  10. pytest-捕获告警信息

    1.告警信息的默认捕获行为 pytest可以自动捕获测试中产生的告警信息,在测试结束后进行展示 import warnings def api_v1():warnings.warn(UserWarni ...

最新文章

  1. dbcp2和dbcp 1.4在API层面的差异
  2. Nacos 1.3.0 发布,一个修炼内功的版本:全新内核构建!
  3. 作业帮冯雪胡不归问题_作业帮推出辅导老师“家庭陪伴计划” 让教育更有温度|讲题...
  4. mongo查看数据库空间大小
  5. mysql游标遍历修改_mysql使用游标遍历数据进行批量针对性更新数据,急求mysql大神解答...
  6. JavaScript 中最​​重要的保留字
  7. C/C assert()函数用法总结与注意事项
  8. 科目三场外考试易出错的环节
  9. python爬取微博内容_请问该如何通过python调用新浪微博的API来爬取数据?
  10. mysql5.1数据库乱码_MySql5.1以上版本中文乱码的解决方法
  11. Qt文档阅读笔记-Label QML Type官方解析及实例
  12. Vue.use自定义自己的全局组件
  13. Ubuntu 修改apt 源
  14. 笔记本电脑下载python视频-学Python买什么笔记本电脑?
  15. brew源码安装mysql_mac使用brew安装mysql
  16. 【OpenCV学习笔记】【教程翻译】五 (车牌识别之OCR分割)
  17. python绘制菱形_用python画菱形
  18. scrapy 爬取煎蛋网图片
  19. thingworx集中常见数据存储方法
  20. python解决猴子偷桃问题_猴子偷桃蟠桃园土地是知道的,不举报是不敢吗?

热门文章

  1. php又拍云,申请又拍云云存储教程(PHP V3.80+)
  2. 微信小程序获取用户微信绑定手机号
  3. ajax 更新局部视图,使用Ajax局部更新Razor页面的实例代码
  4. 计算机存储盘设置密码,如何在USB驱动器上设置密码并教您如何设置
  5. linux服务器双网卡配置,linux 关于主机服务器双网卡bond配置
  6. day_7:代理使用
  7. 论文研读--Masked Generative Distillation
  8. 项目管理知识体系指南(九)项目沟通管理
  9. ZYNQ裸板:串口篇
  10. 四种方法解决微信小程序设置背景图片,哪种最好?