Prometheus+alertmanager实现告警的简单验证

prometheus,alertmanager,实现,告警,简单,验证 · 浏览次数 : 51

小编点评

**Prometheus+Alertmanager告警验证背景** **问题:** Port冲突(测试kafka私用)无法正常使用,浪费了至少 1h 的时间。 **原因:** 由于配置中 `--web.listen-address` 和 `--cluster.listen-address` 中的顺序错误,导致 `web.listen-address` 无法指定端口。 **解决方案:** 1. **检查配置文件语法:** - 确保 `web.listen-address` 和 `cluster.listen-address` 的顺序正确。 - 确保 `web.listen-address` 端口正确指定。 2. **修改 `prometheus.yml` 配置:** - 将 `--web.listen-address` 放在 `web.listen-address` 和 `cluster.listen-address` 之间的空格中。 **示例配置文件修改:** ```yaml web.listen-address: ":19093" cluster.listen-address: "0.0.0.0:19094" ``` 3. **重启 prometheus 和 alertmanager 服务:** ``` cd prometheus ./prometheus --config.file=prometheus.yml --storage.tsdb.retention.time=168h --web.listen-address=:19090 --web.enable-lifecycle >/dev/null 2>&1 & nohup ./alertmanager --web.listen-address=\":19093\" --cluster.listen-address=\"0.0.0.0:19094\" --config.file=alertmanager.yml --storage.path=\"/prometheus/alertdata/\" --data.retention=120h >/dev/null 2>&1 & Alertmanager 预警邮件模板vim mail.temp{{ define \"email.to\" }}380235180@qq.com{{ end }}{{ define \"email.title\" }}来自济南小老虎的 {{ $labels.instance }} 实例宕机已经超过 1 分钟。 summary: '实例 {{ $labels.instance }} 宕机'dynamic refreshcurl -XPOST http://127.0.0.1:19093/-/reloadcurl -XPOST http://127.0.0.1:19090/-/reload说明网上资料挺多的,可以简单实现 ```

正文

Prometheus+alertmanager实现告警的简单验证


背景

学习源自: http://www.mydlq.club/article/126/
上午没搞定, 中午睡不着,继续学习处理. 

发现最恶心的有点事 alertmanager的  --cluster.listen-address --web.listen-address 两个参数
很多资料里面只写了第一个参数, 没写第二个参数. 导致我端口冲突(测试kafka私用)
无法正常使用, 浪费了至少 1h 的时间. 还是需要多查看 -h 以及一些帮助文档的. 

服务启动设置.

cd /prometheus/xxxx
nohup ./prometheus --config.file=prometheus.yml --storage.tsdb.retention.time=168h  --web.listen-address=:19090  --web.enable-lifecycle >/dev/null 2>&1 & 

nohup ./alertmanager --web.listen-address=":19093" --cluster.listen-address="0.0.0.0:19094" --config.file=alertmanager.yml --storage.path="/prometheus/alertdata/" --data.retention=120h >/dev/null 2>&1 & 

Alertmanager 预警邮件模板

vim mail.temp

