在Prometheus的报警系统中,是分为2个部分的, 规则是配置是在prometheus中的, prometheus组件完成报警推送给alertmanager的, alertmanager然后管理这些报警信息,包括静默、抑制、聚合和通过电子邮件、on-call通知系统和聊天平台等方法发送通知。

主要步骤如下

  • 安装和部署alertmanager
  • 在prometheus中配置alertmanager的地址信息。
  • 在prometheus中设置报警规则
  • 在alertmanager配置接受者信息等

安装和部署alertmanager

整体来说,prometheus的所有套件都是比较简单的,这里提供一个简单部署方式。

# 进入下载目录
[root@node00 ~]# cd /usr/src/
# 下载alertmanager
[root@node00 src]# wget https://github.com/prometheus/alertmanager/releases/download/v0.19.0/alertmanager-0.19.0.linux-amd64.tar.gz
# 解压
[root@node00 src]# tar xf alertmanager-0.19..linux-amd64.tar.gz
[root@node00 src]# ll
total
drwxr-xr-x Sep : alertmanager-0.19..linux-amd64
-rw-r--r-- root root Sep : alertmanager-0.19..linux-amd64.tar.gz
-rw-r--r-- root root Sep : a.txt
-rw-r--r-- root root Sep : consul_1..1_linux_amd64.zip
-rw-r--r-- root root Sep : consul-template_0..0_linux_amd64.tgz
drwxr-xr-x. root root Nov debug
drwxr-xr-x. root root Nov kernels
-rw-r--r-- root root Sep : node_exporter-0.18..linux-amd64.tar.gz
-rw-r--r-- root root Sep : prometheus-2.12..linux-amd64.tar.gz # 部署到特定位置
[root@node00 src]# mv alertmanager-0.19..linux-amd64 /usr/local/prometheus/
[root@node00 src]# cd /usr/local/prometheus/
# 查看目录情况
[root@node00 prometheus]# ll
total
drwxr-xr-x Sep : alertmanager-0.19..linux-amd64
lrwxrwxrwx prometheus prometheus Sep : prometheus -> prometheus-2.12..linux-amd64
drwxr-xr-x prometheus prometheus Sep : prometheus-2.12..linux-amd64
# 创建软连接
[root@node00 prometheus]# ln -s alertmanager-0.19..linux-amd64 alertmanager
# 确认软连接
[root@node00 prometheus]# ll
total
lrwxrwxrwx root root Sep : alertmanager -> alertmanager-0.19..linux-amd64
drwxr-xr-x Sep : alertmanager-0.19..linux-amd64
lrwxrwxrwx prometheus prometheus Sep : prometheus -> prometheus-2.12..linux-amd64
drwxr-xr-x prometheus prometheus Sep : prometheus-2.12..linux-amd64
# 准备开机自启配置文件
[root@node00 alertmanager]# cd /usr/lib/systemd/system/
[root@node00 system]# cat alertmanager.service
[Unit]
Description=alertmanager
After=network.target [Service]
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/prometheus/alertmanager
ExecStart=/usr/local/prometheus/alertmanager/alertmanager  --log.level=debug --log.format=json
# ExecStart=/usr/local/prometheus/alertmanager/alertmanager  
[Install] WantedBy=multi-user.target 

# 修改权限
[root@node00 alertmanager]# chown prometheus:prometheus /usr/local/prometheus/alertmanager -R
# 启动
[root@node00 alertmanager]# systemctl restart alertmanager
# 查看状态
[root@node00 alertmanager]# systemctl status alertmanager
# 开机自启
[root@node00 system]# systemctl enable alertmanager

在prometheus集成alertmanager

部署完毕alertmanager, 需要告知prometheus告警信息推送的位置, 通过如下配置即可完成。相对比较简单。

# /usr/local/prometheus/prometheus/prometheus.yml
# 修改此文件中的alerting的配置如下配置
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.100.10:

配置完毕后重启prometheus服务。

创建报警规则

为了能先走通流程,这里的报警规则先弄一个简单一点的。

