Prometheus HTTP API返回结果与WebUI不一致问题排查
问题:Prometheus HTTP API查询结果与WebUI不一致
在Prometheus WebUI中执行PromQL语句可得到多条记录,但使用同一集群的HTTP API执行相同PromQL时,仅返回单个结果。
请求示例
GET http://ip_address:9091/api/v1/query?query='max by (server) (max_over_time( pem_cpu_usage{service="postgres" }[1h]))'
返回结果
{ "status": "success", "data": { "resultType": "string", "result": [ 1686577506.211, "max by (server) (max_over_time( pem_cpu_usage{service=\"postgres\" }[1h]))" ] } }
更新1:进一步测试情况
执行http://IP_ADDRESS:9091/api/v1/query?query=up时,API返回结果与WebUI一致,但添加标签过滤后,API无返回结果,WebUI却能正常返回过滤结果。测试细节如下:
测试1:未加单引号的带过滤条件请求
http://IP_ADDRESS:9091/api/v1/query?query=up{instance="valid_instance_name"}
返回:
{ "status": "success", "data": { "resultType": "vector", "result": [] } }
测试2:加单引号的带过滤条件请求
http://IP_ADDRESS:9091/api/v1/query?query='up{instance="valid_instance_name"}'
返回:
{ "status": "success", "data": { "resultType": "string", "result": [ 1686611284.546, "up{instance=\"valid_instance_name\"}" ] } }
测试3:加单引号的URL编码后请求
http://IP_ADDRESS:9091/api/v1/query?query='up%7Binstance%3D"valid_instance_name"%7D'
返回:
{ "status": "success", "data": { "resultType": "string", "result": [ 1686610890.633, "up{instance=\"valid_instance_name\"}" ] } }
测试4:未加单引号的URL编码后请求
http://IP_ADDRESS:9091/api/v1/query?query=up%7Binstance%3D"valid_instance_name"%7D
返回:
{ "status": "success", "data": { "resultType": "vector", "result": [] } }
更新2:问题原因
WebUI实际访问的是不同主机,由于无法控制基础设施,被提供了错误的API主机地址,导致无法获取对应数据。
内容的提问来源于stack exchange,提问作者Laxmikant
相关产品推荐
相关产品推荐

