前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus + AlertManager实现告警推送

Prometheus + AlertManager实现告警推送

作者头像
用户8851537
修改2021-08-19 14:45:39
4.3K0
修改2021-08-19 14:45:39
举报
文章被收录于专栏:用户8851537的专栏

告警触发流程

prometheus -> 触发规则(rules) -> 超出持续时间(for) -> alertmanager -> 分组|抑制|静默 -> 媒体类型 ->邮件|钉钉|微信等 正常状态为Inactive,当触发告警规则后进入Pending状态,并等待告警规则设置的for值,如果超过设置的for值状态未恢复为Inactive则转至Firing,并推送至alertmanager

Alertmanager部署

GitHub:https://github.com/prometheus/alertmanager 首先在GitHub alertmanager Releases上下载对应系统版本的alertmanager,这里以alertmanager-0.21.0.linux-amd64.tar.gz为示例进行部署

代码语言:javascript
复制
# 下载alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
# 解压
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
# 重命名文件夹方便输入与记忆
mv alertmanager-0.21.0.linux-amd64.tar.gz alertmanager
# 进入安装目录
cd alertmanager
# 以下为启动命令,可暂时不执行
nohup /root/alertmanager/alertmanager --web.listen-address=:9093 --config.file=/root/alertmanager/alertmanager.yml &

Alertmanager配置

代码语言:javascript
复制
vim alertmanager.yml

# 全局配置
global:
  # 该项表示告警标记转为恢复标记后保持多久发送恢复通知,默认为5分钟
  resolve_timeout: 10s
  # smtp服务器,如果465以及25端口报错可以尝试587端口,25端口需要将tls设置为false
  smtp_smarthost: 'smtp.zoho.com.cn:587'
  # 邮件来自
  smtp_from: 'i@test.com'
  # 邮箱账户
  smtp_auth_username: 'i@test.com'
  # 邮箱密码或授权码
  smtp_auth_password: 'passwd'
  # 启用TLS/SSL
  smtp_require_tls: true
# 定义HTML邮件模板
templates:
  - 'template/*.tmpl'
# route用来设置报警的分发策略
route:
  group_by: ['alertname']
  # 组告警等待时间,告警产生后等待10s,如果有同组告警一起发出
  group_wait: 10s
  # 两组告警的间隔时间
  group_interval: 10s
  # 重复告警的间隔时间,减少相同邮件的发送频率
  repeat_interval: 1h
  # 告警推送渠道
  receiver: 'email'
# 告警推送方式与渠道,route->receiver 对应 receivers->name
receivers:
  - name: 'email'
    email_configs: 
    # 接收人
    - to: 'test@qq.com'
      # 设定邮箱的内容模板,不设置则使用默认模板
      # html: '{{ template "test.html" . }}'
      # 接收邮件的标题
      headers: { Subject: " 报警邮件"}
      # 告警消除是否通知
      send_resolved: true
  - name: 'web.hook'
    webhook_configs:
    - url: 'http://127.0.0.1:5001/'
# 告警抑制规则
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

完成以上配置后可以启动alertmanager

代码语言:javascript
复制
nohup /root/alertmanager/alertmanager --web.listen-address=:9093 --config.file=/root/alertmanager/alertmanager.yml &

Prometheus配置

代码语言:javascript
复制
# 在prometheus目录下创建rules目录,目录根据需要自定义
mkdir rules
# 编辑prometheus配置文件
vim prometheus.yml

# Alertmanager配置
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.80.104:9093

# 加载告警规则文件
rule_files:
  - 'rules/*.yml'

告警规则文件编写

代码语言:javascript
复制
cd prometheus/rules
# 创建规则文件node_down.yml

groups:
- name: node_down
  rules:
  # 告警名称
  - alert: 节点离线告警
    # 告警的判定条件,参考Prometheus高级查询来设定
    expr: probe_success == 0
    # for表示告警持续时间,超过这个时间才会发送给alertmanager
    for: 10s
    # 标签项
    labels:
      severity: warning
    annotations:
      # 尽可能把详细告警信息写入summary标签值,因为告警短信/邮件/钉钉发送的内容使用了summary标签中的值
      summary: "Instance {{ $labels.instance }} 离线"
      # 这是一条告警描述
      description: "这是一条告警描述信息"

可使用以下方式对规则文件进行语法检查

代码语言:javascript
复制
./promtool check rules rules/node_down.yml

测试邮件推送

告警未触发状态

监控指标

Alertmanager此时未收到告警

此时我们手动断开一个监控点,告警产生

告警邮件产生

告警恢复邮件,需要配置 send_resolved: true

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 告警触发流程
  • Alertmanager部署
  • Alertmanager配置
  • Prometheus配置
  • 告警规则文件编写
  • 测试邮件推送
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档