[root@node00 prometheus]# vim prometheus.yml
rule_files:
- "rules/*rules.yml"
# - "second_rules.yml" [root@node00 prometheus]# mkdir rules
[root@node00 prometheus]# cat rules/node_rules.yml
groups:
- name: node-alert
rules:
- alert: disk-full
expr: - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * ) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"})
for: 1m
labels:
serverity: page
annotations:
summary: "{{ $labels.instance }} disk full "
description: "{{ $labels.instance }} disk > {{ $value }} "

重启prometheus服务,可以在web界面看到如下信息。

查看当前是否有报警信息

目前看是没有磁盘满的, 我们这里配合下触发这个报警规则,

# 注意这个是在节点01上面执行的
[root@node01 ~]# df -h |grep "/$"
/dev/mapper/centos-root 50G .5G 49G % / # 手工生成一个大文件
[root@node01 ~]# dd if=/dev/zero of=bigfile bs=1M count=
+ records in
+ records out
bytes ( GB) copied, 18.8162 s, 2.2 GB/s
# 节点上面确认磁盘是超过我们之前的报警设置值了
[root@node01 ~]# df -h |grep "/$"
/dev/mapper/centos-root 50G 41G .6G % /

等1分钟后在此查看alert信息,如下。

配置消息接收

上面的消息信息已经从prometheus推送给alertmanager了, 我们已经可以在alertmanager的web管理界面看到对应的报警信息,但是我们还没有配置如何让alertmanager把这些信息推送我们的社交软件上面去。

由于邮件系统大家用的比较多,这里就是用qq邮箱进行后续试验。

[root@node00 alertmanager]# cat alertmanager.yml
global:
resolve_timeout: 5m ###################################
smtp_auth_username: "1072892917@qq.com"
smtp_auth_password: "这是你的QQ邮箱授权码而不是密码,切记切记,具体授权码获取看后面的本文末尾介绍有"
#smtp_auth_secret: ""
smtp_require_tls: false
smtp_smarthost: "smtp.qq.com:465"
smtp_from: "1072892917@qq.com"
#################################### route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'email-zhaojiedi' receivers:
- name: 'email-zhaojiedi'
email_configs:
- send_resolved: true
to: @qq.com
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']

配置完毕alertmanager重启alertmanager,可以收到如下邮件信息。

测试邮件发送

使用如下命令触发报警

[root@node01 ~]# dd if=/dev/zero of=bigfile bs=1M count=

注意: 如果调试过程中有问题, 请查看/var/log/message信息,获取alertmanager发送邮件的错误信息。

测试报警恢复通知

使用如下命令清理文件

[root@node01 ~]# >bigfile

可以收到如下邮件:

我在调试过程中常用错误

问题1:

   does not advertise the STARTTLS extension:

解决方案:

  smtp_require_tls: false即可。

问题2:

  email.loginAuth auth: 535 Error

解决方案:

  smtp_auth_password: 这个配置项设置为授权码,而不是QQ邮箱登陆,详细获取授权码参考地址: https://zhidao.baidu.com/question/878811848141402332.html

问题3:

  一切配置正确,就是发不出去。

解决方案:

  查看是否使用了25端口,默认云厂商会禁用25端口, 可以向云厂商申请解封25端口,或者使用465端口。

问题4:

  报警消息能发送,但是报警恢复消息收不到。

解决方案:

  缺少 send_resolved: true 配置文件, 请确保对应email_config配置文件,有此属性。

其他

如果配置中有问题,可以给我留言。

