一文带你简单玩转AlertManager警报组件

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 一文带你简单玩转AlertManager警报组件

写在开篇的警报概述

!! Prometheus警报分为两部分:警报规则、警报管理器(AlertManager),警报规则向警报管理器发送警报,由Alertmanager组件管理警报消息,比如分组、抑制、去重等。

主要配置步骤

设置警报和通知的主要步骤是:

  1. 安装和配置警报管理器(Alertmanager)
  2. 配置Prometheus对接Alertmanager(警报组件)
  3. 在Prometheus中创建警报规则

开始安装警报管理器

  1. 下载警报管理
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
  1. 启动
./alertmanager --config.file=alertmanager.yml

!! 说明:通过./alertmamager --help可查看到一堆的启动参数,请根据需求增加启动参数即可。

配置警报规则

  1. 在Prometheus服务器上的prometheus.yml配置文件中引入警报规则文件alert.yml
global:
  scrape_interval:     1s
  evaluation_interval: 1s
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093
rule_files:
  - "./alert.yml"  # 此处引入
scrape_configs:
  - job_name: 'prometheus_ser'
    static_configs:
    - targets: ['192.168.11.159:9090']
  - job_name: 'mysql8.0_192.168.11.150'
    static_configs:
    - targets: ['192.168.11.150:9104']
  - job_name: 'node_192.168.11.159'
    static_configs:
    - targets: ['192.168.11.159:9100']
  1. 在Prometheus服务器上创建alert.yml警报规则配置文件并写入警报规则
groups:
- name: Disk alert related group
  rules:
  - alert: sdaDiskWriteTime
    expr: node_disk_write_time_seconds_total{device="sda"} > 5  # 这是在node_export中的一个指标
    for: 1s
    labels:
      severity: disk
    annotations:
      summary: "sda磁盘写入总耗时"
      description: "sda磁盘写入总耗时大于20秒"
  1. 访问prometheus的web页面中可查看rules

  1. 访问警报组件的WEB页面中查看已经触发的告警

自定义告警配置

!! 使用python手写webhook完成告警接收,以及编写推送逻辑,可推送到其他第三方平台、微信、钉钉、邮件等。

  1. 在警报组件中配置告警消息发往的接口地址, 让其可以调用接口,配置方式很简单,只需要指定一下接口地址即可
  • alertmanager.yml
global:
  resolve_timeout: 5m
route:
  # 不使用分组
  group_by: [...]
  group_wait: 1s
  group_interval: 1s
  repeat_interval: 1000d
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://127.0.0.1:5001/webhook'  # 这是接口地址
    send_resolved: true
  1. 用python编写一个最简单的接口,让其可以接收来自alertmanager的警报消息
  • webhook.py
import json
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
    data = json.loads(request.data)
    print(data)
    return 'ok'
if __name__ == '__main__':
    app.run('0.0.0.0', 5001)
  1. 此时prometheus有告警,就会看到prometheus传过来的数据格式是什么样的了
{'receiver': 'web\\.hook', 'status': 'firing', 'alerts': [{'status': 'firing', 'labels': {'alertname': 'sdaDiskWriteTime', 'device': 'sda', 'instance': '192.168.11.159:9100', 'job': 'node_192.168.11.159', 'severity': 'disk'}, 'annotations': {'description': 'sda磁盘写入总耗时大于5秒', 'summary': 'sda磁盘写入总耗时'}, 'startsAt': '2021-12-01T02:14:17.351244754Z', 'endsAt': '0001-01-01T00:00:00Z', 'generatorURL': 'http://prometheus-ser01:9090/graph?g0.expr=node_disk_write_time_seconds_total%7Bdevice%3D%22sda%22%7D+%3E+5&g0.tab=1', 'fingerprint': '438df1cd4511a1a4'}], 'groupLabels': {'alertname': 'sdaDiskWriteTime', 'device': 'sda', 'instance': '192.168.11.159:9100', 'job': 'node_192.168.11.159', 'severity': 'disk'}, 'commonLabels': {'alertname': 'sdaDiskWriteTime', 'device': 'sda', 'instance': '192.168.11.159:9100', 'job': 'node_192.168.11.159', 'severity': 'disk'}, 'commonAnnotations': {'description': 'sda磁盘写入总耗时大于5秒', 'summary': 'sda磁盘写入总耗时'}, 'externalURL': 'http://prometheus-ser01:9093', 'version': '4', 'groupKey': '{}:{alertname="sdaDiskWriteTime", device="sda", instance="192.168.11.159:9100", job="node_192.168.11.159", severity="disk"}', 'truncatedAlerts': 0}

写在最后

!! 因笔者时间有限,工作很忙,抽空发发水文。关于更多的警报消息的管理功能,后续会逐一分享,今晚就此搁笔。望多多关注、点赞、转发!

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
2月前
|
Prometheus Kubernetes Cloud Native
Prometheus的告警配置
【10月更文挑战第31天】Prometheus的告警配置
55 1
|
2月前
|
Prometheus Cloud Native
Prometheus的告警处理
【10月更文挑战第31天】Prometheus的告警处理
41 3
|
5月前
|
存储 Prometheus 监控
Prometheus 的报警机制:Alertmanager 的配置与使用
【8月更文第29天】Prometheus 是一个非常强大的监控系统,它不仅能够收集和存储时间序列数据,还能通过 Alertmanager 提供灵活的报警机制。Alertmanager 负责接收 Prometheus 发送的警报,并根据配置的规则执行相应的通知动作。本文将详细介绍如何配置 Alertmanager 以及如何使用它来实现基于 Prometheus 指标的报警通知。
1020 0
|
6月前
|
Kubernetes 监控 数据安全/隐私保护
普罗米修斯监控k8s
普罗米修斯监控k8s
99 1
|
8月前
|
Prometheus 监控 Cloud Native
使用Prometheus配置监控与报警
通过以上步骤,你可以使用Prometheus和Alertmanager实现监控和报警配置,以确保系统在出现性能问题或故障时能够及时通知相关人员。欢迎关注威哥爱编程,一起学习成长。
325 0
|
8月前
|
Prometheus 监控 Cloud Native
使用 Prometheus 配置 SLO 监控和告警
使用 Prometheus 配置 SLO 监控和告警
|
Prometheus Kubernetes 监控
K8s 安装 alertmanager 及配置
K8s 安装 alertmanager 及配置
330 1
|
编解码 监控 前端开发
Sentry 监控 - Alerts 告警
Sentry 监控 - Alerts 告警
708 0
Sentry 监控 - Alerts 告警
|
Prometheus Kubernetes Cloud Native
报警神器Alertmanager发送报警到多个渠道
报警神器Alertmanager发送报警到多个渠道
|
Prometheus 运维 Cloud Native
【2023】Prometheus-接入Alertmanager并实现邮件告警通知
【2023】Prometheus-接入Alertmanager并实现邮件告警通知
482 0