AI 辅助 PromQL 语句自动生成和诊断

更新时间:
复制 MD 格式

PromQL Copilot 支持使用自然语言生成 PromQL 语句,同时也支持对 PromQL 语句进行解释及诊断。

使用限制

在 Prometheus 实例 V1 和 V2 版本上都可以使用PromQL Copilot,但是仅在 V2 版本上支持以实际存储的指标信息优化 Copilot 的问答体验。如想获得最佳体验,请升级到 V2 版本实例。

功能概览

  • 生成 PromQL 语句:您使用日常语言表达查询需求,Copilot 会自动将这些描述转换为准确的 PromQL 查询语句。在Metrics 探索页面底部展开Copilot面板,该智能运维助手提供PromQL生成PromQL解释PromQL诊断指标推荐四项功能。选中PromQL生成标签后,在底部输入框中描述查询需求,即可自动生成对应的 PromQL 语句。

  • 解释 PromQL 语句:解析 PromQL 语句并分解其结构和功能,帮助用户更深入地理解查询逻辑。

  • 诊断 PromQL 语句:通过智能分析 PromQL 语句,以识别潜在问题并提供具体改进建议。选中PromQL诊断标签后,在输入框中输入待诊断的 PromQL 语句,Copilot 将自动识别语句中的潜在问题并给出具体的改进建议。

  • 指标推荐:根据您的需求,可以查询不同云产品下符合需求的指标。Copilot 位于Metrics 探索界面的 PromQL 查询编辑器下方,除上述三项功能外,还提供指标推荐功能页签。

功能入口

入口一

  1. 登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择所有功能 > 运维监控 > Prometheus服务

  2. 实例列表页面单击目标实例,然后在弹出页面左侧单击指标管理

  3. 指标探索页签中使用Copilot。在 指标探索 页签的 PromQL 输入框中,单击 使用 Copilot 链接,打开 Copilot 智能运维助手面板。面板底部提供 PromQL生成PromQL解释PromQL诊断PromQL推荐 四项功能。

入口二

  1. 登录云监控2.0控制台,单击目标工作空间,在左侧导航栏单击所有功能,然后单击其他区域中的Data Explorer

  2. Data Explorer页面中使用Copilot。进入 Data Explorer 后,在 PromQL 编辑器区域可看到 Copilot 入口。展开 Copilot 面板后,底部提供 PromQL生成PromQL解释PromQL诊断PromQL推荐 四个功能标签页,在输入框中描述要执行的查询需求即可使用对应功能。

操作示例

重要

为提高 Copilot 识别准确率,建议使用清晰且准确的表述方式,例如:"查询..."、"在 RDS 场景下,查询..."、"在 ECS 云产品中,查询..."等。

生成 PromQL 语句

一、生成 K8s 等开源指标 PromQL

  • 查询每个命名空间的 Pod 数量。例如,在AI查询助手中输入查询每个命名空间的Pod数量,助手将解析查询意图,选择 kube_pod_info 指标,并通过 sum by(namespace) 按命名空间分组聚合,最终生成PromQL语句 sum(kube_pod_info) by (namespace)。单击Run query即可执行该查询。

  • 在容器环境中,查询状态不是 running 的 Pod。使用 kube_pod_container_status_running 指标,PromQL 语句为 sum(kube_pod_container_status_running == 0) by (namespace, pod)。查询步骤:先通过条件 kube_pod_container_status_running == 0 筛选非 running 的容器,再通过 sum by(namespace, pod) 按命名空间和 Pod 进行聚合。若当前 Prometheus 中未接入该指标,可通过接入中心接入相关组件。

二、生成云产品相关指标的 PromQL

  • 查询 ECS 云产品中每台实例的 CPU 使用量。查询ECS云产品中每台实例的CPU使用量:选择指标 AliyunEcs_cpu_total,通过聚合操作 sum by(instanceId) 按实例维度汇总,生成的PromQL语句为 sum by(instanceId) (AliyunEcs_cpu_total{})

  • 查询 RDS 云产品 MYSQL 引擎的 CPU 使用情况。查询RDS云产品MySQL引擎的CPU使用情况:在查询输入框中输入PromQL语句AliyunRds_CpuUsage{engine="MySQL"},该语句使用AliyunRds_CpuUsage指标,通过engine="MySQL"过滤条件筛选MySQL引擎的时间序列数据,单击Run query执行查询。

  • 查询 SLB 产品接收的流量分布情况。查询 SLB 产品接收的流量分布情况时,AI 选择 AliyunSlb_TrafficRXNew 指标,通过 sum by(instanceId, listen_name, port, protocol) 进行聚合,生成 PromQL 语句:sum by(instanceId, listen_name, port, protocol) (AliyunSlb_TrafficRXNew{})。若当前 Prometheus 未接入该指标,系统会提示通过接入中心接入相关组件。

解释 PromQL 语句

说明

解释 PromQL 只需要输入 PromQL 即可。

max_over_time(sum by (namespace, container) (container_memory_working_set_bytes{}) [7d:]) / sum by (namespace, container) (kube_pod_container_resource_limits_memory_bytes{})

AI 返回的解释结果如下:该查询首先通过 sum by (namespace, container)container_memory_working_set_bytes 指标按命名空间和容器维度进行聚合,然后使用 max_over_time(... [7d:]) 计算过去 7 天内的最大值;分母部分通过相同维度聚合 kube_pod_container_resource_limits_memory_bytes 指标(容器内存资源限制);两者相除得到过去 7 天内各容器峰值内存使用量与内存限制的比率,用于评估容器内存资源的使用水位。

诊断 PromQL 语句

说明

诊断 PromQL 只需要输入 PromQL 即可。

max_over_time(sum by (namespace, container) (container_memory_working_set_bytes{}) [7d:]) / sum (namespace, container) (kube_pod_container_resource_limits_memory_bytes{})

max_over_time(sum by (namespace, container) (container_memory_working_set_bytes{})
[7d:]) / sum (namespace, container) (kube_pod_container_resource_limits_memory_bytes
{})
该PromQL查询的目的是计算过去7天内每个命名空间和容器的最大内存工作集与内存资源限制的比率。潜在优化建议:1. 确保 container_memory_working_set_bytes 和 kube_pod_container_resource_limits_memory_bytes 指标的标签一致,避免不必要的跨系列计算。2. 将 sum by (namespace, container) 提前到 max_over_time 之前以减少数据量。3. 如果结果过大,添加更具体的标签过滤器或缩短时间范围。优化后的查询:max_over_time(sum by (namespace, container) (container_memory_working_set_bytes{})[7d:]) / sum by (namespace, container) (kube_pod_container_resource_limits_memory_bytes{}) 。

指标推荐

推荐 ECS 主机的磁盘使用率指标。指标推荐示例:指标名称为 AliyunEcs_diskusage_utilization,标签为ECS主机的磁盘使用率,描述为在阿里云ECS环境中查询指定实例的磁盘使用率(百分比)。关联 Labels 包括 instanceType、nodeIp、description、device、instanceId、measure_desc、period、instanceName、measure、product、service、hostName、zoneId、eip、internetIp、diskname、userId、networkType、regionId。