prometheus学习系列九: Prometheus AlertManager使用的更多相关文章

  1. Prometheus学习系列(九)之Prometheus 联盟、迁移

    前言 本文来自Prometheus官网手册 和 Prometheus简介 FEDERATION 允许Prometheus服务器从另一台Prometheus服务器抓取选定的时间序列. 一,用例 联盟有不 ...

  2. Prometheus学习系列(六)之Prometheus 查询说明

    前言 本文来自Prometheus官网手册和 Prometheus简介 Prothetheus查询 Prometheus提供一个函数式的表达式语言PromQL (Prometheus Query La ...

  3. Prometheus学习系列(五)之Prometheus 规则(rule)、模板配置说明

    前言 本文来自Prometheus官网手册1.2.3.4和 Prometheus简介1.2.3.4 记录规则 一.配置规则 Prometheus支持两种类型的规则,这些规则可以定期配置,然后定期评估: ...

  4. Prometheus学习系列(二)之Prometheus FIRST STEPS

    前言 本文来自Prometheus官网手册 和 Prometheus简介 说明 Prometheus是一个监控平台,通过在监控目标上的HTTP端点来收集受监控目标的指标.本指南将向您展示如何使用Pro ...

  5. prometheus学习系列五: Prometheus配置文件

    在prometheus监控系统,prometheus的职责是采集,查询和存储和推送报警到alertmanager.本文主要介绍下prometheus的配置文件. 全局配置文件简介 默认配置文件 [ro ...

  6. prometheus学习系列一: Prometheus简介

    Prometheus简介 prometheus受启发于Google的Brogmon监控系统(相似kubernetes是从Brog系统演变而来), 从2012年开始由google工程师Soundclou ...

  7. Prometheus学习系列(一)之Prometheus简介

    前言 本文来自Prometheus官网手册 和 Prometheus简介 什么是prometheus? Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包.自2012 ...

  8. prometheus学习系列十一: Prometheus 安全

    prometheus安全 我们这里说的安全主要是基本认证和https2种, 目前这2种安全在prometheus中都没有的, 需要借助第三方软件实现, 这里以nginx为例. 基本认证 配置基本认证 ...

  9. prometheus学习系列十一: Prometheus pushgateway的使用

    由于网络问题或者安全问题,可能我们的数据无法直接暴露出一个entrypoint 给prometheus采集. 这个时候可能就需要一个pushgateway来作为中间者完成中转工作.  promethe ...

随机推荐

  1. GOOD BYE OI

    大米饼正式退役了,OI给我带来很多东西 我会的数学知识基本都在下面了 博客园的评论区问题如果我看到了应该是会尽力回答的... 这也是我作为一个OIer最后一次讲课的讲稿 20190731 多项式乘法 ...

  2. 转载:深度学习在NLP中的应用

    之前研究的CRF算法,在中文分词,词性标注,语义分析中应用非常广泛.但是分词技术只是NLP的一个基础部分,在人机对话,机器翻译中,深度学习将大显身手.这篇文章,将展示深度学习的强大之处,区别于之前用符 ...

  3. js追加html元素

    jquery追加html代码,添加元素 .append() //新增仲裁申请人 $("."+inputName).append("<div class=\" ...

  4. C#内存泄露与资源释放 经验总结

    本文链接:http://blog.csdn.net/yokeqi/article/details/41083939 C#相比其他语言,拥有强大的垃圾回收机制,但并不是这样,你就可以对内存管理放任不管, ...

  5. secondNameNode作用

    在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一.从它的名字上看,它给人的感觉就像是NameNode的备份.但它实际上却不是.很多Hadoop的初学者都很疑惑,S ...

  6. SQL系列(九)—— 子查询(subQuery)

    1.子查询 前面的系列介绍的都是简单的查询场景,其中都只涉及到单张表的数据检索.但是在日常是实际应用中,数据模型之间的关系都非常的复杂,数据的需求一般都是来源于多个数据模型之间的组合而成,即对应多张表 ...

  7. 一个 Java 正则表达式例子

    今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看.正好学习 Java 正则表达式,对 group 多留意了一下. 上代码: import java.util.regex ...

  8. - Git常用命令 基础 总结 MD

    目录 目录 Git常用命令 帮助 help 常用操作 初始化 clone init 提交 push 暂存 更新 撤销修改 分支 branch 查看分支 创建分支 切换分支 checkout 删除分支 ...

  9. css元素水平垂直居中

    温习一下元素水平垂直居中的几种方法 元素有具体宽度 1.absolute+负边距 .LV_center{ border: 1px solid red; position: absolute; widt ...

  10. ABP 执行sql语句

    由于业务繁琐,用EF比较麻烦,需要用到sql语句,然后网上找了很久,找到的例子都是老版本的,新版本有先声明已经去掉,不能用了 在这里做个小记 首先注入实例 private readonly IDbCo ...