{{ define "email.to" }}380235180@qq.com{{ end }}
{{ define "email.title" }}来自济南小老虎的报警{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
<p>==========<strong>告警通知</strong>==========</p>
<strong>告警程序:</strong> prometheus_alert<br>
<strong>告警级别:</strong> {{ .Labels.severity }}<br>
<strong>告警类型:</strong> {{ .Labels.alertname }}<br>
<strong>告警实例:</strong> {{ .Labels.instance }}<br>
<strong>告警信息:</strong> {{ .Annotations.summary }}<br>
<strong>告警描述:</strong> {{ .Annotations.description }}<br>
<strong>当前状态:</strong> {{ .Status }}<br>
<strong>触发时间:</strong> {{ .StartsAt.Format "2023-01-01 15:04:05" }}<br>
<strong>监控界面地址:</strong> <a href="{{ .GeneratorURL }}">点击跳转</a><br>
{{ end }}
{{ end }}

Alertmanager 预警自己的配置文件

vim alertmanager.yml
# 全局配置
global:
  ## 在没有报警的情况下声明为已解决的时间
  resolve_timeout: 5m
  ## ===配置邮箱===
  ## 配置邮箱 SMTP 服务器地址和端口;
  smtp_smarthost: 'smtp.qq.com:25'
  ## 配置发件人邮箱
  smtp_from: '380235180@qq.com'
  ## 配置发件人邮箱账户
  smtp_auth_username: '380235180@qq.com'
  ## 配置发件人邮箱密码 (这里指的是邮箱授权码,不是登录密码)
  smtp_auth_password: 'xxxxxxxx'
  ## 配置是否使用 TLS 加密
  smtp_require_tls: false

# 自定义邮件通知模板,注意当前目录下可以这样设置. 
templates:
  - '*.temp'

# 告警路由配置
route:
  ## 配置用于分组的标签
  group_by: ['alertname', 'cluster']
  ## 配置同一组告警等待时间。
  ## 用于配置接收到某组中的告警信息后,并不会立即发出告警信息,
  ## 而是等待指定时间,如果有相同组的告警信息,则一起发送告警
  group_wait: 30s
  ## 两组告警的间隔时间
  group_interval: 10m
  ## 重复告警的间隔时间,减少相同邮件的发送频率。
  ## 如果一个报警信息已经发送成功了,等待 repeat_interval 时间来重新发送他们
  ## 但是如果告警在 resolve_timeout 时间内没有重复发送,表示问题已经解决,则
  ## 到 repeat_interval 时间后就不会重新发送
  repeat_interval: 30m
  ## 配置默认接收者,如果一个报警没有被一个 route 匹配,则发送给默认的接收器
  receiver: 'email'
  ## 配置指定组的消息由对应哪个接收者进行处理
  routes:
  - receiver: 'email'
    group_wait: 30s
    ### 配置匹配标签,只有匹配的标签才会使用当前配置中指定的接收者进行处理
    match:
      alertname: email-test

# 告警接收者配置(大部分参数值都是引入模板中定义的变量)
receivers:
- name: 'email'
  email_configs:
    ## 设置接收告警的邮箱,这里既可以直接写接收者邮箱,也可以引入模板中定义的变量
  - to: '{{ template "email.to" }}'
    ## 设置邮箱标题
    headers: { Subject: '{{ template "email.title" }}【告警状态: {{ .Status }}】' }
    ## 设置邮箱内容
    html: '{{ template "email.to.html" .}}'
    ## 是否通知已解决的告警
    send_resolved: true

prometheus的设置

修改配置文件
vim prometheus.yml

############ 添加配置 AlertManager 服务器地址 ###################
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['127.0.0.1:19093']

############ 指定告警规则文件路径位置 ###################
rule_files:
  - "*-rule.yml"

prometheus 设置告警规则

vim email-rule.yml

## 告警规则配置如下,其中告警条件 up > -1 是必然满足的,
## 必定会触发 Prometheus 告警状态为 Firing。
groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up > -1
    for: 1m
    labels:
      severity: page
      ## 配置用于分组的标签
      alertname: email-test
    annotations:
      description: '{{ $labels.instance }} 实例的 {{ $labels.job }} 任务宕机已经超过 1 分钟.'
      summary: '实例 {{ $labels.instance }} 宕机'

动态刷新

curl -XPOST http://127.0.0.1:19093/-/reload
curl -XPOST http://127.0.0.1:19090/-/reload

说明

网上资料挺多的, 可以简单实现 .但是很多写法还是不熟悉, 需要再次验证. 

与Prometheus+alertmanager实现告警的简单验证相似的内容:

Prometheus+alertmanager实现告警的简单验证

# Prometheus+alertmanager实现告警的简单验证 ## 背景 ``` 学习源自: http://www.mydlq.club/article/126/ 上午没搞定, 中午睡不着,继续学习处理. 发现最恶心的有点事 alertmanager的 --cluster.listen-ad

使用Jiralert实现AlertManager告警对接Jira

简介 Alertmanager 处理由客户端应用程序(如 Prometheus server)发送的警报。它负责去重(deduplicating),分组(grouping),并将它们路由(routing)到正确的接收器(receiver)集成,如电子邮件,微信,或钉钉。它还负责处理警报的静默/屏蔽(

使用Prometheus监控docker compose方式部署的ES

需求 收集 ES 的指标, 并进行展示和告警; 现状 ES 通过 docker compose 安装 所在环境的 K8S 集群有 Prometheus 和 AlertManager 及 Grafana 方案 复用现有的监控体系, 通过: Prometheus 监控 ES. 具体实现为: 采集端 el

使用Prometheus监控docker compose方式部署的ES

需求 收集 ES 的指标, 并进行展示和告警; 现状 ES 通过 docker compose 安装 所在环境的 K8S 集群有 Prometheus 和 AlertManager 及 Grafana 方案 复用现有的监控体系, 通过: Prometheus 监控 ES. 具体实现为: 采集端 el

Prometheus AlertManager 生产实践-直接根据 to_email label 发 alert 到对应邮箱

概述 通过之前的文章 - Prometheus Alertmanager 生产配置趟过的坑总结, 我们已经知道 AlertManager 作为告警平台,是非常强大的,可以去重 (deduplicating),分组 (grouping),并将它们路由 (routing) 到正确的接收器 (receiv

AlertManager解析:构建高效告警系统

本文深入探讨了AlertManager的技术细节和实际应用,从基本概念、核心组件、工作流程,到与Prometheus的集成和实战案例,旨在为专业人士提供一个全面的AlertManager技术和应用指南。 关注作者,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经

[转帖]部署Alertmanager

https://flashcat.cloud/docs/content/flashcat-monitor/prometheus/alert/manager-install/ Alertmanager和Prometheus Server一样均采用Golang实现,并且没有第三方依赖。一般来说我们可以通

Prometheus Alertmanager生产配置趟过的坑总结

简介 Alertmanager 处理由客户端应用程序(如 Prometheus server)发送的警报。它负责去重(deduplicating),分组(grouping),并将它们路由(routing)到正确的接收器(receiver)集成,如电子邮件,微信,或钉钉。它还负责处理警报的静默/屏蔽(

[转帖]验证Prometheus alertmanager邮件发送

https://www.cnblogs.com/charlieroro/p/11009493.html 新环境上配置alertmanager时出现了“Client was not authenticated to send anonymous mail during MAIL FROM”错误,但老环

[转帖]alertmanager的使用

https://www.jianshu.com/p/654d59325550 一、Alertanager的安装 1、下载 下载altermanager 2、安装 # 不同的平台下载不同的安装包 wget https://github.com/prometheus/alertmanager/relea