【2023】Prometheus-接入Alertmanager并实现邮件告警通知

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 【2023】Prometheus-接入Alertmanager并实现邮件告警通知

0.alertmanager是什么?为什么使用它?有什么好处

Alertmanager是一个开源的警报路由器,用于处理和路由来自多个来源的警报。它适用于大规模的分布式系统和微服务架构中,可以帮助开发者、运维人员和SRE团队管理和处理警报。

使用Alertmanager可以实现以下好处:

  1. 集中式的警报处理:通过Alertmanager,可以将来自多个应用、服务、数据库等的警报集中在一个地方进行处理和管理。
  2. 自定义警报规则:Alertmanager提供了强大的警报规则设置功能,可以自定义警报的阈值、策略和处理方式等。
  3. 灵活的警报路由:Alertmanager支持灵活的警报路由设置,可以将不同类型的警报发送给不同的目标,如邮件、Slack、PagerDuty等。
  1. 可视化警报状态:Alertmanager提供了友好的UI界面,可以直观地查看警报状态、历史记录和相关信息,便于问题排查和分析。

总之,使用Alertmanager能够提高运维效率,降低故障响应时间,确保系统的稳定性和可靠性。

1.使用二进制方式安装Alertmanager

  • 下载安装包
wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
  • 将安装包解压至/data目录
[root@alert ~]# mkdir /data
[root@alert ~]# tar xf alertmanager-0.25.0.linux-amd64.tar.gz -C /data/
[root@alert ~]# cd /data/
[root@alert data]# ln -s alertmanager-0.25.0.linux-amd64/ alertmanager

添加Alertmanager为系统服务

  vi /usr/lib/systemd/system/alertmanager.service 
[Unit]
Description=Prometheus Alertmanager Service daemon
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/data/alertmanager/alertmanager\
          --config.file=/data/alertmanager/alertmanager.yml\
          --storage.path=/data/alertmanager/data/\
          --data.retention=120h\
          --web.external-url=http://192.168.10.5:9093\
          --web.listen-address=:9093
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@alert system]# systemctl daemon-reload 
[root@alert system]# systemctl start alertmanager
[root@alert system]# systemctl enable alertmanager.service 

可以在浏览器查看状态:IP:9093/#/status

830aad585f764670be42acfd3f71842b.png

2.Alertmanager配置

  • 修改alertmanager配置文件
  vim /data/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.163.com:465'
  smtp_from: '自己邮箱@163.com'
  smtp_auth_username: '自己邮箱@163.com'
  smtp_auth_password: 'PLAPPSJXJCQABYAF'
  smtp_require_tls: false
templates:
  - 'template/*.tmpl'
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 20m
  receiver: 'email'
receivers:
  - name: 'email'
    email_configs:
      - to: '接收人邮箱@qq.com'
        html: '{{ template "test.html" . }}'
        send_resolved: true

注意:上文中的test.hml要和下文define中的名字一样

  • 创建告警模板
[root@alert ~]# cd /data/alertmanager
[root@alert alertmanager]# mkdir template
[root@alert alertmanager]# vim test.tmpl
{{ define "test.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= ERROR ==========<br>
告警名称:{{ .Labels.alertname }}<br>
告警级别:{{ .Labels.severity }}<br>
告警机器:{{ .Labels.instance }} {{ .Labels.device }}<br>
告警详情:{{ .Annotations.summary }}<br>
告警时间:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
========= END ==========<br>
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= INFO ==========<br>
告警名称:{{ .Labels.alertname }}<br>
告警级别:{{ .Labels.severity }}<br>
告警机器:{{ .Labels.instance }}<br>
告警详情:{{ .Annotations.summary }}<br>
告警时间:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
恢复时间:{{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
========= END ==========<br>
{{- end }}
{{- end }}
{{- end }}
[root@alert ~]# systemctl restart alertmanager

3.alert接入prometheus

  • 修改Prometheus配置文件:prometheus.yml以下内容加入到配置文件的合适位置
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 192.168.10.5:9093
rule_files:
  - "/data/prometheus/rules/*_rules.yml"
  - job_name: "alertmanager"
    static_configs:
      - targets: ["192.168.10.5:9093"]

4.创建告警配置文件(在prometheus服务器)

  • 创建目录
mkdir -p /data/prometheus/rules

创建告警规则,以node为例

  vim /data/prometheus/rules/node_rules.yml
groups:
  - name: node_status
    rules:
    - alert: status
      expr: up == 0
      for: 1m
      labels:
        severity: critical
      annotations:
        discription: "Node has been down for more than 2 minutes"
        summary: "Node Down"

5.测试告警

  • 重启Prometheus服务,关闭一个node节点测试
[root@localhost rules]# systemctl restart prometheus.service

此时收到一个node 挂掉的邮件

438deed935a545b785152fb3af3540f3.png

将节点恢复,然后会收到一个恢复邮件

b99b95ed52684483af7a43e300f3376c.png

  • 此部分内容为简单实现基于alertmanager的邮件告警。
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
178 22
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
2809 2
Prometheus的告警规则
Prometheus的告警规则
354 11
Prometheus的告警配置
【10月更文挑战第31天】Prometheus的告警配置
282 1
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
75 11
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
207 7
数据采集监控与告警:错误重试、日志分析与自动化运维
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
791 3
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
763 0
云监控:引领未来监控技术的新篇章
传统监控系统需要投入大量的人力物力进行建设和维护,而云监控则通过云计算平台的按需付费特性降低了建设和维护成本。用户只需根据实际需求购买相应的服务和资源即可实现监控功能,无需担心设备升级、维护等问题。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问