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

注意:之前报警了但是邮件一直没有发送出去,# 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的更多相关文章

  1. prometheus告警模块alertmanager注意事项(QQ邮箱发送告警)

    配置alertmanager的时候,都是根据网上的教程来配置的. 因为我是用QQ邮箱来发送告警的,所以alertmanager.yml的邮箱配置如下: global: resolve_timeout: ...

  2. prometheus + grafana + node_exporter + alertmanager 的安装部署与邮件报警 (一)

    大家一定要先看详细的理论教程,再开始搭建,这样报错后才容易找到突破口 参考文档 https://www.cnblogs.com/afterdawn/p/9020129.html https://www ...

  3. Prometheus告警模型分析

    Prometheus作为时下最为流行的开源监控系统,其庞大的生态体系:包括针对各种传统应用的Exporter,完整的二次开发工具链,与Kubernetes等主流平台的高度亲和以及由此带来的强大的自发现 ...

  4. Prometheus 告警收敛

    Prometheus 告警收敛 告警面临最大问题,是警报太多,相当于狼来了的形式.收件人很容易麻木,不再继续理会.关键的告警常常被淹没.在一问题中,alertmanger在一定程度上得到很好解决. P ...

  5. Prometheus 告警状态了解

    Prometheus 告警状态了解 一旦这些警报存储在Alertmanager,它们可能处于以下任何状态: · Inactive:这里什么都没有发生. · Pending:已触发阈值,但未满足告警持续 ...

  6. 02 . Prometheus告警处理

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

  7. Prometheus监控神器-Alertmanager篇(1)

    本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解. 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警 ...

  8. Prometheus—告警altermanger

    Prometheus-告警altermanger 1.告警altermanger装配 2.告警Mysql 3.Prometheus针对nodes告警规则配置 相关内容原文地址链接: 51CTO:wfw ...

  9. Prometheus告警处理

    在Prometheus Server中定义告警规则以及产生告警,Alertmanager组件则用于处理这些由Prometheus产生的告警.Alertmanager即Prometheus体系中告警的统 ...

随机推荐

  1. Click One客户端安装后将安装目录删除,再从服务器下载安装无法安装解决办法

    报错信息: 平台版本信息 Windows : 6.1.7601.65536 (Win32NT) Common Language Runtime : 4.0.30319.42000 System.Dep ...

  2. 目标检测方法——R-FCN

    R-FCN论文阅读(R-FCN: Object Detection via Region-based Fully Convolutional Networks ) 目录 作者及相关链接 方法概括 方法 ...

  3. 装饰者模式 Decorator

    项目:咖啡计费系统 背景:现有系统中有一个抽象类Beverage,有2个抽象方法GetDescription和Cost. namespace DecoratorPattern { /// <su ...

  4. Redis批量导入数据的方法

    有时候,我们需要给redis库中插入大量的数据,如做性能测试前的准备数据.遇到这种情况时,偶尔可能也会懵逼一下,这里就给大家介绍一个批量导入数据的方法. 先准备一个redis protocol的文件( ...

  5. Git 工作环境配置

    Git config 简单介绍 Git的配置选项有:-system,-global 和 -local. ① system:系统级别的全局设置,对所有电脑用户生效,文件在/etc/gitconfig: ...

  6. JQuery选择器,动画,事件和DOM操作

    JQuery是由JS封装的一些方法,供我们调用,可以快速的实现某些JS功能,实际是JS编写的方法包 将JQuery文件放到JS文件夹下,然后引用到<head></head>中 ...

  7. Winfon 页签切换及窗体控件自适应

    由于公司的业务调整,最近不仅开发bs,还有不熟悉的cs,人手也不足,项目还多,对于cs来说,算是小白,虽然是一个人,也是硬着头皮写,拖拽控件,自定义控件.一个项目下来,对cs有了很深的认识,这里好好感 ...

  8. 高校表白APP-冲刺第二天

    今天进行了第二次会议. 一.任务: 昨日任务完成基本登录注册修改页面布局. 今日任务完成登录界面的基本框架. 明日任务登录修改注册跳转,解决真机运行闪退. 二.遇到的困难: 登录界面按钮布局位置,输入 ...

  9. 使用 lsyncd 同步文件

    https://unix.stackexchange.com/questions/307046/real-time-file-synchronization https://github.com/ax ...

  10. QT 添加外部库文件

    LIBS += D:\Code\Opengltest\OpenGL32.Lib D:\Code\Opengltest\GlU32.Lib LIBS += OpenGL32.Lib GlU32.Lib  ...