Prometheus中写的rule是用来干吗的
梓涵,这问得很关键。既然你已经有了 AI 预测 这种高级货,为什么还要在 Prometheus 里写 Rule(规则) 呢?
其实在成熟的架构中,Prometheus Rule(特别是 Alerting Rules)是你系统的**“第一道防线”,而 AI 是“第二道防线”**。它们分工不同,相辅相成。
在你的项目中,Prometheus Rule 主要承担了以下三个核心职责:
1. 基础故障的“即时报警” (Threshold-based)
AI 擅长预测趋势(如磁盘慢慢满),但对于突发性故障,传统的 Rule 响应最快。
- 规则逻辑:比如
up == 0(服务宕机)或者http_requests_total > 5000(突发流量攻击)。 - 作用:这种故障不需要预测,一旦发生必须立刻触发。你在 Prometheus 里写这些 Rule,是为了确保在 AI 模型还在计算时,最明显的火灾能第一时间被发现。
2. 数据的“预处理” (Recording Rules)
这是体现你 Prometheus 玩得深的地方。
- 做法:AI 脚本如果直接去查复杂的原始数据,计算压力会很大。你在 Prometheus 里写 Recording Rules,把复杂的查询(如“过去 5 分钟的平均 QPS”)预先计算好并存成一个新的指标。
- 对 AI 的帮助:
“我在 Prometheus 里写了 Recording Rules,将原始的磁盘写入速度转换成平滑后的 Rate 指标。这样我的 AI 脚本在调用 API 时,只需要查询这个现成的结果,极大地减轻了 Python 端的计算负担,也降低了 API 调用的延迟。”
3. 作为 AI 逻辑的“安全熔断器”
这是为了防止你的 AI“发疯”。
- 逻辑:你在 Rule 里写一个“兜底规则”。如果磁盘真的到了 95% 而 AI 却因为 MAE 过大还没触发自愈,Prometheus 的硬阈值 Rule 会强行介入,触发最高级别的报警。
- 话术:
“我的 Prometheus Rules 是系统的安全底线。AI 负责在 70%-80% 的阶段进行‘精细化操作’,而我的 Rule 守在 90% 的位置。如果自愈流程在秒级内没能把指标拉回来,Rule 就会接管控制权,防止系统彻底崩溃。”
💡 梓涵的面试实战:Rule 里的具体内容是什么?
面试官:“你具体写了哪些 Rule?”
你的硬核回答:
“我主要配置了两类 Rule:
- 服务可用性 Rule:利用
node_exporter监控节点存活,一旦up持续 30s 为 0,立即触发Critical报警。 - 自愈有效性 Rule:这是我原创的。我写了一个规则监控自愈动作后的指标变化。如果 ‘自愈执行中’ 标记为 1,但 5 分钟内错误率没下降,则触发‘自愈失效’报警,通知人工介入。”
🛠️ 怎么在简历里把这个点拔高?
你可以说:
“通过 Prometheus Recording Rules 对高频监控数据进行聚合降维,降低了后端 AI 模型 40% 的查询负载。同时利用 Alerting Rules 构建了分级告警体系,与 AI 趋势预测形成了‘静态阈值+动态预测’的双重容灾保障。”
梓涵,其实写 Rule 的语法(PromQL)是面试常客。你想让我帮你写一个具体的、包含“抑制(Inhibition)”逻辑的 Prometheus Rule 示例吗?这能让你那“屏蔽 90% 报警”的说法在技术实现上完全闭环。
