【发布时间】:2022-01-14 22:42:56
【问题描述】:
我们希望从 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,仍然返回所有结果。你能检查一下查询吗
【问题讨论】:
-
最后一个肯定对我有用:pastebin.com/izvkhJpP
-
@anemyte,即使我指定了不同的标签,仍然可以获得所有指标。我还通过github.com/prometheus/client_golang api 获得了相同数量的指标。 // LabelValues 对给定标签、时间范围和匹配器的值进行查询。 LabelValues(ctx context.Context, label string, matches []string, startTime time.Time, endTime time.Time) (model.LabelValues, Warnings, error)
-
您尝试过哪些其他标签选择器?它是否适用于一些简单的愚蠢的东西,比如
match[]=my_metric_foo? -
@anemyte,它总是返回所有指标名称,而不管来自普罗米修斯服务器的任何 match[]。
-
好吧,在这一点上我只能说它要么是一个错误,要么你的
match[]参数根本无法识别。检查日志,尝试在浏览器中请求标签(消除 curl 的问题)和在图形面板中组成选择器。
标签: rest curl prometheus prometheus-alertmanager prometheus-java