PromCopilot: Simplifying Prometheus Metric Querying in Cloud Native Online Service Systems via Large Language Models

本文提出了基于大语言模型的 PromCopilot 框架,通过结合知识图谱与协同推理机制,将工程师的自然语言问题自动转化为 Prometheus 查询语言(PromQL),从而简化了云原生在线服务系统中的指标查询过程,并构建了首个 Text-to-PromQL 基准数据集以验证其有效性。

Chenxi Zhang, Bicheng Zhang, Dingyu Yang, Xin Peng, Miao Chen, Senyu Xie, Gang Chen, Wei Bi, Wei Li

发布于 Thu, 12 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 PromCopilot 的新工具,它的核心使命是:让工程师不用写复杂的代码,直接用“人话”就能从庞大的监控系统中查到自己想要的信息。

为了让你更容易理解,我们可以把这篇论文的内容想象成在一个超级巨大的、自动化的物流仓库里发生的故事。

1. 背景:那个让人头秃的“超级仓库”

想象一下,现代互联网服务(比如淘宝、微信、抖音)就像一个超级巨大的自动化物流仓库

  • 货物:就是各种数据(比如 CPU 用了多少、内存剩多少、有多少人在访问)。
  • 监控员:就是工程师们,他们负责盯着仓库,确保一切运转正常。
  • Prometheus(普罗米修斯):这是目前最流行的“仓库管理系统”,它记录了仓库里每一秒发生的所有事情。

现在的痛点是什么?
在这个仓库里,数据多到爆炸。工程师如果想查“订单服务所在的节点里,哪个服务器的内存最空闲?”,他们不能直接问系统,必须用一种叫 PromQL 的“外星语言”(一种非常专业的查询代码)来写指令。

这就好比你进图书馆,想借一本书,不能直接跟图书管理员说“我想找那本红色的书”,而必须背诵复杂的索书号规则、书架编号、甚至还要懂图书馆的底层数据库结构。如果写错了,查出来的就是垃圾信息,或者根本查不到。这对工程师来说,既难学又费时间。

2. 解决方案:PromCopilot —— 你的“超级翻译官”

为了解决这个问题,作者们发明了 PromCopilot。你可以把它想象成一位既懂仓库结构、又懂人类语言的“超级翻译官”

它的工作流程非常巧妙,分三步走:

第一步:画一张“超级地图”(构建知识图谱)

在仓库里,东西之间关系错综复杂(比如:订单服务 -> 运行在 Pod 上 -> Pod 在某个节点上 -> 节点有内存数据)。
PromCopilot 首先会把这些复杂的关系画成一张巨大的“关系地图”(知识图谱)

  • 这就好比它把仓库的布局、货物位置、运输路线全部画在了一张纸上,并且标记得清清楚楚。
  • 这张地图是动态更新的,仓库里多了一台机器,地图马上就会更新。

第二步:听懂“人话”并指路(问题解析与检索)

当工程师问:“帮我看看订单服务所在的节点,哪个内存最空闲?”
PromCopilot 不会直接瞎猜,它会:

  1. 听懂意图:识别出关键词“订单服务”、“节点”、“内存”。

  2. 查地图:利用刚才那张“超级地图”,像侦探一样进行多跳推理

    • 第一跳:找到“订单服务”在哪里? -> 找到了几个 Pod。
    • 第二跳:这些 Pod 在哪些节点上? -> 找到了具体的节点 ID。
    • 第三跳:这些节点上有没有“内存”这个指标? -> 找到了对应的数据标签。

    这就像你问:“我想找那个卖咖啡的店。”翻译官会先查地图找到“咖啡店”,再查它所在的“街道”,最后告诉你“它在第三大道”。

第三步:生成“外星指令”(生成 PromQL)

最后,PromCopilot 把查到的所有信息(具体的节点 ID、指标名称、标签),结合大语言模型(LLM)的编程能力,自动翻译成那个复杂的 PromQL 代码
工程师只需要看结果,甚至可以直接运行,完全不需要自己去写那些令人头秃的代码。

3. 为什么它比以前的方法好?

以前也有类似的技术(比如让 AI 学习以前的问答记录),但在这个场景下行不通,原因就像:

  • 以前的方法(Few-shot Learning):像是让一个实习生背“去年的考题”。如果今年仓库布局变了(比如服务扩容了,节点换了),去年的答案就失效了。
  • PromCopilot:像是给实习生发了一张实时更新的地图。不管仓库怎么变,只要查地图,就能找到最新的路。它不依赖死记硬背,而是依赖实时推理

4. 效果怎么样?

作者们做了一个实验,就像在仓库里搞了一场“找东西比赛”:

  • 比赛内容:给工程师 280 个自然语言问题,看谁能最快、最准地写出正确的查询代码。
  • 结果
    • 普通的 AI(直接问大模型):准确率只有 2.6%(几乎全错,因为它不懂仓库的具体结构)。
    • 加了“历史题库”的 AI:准确率到了 37.4%(有点进步,但遇到新问题还是懵)。
    • PromCopilot:准确率高达 69.1%!而且它还能帮工程师把找东西的时间从 6 分钟 缩短到 1 分半钟

5. 总结:它意味着什么?

这篇论文的核心贡献在于:

  1. 首创了“自然语言转监控代码”的框架:以前没人专门研究怎么把“人话”变成“监控代码”,这是第一个吃螃蟹的。
  2. 解决了“上下文缺失”的难题:它证明了,只要给 AI 一张实时的“关系地图”,AI 就能在复杂的系统中精准推理,而不是靠瞎猜。
  3. 解放了工程师:以后工程师不需要花大量时间去查文档、记指标名,直接问“我的系统哪里慢了?”,PromCopilot 就能帮你把代码写好。

一句话总结:
PromCopilot 就像给复杂的云原生系统装上了一个智能导航仪。以前工程师得像老练的飞行员一样手动操作仪表盘(写代码),现在只要对着导航仪说“我要去北京”,它就能自动规划路线并驾驶飞机(生成查询代码)带你到达目的地。