我的目标是通过 bash 脚本中的 cURL 从 Prometheus 获取指标值。没有浏览器,没有 Grafana 仪表板。我运行该命令
URL="https://192.168.0.11:9090"
curl -g "$URL/api/v1/series?" \
--data-urlencode 'match[]=kafka_consumergroup_lag{consumergroup="obfuscated",topic="output_obfuscated",partition="2"}'
并成功获取度量参数。
{
"status": "success",
"data": [
{
"__name__": "kafka_consumergroup_lag",
"consumergroup": "obfuscated",
"instance": "192.168.0.11:9308",
"job": "kafka-exporter",
"partition": "2",
"topic": "output_obfuscated"
}
]
}
但是如果我尝试获取 1 分钟(或 5 分钟)的指标值,我会收到错误。
命令
curl -g "$URL/api/v1/series?" \
--data-urlencode 'match[]=kafka_consumergroup_lag{consumergroup="obfuscated",topic="output_obfuscated",partition="2"}[1m]'
错误
{
"status": "error",
"errorType": "bad_data",
"error": "invalid parameter \"match[]\": 1:109: parse error: unexpected \"[\""
}
在 Grafana 网页界面中它可以正常工作。据我了解,我无法通过在代码末尾添加
[]
来查看指标值。有没有办法获取Prometheus metric值?
正如尊敬的@markalex 注意到的那样,我应该使用即时向量而不是范围向量。我必须对查询进行 URL 编码。
curl --silent "https://$URL:9090/api/v1/query?query=sum%28kafka_consumergroup_lag%7Bconsumergroup%3D~%22obfuscated%22%2Ctopic%3D~%22output_obfuscated%22%7D%29"