Prometheus+Alertmanager保姆级教程:5分钟搭建手机告警监控系统

实用教程3周前发布 iowen
6 00
Prometheus+Alertmanager保姆级教程:5分钟搭建手机告警监控系统Prometheus+Alertmanager保姆级教程:5分钟搭建手机告警监控系统

# 服务器宕机没人管?用Prometheus+Alertmanager搭建手机告警系统,10分钟搞定

你有没有遇到过这种情况:一台服务器跑着重要业务,你人在外面,突然服务挂了——等你发现的时候可能已经过了半小时。这种场景但凡碰上过一次,就会明白监控这件事拖不得。

市面上监控方案不少,但要么太贵(商业SaaS按节点收费),要么太重(Zabbix部署一套得半天)。今天要聊的这套方案,用的是四个开源组件:Prometheus 负责采集指标和定义告警规则,Node_Exporter 是个轻量级指标暴露器,装在服务器上一键启用,Alertmanager 作为告警中枢把消息推出去,cpolar 做内网穿透让公网能访问到本地服务。整套搭下来,大概 10 分钟能跑通,之后你的 QQ 邮箱就能收到服务器发来的告警邮件了,不管你在哪。

从下面这张图可以快速理解这个工具的核心使用方式:Prometheus 从 Node_Exporter 拉取服务器指标,当指标触发告警规则时,将告警推送给 Alertmanager,Alertmanager 再通过邮件发送到你的 QQ 邮箱,而 cpolar 则负责将内网的 Alertmanager 服务暴露到公网,让你随时随地都能访问。

Prometheus+Alertmanager监控告警系统架构图

最顺手的地方是这条链路的可控性:Prometheus 什么时候查指标、什么条件触发告警、Alertmanager 用什么邮箱发出去、cpolar 映射到哪个公网地址,全部可以自己改配置,不需要依赖任何商业平台。Node_Exporter 占用的资源几乎可以忽略,跑在生产服务器上也不心疼。

这套方案比较适合有 Linux 服务器的开发者、运维新手,或者自己跑着几个小项目的个人玩家。跟着文档一步步走,零基础也能全程实操,不用先懂原理才能动手。

核心功能拆解:这套监控系统到底能做什么

1. 指标采集:Node_Exporter 让服务器“开口说话”

Node_Exporter 是 Prometheus 生态里最常用的指标采集器之一。它安装在服务器上后,会自动暴露 CPU 使用率、内存占用、磁盘 I/O、网络流量、文件系统用量等系统级指标。你不需要写任何采集脚本,它开箱即用。

解决什么问题: 传统运维靠人工巡检,或者写一堆 shell 脚本定时跑,效率低且容易遗漏。Node_Exporter 把服务器状态变成了结构化的指标数据,Prometheus 可以按秒级频率拉取,实时性远超人工。

2. 告警规则:Prometheus 告诉你“什么时候该报警”

Prometheus 的告警规则是用 YAML 定义的,语法简单但灵活。你可以设置“CPU 使用率超过 90% 持续 5 分钟”、“磁盘剩余空间不足 10%”、“服务进程挂了”等规则。每条规则可以指定严重级别(critical/warning),以及告警信息的模板。

解决什么问题: 很多新手监控只看图表,但图表不会主动通知你。告警规则让监控从“被动查看”变成“主动推送”,你不需要一直盯着仪表盘。

3. 告警中枢:Alertmanager 负责“把消息送出去”

Alertmanager 是告警的“调度中心”。它接收 Prometheus 发来的告警,然后根据你配置的路由规则(比如按告警名称分组、按严重级别分流),把告警推送到不同的接收端——邮件、钉钉、Slack、企业微信等。

解决什么问题: 如果直接让 Prometheus 发邮件,配置会变得很混乱,而且无法做告警去重、分组、静默。Alertmanager 把这些脏活累活都干了,你只需要配置一次接收端,后续所有告警都会自动路由。

4. 内网穿透:cpolar 让本地服务“上网”

cpolar 是一个轻量级的内网穿透工具,它可以把本地运行的 Alertmanager 服务(默认端口 9093)映射到一个公网地址。这样即使你的服务器在内网,没有公网 IP,也能通过公网地址访问 Alertmanager 页面,或者让 Prometheus 通过公网地址推送告警。

