首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从 0 搭建企业私有云第三篇|K8s 告警最小可用闭环:Prometheus + Alertmanager 实战(含邮箱通知)

从 0 搭建企业私有云第三篇|K8s 告警最小可用闭环:Prometheus + Alertmanager 实战(含邮箱通知)

作者头像
一根头发丝的宽度
发布2026-05-06 20:45:53
发布2026-05-06 20:45:53
1000
举报

📖 本文约 1400+ 字 | 阅读约需 7 分钟

你将了解到:

  • Kubernetes 告警体系的完整流程
  • Prometheus 告警规则实战(含核心避坑点)
  • 邮箱告警配置(可直接用于生产)
  • 一套完整、可复现的告警实验流程

一、前言:为什么你必须掌握告警系统?

在 Kubernetes 集群中,最可怕的不是故障,而是:

👉 出了问题,你却最后一个知道

一个成熟的监控体系,必须具备这样的闭环:

代码语言:javascript
复制
发现问题 → 判断问题 → 通知正确的人 → 快速处理

而其中最关键、也最容易被卡住的一环,就是:

👉 Alertmanager —— 告警中枢


二、K8s 告警体系架构(一张图看懂)

代码语言:javascript
复制
Exporter → Prometheus → Alert Rules → Alertmanager → Email
  • Prometheus:采集指标 + 判断异常
  • Alertmanager:分组 / 路由 / 抑制 / 通知
  • Email:让告警真正触达负责人

三、实验环境说明

本文基于以下环境,如果你已搭建完成,可直接上手:


四、第一步:确认 Alertmanager 可访问

代码语言:javascript
复制
kubectl port-forward svc/alertmanager-operated 9093:9093 -n monitoring

浏览器访问:

代码语言:javascript
复制
http://localhost:9093

🔔 提示:如果没有 UI 界面,无法使用浏览器访问。可在本地设备使用 ssh (ssh -L 9093:localhost:9093 xxx@192.168.xx.xx)访问目标机,然后在本地使用浏览器访问。


五、第二步:创建一个“必触发”告警(关键技巧)

很多人在这一步被卡住,因为默认规则太难触发。

👉 我们直接造一个 100% 触发的告警,先让链路跑通。

创建规则

代码语言:javascript
复制
apiVersion: monitoring.coreos.com/v1
kind:PrometheusRule
metadata:
name:test-alert
namespace:monitoring
labels:
    release:monitoring   # ⚠️ 核心避坑点,务必加上
spec:
groups:
-name:test.rules
    rules:
    -alert:AlwaysFiring
      expr:vector(1)
      for:30s
      labels:
        severity:warning
      annotations:
        description:"This is a test alert"
代码语言:javascript
复制
kubectl apply -f test-alert.yaml

⚠️ 核心避坑(非常重要)

如果你发现:

❌ Prometheus 里看不到这条规则

👉 99% 是因为缺少了以下 label:

代码语言:javascript
复制
labels:
  release: monitoring

因为 Prometheus 通过 selector限制了只加载带有该 label 的规则。


六、第三步:验证告警是否触发

访问 Prometheus:

代码语言:javascript
复制
http://localhost:9090

进入 Alerts页面,你会看到:

代码语言:javascript
复制
AlwaysFiring (Firing)

七、第四步:确认 Alertmanager 收到告警

访问:

代码语言:javascript
复制
http://localhost:9093

你会看到:

代码语言:javascript
复制
AlwaysFiring
State: Firing

八、第五步:配置邮箱告警(核心实战)

1. 准备 SMTP(以 QQ 邮箱为例)

你需要准备:

  • 邮箱账号
  • 开启 SMTP 服务
  • 获取 授权码(不是邮箱密码)

2. 配置 Alertmanager

代码语言:javascript
复制
global:
  resolve_timeout:5m

smtp_smarthost:'smtp.qq.com:465'
smtp_from:'xxxx@qq.com'
smtp_auth_username:'xxxx@qq.com'
smtp_auth_password:'你的授权码'
smtp_require_tls:true

route:
receiver:"email"
group_by:["alertname"]
group_wait:10s
group_interval:30s
repeat_interval:1m

receivers:
-name:"email"
email_configs:
-to:"xxxx@qq.com"
    send_resolved:true

3. 更新配置

代码语言:javascript
复制
kubectl create secret generic alertmanager-monitoring-kube-prometheus-alertmanager \
--from-file=alertmanager.yaml -n monitoring \
--dry-run=client -o yaml | kubectl apply -f -

4. 重启 Alertmanager

代码语言:javascript
复制
kubectl delete pod -l app.kubernetes.io/name=alertmanager -n monitoring

九、第六步:验证邮箱告警

等待 30 秒 ~ 1 分钟,你将收到类似下面的邮件:

代码语言:javascript
复制
[FIRING] AlwaysFiring

十、常见问题排查(实战价值极高)

现象

排查方向

Prometheus 看不到规则

检查 release: monitoringlabel

收不到邮件

kubectl logs -n monitoring alertmanager-xxx

SMTP 认证失败

确认使用的是 授权码,不是邮箱密码

邮件进了垃圾箱

很常见,记得检查垃圾箱并设置为白名单


十一、实验成果总结

到这里,你已经完成了一套完整的告警链路:

代码语言:javascript
复制
Prometheus → Alertmanager → Email

经过此实验,你现在具备的能力:

  • ✅ 告警规则设计与调试
  • ✅ Alertmanager 配置与更新
  • ✅ 告警链路独立排错
  • ✅ 邮箱通知接入

十二、下一步方向

如果想让告警体系更贴近生产,我们可以继续深入:

1. 告警分级

代码语言:javascript
复制
warning / critical

2. 告警分组优化

避免“告警风暴”,让通知更聚合

3. 接入企业微信 / 钉钉

更适合生产环境的通知渠道


十三、写在最后

如果你已经按照本文完成了实验,欢迎在评论区留言:

👉 “告警打通成功”

后续我会继续更新:

  • Alertmanager 高级路由策略
  • Kubernetes 真实生产告警设计
  • Grafana 可视化实战

⚠️ 注意:测试完毕记得关闭告警测试,不然邮箱可能会被打爆。 kubectl delete prometheusrule test-alert -n monitoring

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一根头发丝的宽度 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言:为什么你必须掌握告警系统?
  • 二、K8s 告警体系架构(一张图看懂)
  • 三、实验环境说明
  • 四、第一步:确认 Alertmanager 可访问
  • 五、第二步:创建一个“必触发”告警(关键技巧)
    • 创建规则
    • ⚠️ 核心避坑(非常重要)
  • 六、第三步:验证告警是否触发
  • 七、第四步:确认 Alertmanager 收到告警
  • 八、第五步:配置邮箱告警(核心实战)
    • 1. 准备 SMTP(以 QQ 邮箱为例)
    • 2. 配置 Alertmanager
    • 3. 更新配置
    • 4. 重启 Alertmanager
  • 九、第六步:验证邮箱告警
  • 十、常见问题排查(实战价值极高)
  • 十一、实验成果总结
  • 十二、下一步方向
    • 1. 告警分级
    • 2. 告警分组优化
    • 3. 接入企业微信 / 钉钉
  • 十三、写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档