出差路上也能秒收Prometheus告警,不再焦虑!

6 阅读2分钟

在这里插入图片描述

老周是一家小公司的运维,一个人管着十几台服务器。

这公司规模不大,监控体系倒是搭了一套 Prometheus + Alertmanager,跑在内网服务器上。告警规则也配置得挺完善,CPU 告警、内存告警、磁盘告警,该有的都有。老周平时坐班,有事没事打开后台看一下,倒也相安无事。

直到有一天,老周周五下班约了人吃饭,刚出公司门,手机钉钉震了一下——数据库连接数告警。老周心里一沉,这毛病拖不得,但人已经出来了,笔记本也没带。他边走边给实习生打电话,让对方帮忙登录后台看看能不能先手动处理一下。实习生折腾了半小时,最后还是老周打车回公司亲自解决的。

吃完饭已经九点多,老周坐在车里越想越憋屈:明明 Prometheus 都能检测到问题,偏偏告警推送不到我手机上,监控再准也白搭。

后来他研究了一下,发现问题卡在"最后一公里":Alertmanager 跑在内网,钉钉的 Webhook 又需要公网地址才能调通,两者之间隔着一道内网围墙。VPN 倒是一种方案,但每次还要找 IT 开账号,配置也麻烦,老周不想给自己找更多事。

后来他看到 cpolar 的文档,发现它可以把内网服务映射成公网 TCP 地址,而且不需要改路由器配置,直接在本地跑就行。老周当晚就在那台跑着 Alertmanager 的服务器上装了一个,按照教程配了一条隧道,把 Alertmanager 的端口暴露出去。

配置告警规则的时候,他把原来的邮件通知换成了 prometheus-webhook-dingtalk,填上 cpolar 给的那个公网地址。测试了一下,触发一条测试告警,钉钉秒响。

第二天老周约了人吃饭,吃到一半手机又震了,他掏出手机一看——磁盘空间告警。他当着朋友的面,淡定地点开钉钉,看了看告警详情,判断了一下严重程度,决定吃完再回去处理。朋友问他什么事,他说"服务器发了条消息,不急"。

那顿饭吃得很安心。从那之后,老周出差、加班、节假日,再也没因为告警收不到的问题焦虑过。他说:搞运维的,告警能收到,问题就解决了一半。

运维人减少焦虑的办法可以参考这篇文章:prometheus-webhook-dingtalk实现跨网也能秒收钉钉推送的Prometheus 告警!cpolar内网穿透实验室第70 个成功挑战 - 掘金