解决什么问题: 很多个人开发者的服务器在家庭网络或公司内网,没有公网 IP,无法直接暴露服务。cpolar 解决了这个痛点,而且配置简单,一条命令就能启动隧道。

Prometheus+Alertmanager 使用教程:从零搭建手机告警系统

第一步:安装 Node_Exporter 和 Prometheus(前置准备)

在安装 Alertmanager 之前,需要先确保 Node_Exporter 和 Prometheus 已经跑起来。这里简单提一下,因为很多教程都讲过了,但有个常见误区需要提醒。

Node_Exporter 安装:

PR0

Prometheus 安装:

PR1

常见误区: 很多新手会把 Node_Exporter 和 Prometheus 装在同一台机器上,但忘记在 Prometheus 配置文件中添加抓取目标。结果 Prometheus 启动成功了,但页面上看不到任何数据。记得检查 Prometheus 的 Target 页面(http://服务器IP:9090/targets),确保 node_exporter 的状态是 UP。

第二步:安装 Alertmanager

这是今天教程的重点。Alertmanager 负责接收 Prometheus 的告警并推送到邮箱。

PR2

进阶技巧: 建议把 Alertmanager 配置为系统服务,这样服务器重启后会自动启动,不用手动干预。

PR3

写入以下内容:
PR4

然后加载并启动:
PR5

启动后访问 http://服务器IP:9093,应该能看到 Alertmanager 的 Web 界面。

第三步:安装 cpolar 实现公网访问

如果你只是本地测试,这一步可以跳过。但如果你想在手机上查看告警,或者让 Prometheus 通过公网地址推送告警,cpolar 就派上用场了。

PR6

安装完成后,浏览器访问 http://服务器IP:9200,使用 cpolar 官网注册的账号登录。登录后点击“隧道管理” -> “创建隧道”:

  • 隧道名称:alertmanager(自定义)
  • 协议:http
  • 本地地址:9093
  • 域名类型:随机域名
  • 地区:China Top

创建成功后,在“在线隧道列表”中会生成一个公网地址,比如 4246d47e.r2.cpolar.top。现在你可以在任何设备上通过这个地址访问 Alertmanager 了。

常见误区: cpolar 的免费版隧道域名是随机的,每次重启服务都会变。如果你需要固定地址,建议保留一个二级子域名(后面会讲)。

第四步:配置 Prometheus 连接 Alertmanager

这一步很多人会漏掉。Prometheus 默认不会自动把告警发给 Alertmanager,需要在配置文件中显式指定。

编辑 Prometheus 配置文件:
PR7

在文件末尾添加:
PR8

然后重启 Prometheus:
PR9

进阶技巧: 如果你在本地测试,直接用 localhost:9093 即可。但如果你想让其他服务器也能推送告警到这个 Alertmanager,建议用 cpolar 的公网地址。

第五步:编写告警规则

告警规则是 Prometheus 的“大脑”,决定了什么情况下触发告警。

创建规则文件:
PR10

写入以下内容(监控 Node_Exporter 实例是否存活):
PR11

然后在 Prometheus 主配置文件中引用这个规则文件:
PR12

重启 Prometheus 后,打开 Prometheus 的 Alerts 页面(http://服务器IP:9090/alerts),应该能看到刚才定义的规则。

常见误区: 告警规则中的 expr 表达式写错是最常见的问题。建议先在 Prometheus 的 Graph 页面(http://服务器IP:9090/graph)中测试表达式,确认能查到数据后再写到规则文件中。

第六步:配置 Alertmanager 发送邮件到 QQ 邮箱

这是最后一步,也是最关键的一步——让告警真正通知到你。

首先,获取 QQ 邮箱的授权码:

  1. 登录 QQ 邮箱,进入“设置” -> “账户”
  2. 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”
  3. 开启“SMTP服务”,按提示获取授权码(注意:不是 QQ 密码,是授权码)

然后编辑 Alertmanager 配置文件:
PR13

写入以下内容:
PR14

进阶技巧:repeat_interval 控制告警重复发送的间隔。如果设置太短(比如 5 分钟),可能会被邮箱判为垃圾邮件。建议生产环境设置为 1 小时以上。

重启 Alertmanager:
PR15

第七步:验证告警是否生效

现在我们来模拟一个故障:手动停止 Node_Exporter。

PR16

等待 15 秒(规则中设置的 for: 15s),然后查看 QQ 邮箱。你应该会收到一封标题为 [FIRING:1] node_exporter实例宕机 的邮件。

如果没收到,按以下顺序排查:

  1. 检查 Alertmanager 日志:journalctl -u alertmanager -f
  2. 检查 Prometheus 的 Alerts 页面,看告警状态是否为 FIRING
  3. 检查 QQ 邮箱的垃圾邮件箱
  4. 确认授权码是否正确(注意:授权码不是密码)

第八步:保留固定公网地址(可选)

cpolar 免费版的隧道域名是随机的,每次重启都会变。如果你需要固定地址,可以保留一个二级子域名。

  1. 登录 cpolar Web UI,点击左侧“预留”
  2. 选择“保留二级子域名”,地区选 China Top
  3. 设置子域名名称(比如 alertmanager),点击保留
  4. 回到“隧道管理” -> “隧道列表”,找到 alertmanager 隧道,点击“编辑”
  5. 将域名类型改为“二级子域名”,填写刚才保留的子域名
  6. 点击更新

之后,你的 Alertmanager 就有了一个固定的公网地址,不会变了。

行业趋势:为什么这类工具越来越火

最近几年,Prometheus 生态的普及速度非常快。原因有三:

第一,云原生架构的普及。 Kubernetes 成为容器编排的事实标准后,Prometheus 作为 CNCF 毕业项目,天然适配云原生环境。几乎所有 K8s 集群都在用 Prometheus 做监控。
第二,开源替代商业的趋势。 以前很多公司用 Zabbix、Nagios 等传统监控,或者付费的 Datadog、New Relic。但 Prometheus + Grafana 的组合在功能上完全不输商业方案,而且完全免费,对于中小团队和个人开发者来说吸引力巨大。
第三,告警通知的移动化需求。 以前运维人员坐在电脑前看监控大屏,现在大家更习惯在手机上接收告警。Alertmanager 支持邮件、钉钉、Slack、企业微信等多种通知方式,正好满足了移动办公的需求。

如果你正在筛选类似工具,可以参考「国强导航 – 爱国主题实用工具网址大全 – 高效、便捷、更新快」进行系统对比。

使用建议:这套方案适合谁,不适合谁

推荐使用的人群:

  • 有 Linux 服务器的个人开发者,想低成本搭建监控
  • 运维新手,想学习 Prometheus 生态
  • 小团队,预算有限但需要基础监控能力
  • 需要内网穿透的场景(家庭服务器、公司内网)

不推荐使用的人群:

  • 大型企业,需要 SLA 保障和商业支持(建议用 Datadog 或 Grafana Cloud)
  • 对告警延迟要求极高的场景(邮件通知有 1-5 分钟延迟,建议用钉钉或 Slack)
  • 不想折腾配置的用户(建议用 Uptime Kuma 等更轻量的方案)

个人判断: 这套方案最大的价值在于“可控性”和“学习成本”。你花 10 分钟搭起来,后续可以无限扩展——加 Grafana 做可视化、加钉钉机器人做即时通知、加 Prometheus Operator 做 K8s 监控。对于想深入运维领域的人来说,这是一个非常好的起点。

总结

Prometheus + Alertmanager 这套组合,用四个开源组件解决了服务器监控的完整闭环:指标采集、告警规则、消息推送、公网访问。整套方案免费、可控、可扩展,10 分钟就能跑通,之后你的 QQ 邮箱就能收到服务器发来的告警邮件了,不管你在哪。

如果你有 Linux 服务器,或者自己跑着几个小项目,强烈建议花一个下午把这套 Prometheus 监控系统搭起来。它不会让你立刻变成运维大神,但至少能让你在服务器宕机时,第一时间知道——而不是半小时后才发现。

© 版权声明

相关文章

暂无评论

none
暂无评论...