gpt4 book ai didi

rest - 如何从按特定标签过滤的 Prometheus 服务器获取所有指标名称

转载 作者:行者123 更新时间:2023-12-05 03:33:45 25 4
gpt4 key购买 nike

我们想从 Prometheus 服务器获取所有按特定标签过滤的指标名称。

第 1 步:使用以下查询获取所有指标名称,使用所有指标名称查询成功。

curl -g 'http://localhost:9090/api/v1/label/__name__/values

第 2 步:使用以下查询获取按标签过滤的所有指标名称,但查询仍返回所有指标名称。

curl -g 'http://localhost:9090/api/v1/label/__name__/values?match[]={job!="prometheus"}'

有人可以帮我通过 HTTP 按标签过滤所有指标名称吗?谢谢

curl -G -XGET http://localhost:9090/api/v1/label/__name__/values --data-urlencode 'match[]={__name__=~".+", job!="prometheus"}'

@anemyte,仍然返回所有结果。你能检查查询吗

最佳答案

虽然乍一看这似乎很简单,但事实证明这是一件非常棘手的事情。

  1. match[] 参数及其值必须进行编码。 curl 可以使用 --data-urlencode 参数来做到这一点。

  2. 编码的 match[] 参数必须出现在 URL 中,而不是出现在 application/x-www-form-urlencoded header 中(其中 curl 默认放编码值)。因此,-G(大写字母!) key 也是必需的。

  3. {job!="prometheus"} 不是有效查询。它给出了以下错误:

    parse error: vector selector must contain at least one non-empty matcher

    可以用这个低效的正则表达式选择器来克服:{__name__=~".+", job!="prometheus"}。如果可能,最好将其替换为另一个选择器(例如 {job="foo"})。

放在一起:

curl -XGET -G 'http://localhost:9090/api/v1/label/__name__/values' \
--data-urlencode 'match[]={__name__=~".+", job!="prometheus"}'

自从 Prometheus 发布 v2.24.0 以来,就可以像上面的例子那样使用选择器了。

关于rest - 如何从按特定标签过滤的 Prometheus 服务器获取所有指标名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70301131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com