Prometheus curl API 查询问题

Dis*_*ame 7 api curl prometheus

我正在尝试构建curl API 查询以从Prometheus 获取Json 数据。Prometheus UI 查询的工作方式如下所示:

max_over_time(container_memory_usage_bytes{image!="",pod_name=~"somepod-.*"}[7d])

所以我正在尝试:

curl 'http://127.0.0.1:20001/api/v1/query?query=max_over_time(container_memory_usage_bytes{(pod_name="somepod-.*")})[1d]' | jq
Run Code Online (Sandbox Code Playgroud)

但根据括号,它总是抱怨诸如预期或意外字符之类的东西。

bri*_*zil 10

你要:

curl -g 'http://127.0.0.1:20001/api/v1/query?query=max_over_time(container_memory_usage_bytes{pod_name=~"somepod-.*"}[1d])' | jq
Run Code Online (Sandbox Code Playgroud)

这会禁用curl 的通配符,这会妨碍这里。


小智 6

我使用下面的查询从 prometheus 获取相当复杂的查询,并使用 jq 提取有趣的信息,然后将其格式化为 csv

curl -fs --data-urlencode 'query=sort_desc( sum(container_memory_working_set_bytes) by (container_name, namespace) /sum(label_join(kube_pod_container_resource_requests_memory_bytes, "container_name", "", "container")) by (container_name, namespace) > 1)' https://prometheus/api/v1/query | jq -r '.data.result[] | [.metric.container_name, .metric.namespace, .value[1] ] | @csv'
Run Code Online (Sandbox Code Playgroud)

您可以在https://learndevops.substack.com/p/hitting-prometheus-api-with-curl查看更多信息