如何从按特定标签过滤的 Prometheus 服务器获取所有指标名称
How to get all metric names from Prometheus server filtered by a particular label
我们想从 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,仍然 returns 所有结果。你能检查查询吗
虽然乍一看这很简单,但实际上是一件非常棘手的事情。
match[]
参数及其值必须进行编码。 curl
可以用 --data-urlencode
参数做到这一点。
编码的 match[]
参数必须出现在 URL 而不是 application/x-www-form-urlencoded
header 中(其中 curl
将默认编码值)。因此,-G
(大写!)密钥也是必需的。
{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
.
后,就可以使用上例中的选择器了
我们想从 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,仍然 returns 所有结果。你能检查查询吗
虽然乍一看这很简单,但实际上是一件非常棘手的事情。
match[]
参数及其值必须进行编码。curl
可以用--data-urlencode
参数做到这一点。编码的
match[]
参数必须出现在 URL 而不是application/x-www-form-urlencoded
header 中(其中curl
将默认编码值)。因此,-G
(大写!)密钥也是必需的。{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
.