文章目录

  • 一、简介
  • 二、安装Alertmanager
  • 三、报警规则
  • 四、通知规则
    • 4.1 钉钉告警
    • 4.2 企业微信告警

一、简介

AlertmanagerPrometheus的一个报警通知组件,需要结合Prometheus使用。Prometheus将监测到的异常事件发送给AlertmanagerAlertmanager发送异常事件的通知(邮件、webhook等)。

Prometheus安装文档

二、安装Alertmanager

Alertmanager下载地址

# 解压安装包
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
# 文件列表
./
├── alertmanager       # alertmanager的启动程序
├── alertmanager.yml   # alertmanager的配置文件
├── amtool
├── LICENSE
└── NOTICE

三、报警规则

修改prometheus的配置文件prometheus.yml

# Alertmanager configuration
# 改为alertmanager的地址
alerting:alertmanagers:- static_configs:- targets:- 192.168.1.23:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
# 指定规则文件
rule_files:- rules/*.yml

rules目录中添加.yml结尾的规则文件,prometheus会根据这些规则配置文件进行监控报警。
模版:

# 一个配置文件里包含多个组
groups:
- name: example # 组名# 触发规则列表rules:- alert: HighErrorRate # 警告名expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 # 触发规则for: 10m # 规则触发持续多长时间发送告警# 告警附加标签labels:severity: page# 告警附加注释annotations:summary: High request latency
  • node_alived.yml
groups:
- name: 实例存活告警规则rules:- alert: 实例存活告警expr: up == 0for: 1mlabels:user: prometheusseverity: warningannotations:summary: "主机宕机 !!!"description: "该实例主机已经宕机超过一分钟了。"
  • memory_over.yml
groups:
- name: 内存报警规则rules:- alert: 内存使用率告警expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 50for: 1mlabels:severity: warningannotations:summary: "服务器可用内存不足。"description: "内存使用率已超过50%(当前值:{{ $value }}%)"
  • cpu_over.yml
groups:
- name: CPU报警规则rules:- alert: CPU使用率告警expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[1m]) )) * 100 > 50for: 1mlabels:severity: warningannotations:summary: "CPU使用率正在飙升。"description: "CPU使用率超过50%(当前值:{{ $value }}%)"
  • disk_over.yml
groups:
- name: 磁盘使用率报警规则rules:- alert: 磁盘使用率告警expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 80for: 20mlabels:severity: warningannotations:summary: "硬盘分区使用率过高"description: "分区使用大于80%(当前值:{{ $value }}%)"

热加载配置

curl -XPOST 127.0.0.1:9090/-/reload

登陆prometheus的UI界面,查看Alerts规则

  • Inactive:没有触发阈值
  • Pending:已触发阈值但未满足告警持续时间
  • Firing:已触发阈值且满足告警持续时间

四、通知规则

4.1 钉钉告警

docker安装钉钉报警插件,启用一个名为:webhook1的钉钉机器人。

docker run -d \
--name dingtalk \
--restart always \
-p 8060:8060 \
timonwong/prometheus-webhook-dingtalk:master \
--ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=xxxx(自己的钉钉机器人token)"

设置alertmanager.ymlroutereceivers

route属性用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。

global:resolve_timeout: 5m
route:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 1hreceiver: 'web.hook'
receivers:
- name: 'web.hook'webhook_configs:- send_resolved: trueurl: 'http://192.168.1.23:8060/dingtalk/webhook1/send'
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

启动alertmanager测试

4.2 企业微信告警

参考:https://my.oschina.net/guyongquan/blog/3128025

docker run -d --name wechat \
--restart always -p 8080:80 \
guyongquan/webhook-adapter \
--adapter=/app/prometheusalert/wx.js=/wx=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx(自己的微信机器人key)
global:resolve_timeout: 5m
route:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 1hreceiver: 'web.hook'
receivers:
- name: 'web.hook'webhook_configs:- send_resolved: true- url: 'http://192.168.1.23:8080/adapter/wx'
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

Prometheus学习笔记(三)Alertmanager报警模块集成钉钉/企业微信机器人相关推荐

  1. 持续集成之群聊机器人消息推送:钉钉 vs 企业微信

    企业微信和钉钉都有面向群的消息推送机器人,两者的使用非常相近,也有一些细节上的特性的区别,这篇文章将结合前面的使用示例进行总结. 使用方式 不同点 企业微信:先创建群,然后在群中添加机器人,可添加多个 ...

  2. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  3. 小猫爪:S32K3学习笔记19-S32K3之如何集成SPD进自己的工程

    小猫爪:S32K3学习笔记19-S32K3之如何集成SPD进自己的工程 1 前言 2 EB的配置 3 S32DS的配置 4 代码的集成 END 1 前言   前面已经将S32K3的与功能安全相关的硬件 ...

  4. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  5. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  6. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  7. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  8. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  9. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  10. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

最新文章

  1. java 根据ip获取mac地址_利用java如何根据IP获取mac地址
  2. 曲线图实现,可滚动曲线图,自定义数据
  3. iPhone销售额下滑12%,但AirPods和手表救了苹果
  4. DedeCms织梦发布文章时输入Tag标签逗号自动变成英文标点的方法
  5. 自定义模板类(循环队列)
  6. DG备库磁盘空间满导致无法创建归档
  7. Ucenter社区服务搭建
  8. idea配置tomcat里你不知道的小秘密
  9. [蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)
  10. tina中信号带宽_如何评测示波器带宽
  11. dva源码解析(一)
  12. 概率论与数据统计在分类预测中的原理介绍(信息增益、交叉熵等)
  13. 【线性系统理论】0.线性系统基本概念(1)
  14. 微信小程序打开手机的手电筒
  15. 使用requests爬取电影天堂数据,用lxml和Xpath
  16. 邮箱手动修改服务器配置,邮箱登录手动修改服务器配置
  17. 解决office一些文档不能显示在win7任务栏最近列表中的方法
  18. Hibernate查询Query By Criterial
  19. C#中命名参数和可选参数
  20. 使用Taro小程序框架开发一个学习、刷题、论坛、聊天交流的微信小程序

热门文章

  1. java春招面试冲刺系列:redis基础知识详细解析
  2. lkwa-blind-rce盲打rce
  3. 公路: 工程质量评定(JTG F80/1-2004)工程划分
  4. 智慧楼宇实现多场景下的精细化管理
  5. Auto.js Pro安卓免ROOT引流脚本开发系列教程07微信运动点赞(4)
  6. Lumentum22045498激光器
  7. 安卓推送平台选择及接入简介
  8. Vue axios基础
  9. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~20开始游戏-对话处理
  10. 分析wav音频结构实现音频截取、音频二倍速播放、倒播和音频合并(C#实现)