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 查询编辑器下方,除上述三项功能外,还提供指标推荐功能页签。
功能入口
入口一
登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择。
-
在实例列表页面单击目标实例,然后在弹出页面左侧单击指标管理。
-
在指标探索页签中使用Copilot。在 指标探索 页签的 PromQL 输入框中,单击 使用 Copilot 链接,打开 Copilot 智能运维助手面板。面板底部提供 PromQL生成、PromQL解释、PromQL诊断、PromQL推荐 四项功能。
入口二
-
登录云监控2.0控制台,单击目标工作空间,在左侧导航栏单击所有功能,然后单击其他区域中的Data Explorer。
-
在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。