use*_*802 8 rest curl prometheus prometheus-alertmanager prometheus-java
我们希望从 Prometheus 服务器获取按特定标签过滤的所有指标名称。
第 1 步:使用以下查询获取所有指标名称,查询成功并获得所有指标名称。
curl -g 'http://localhost:9090/api/v1/label/__name__/values
Run Code Online (Sandbox Code Playgroud)
步骤 2 :使用以下查询获取按标签过滤的所有指标名称,但查询仍然返回所有指标名称。
curl -g 'http://localhost:9090/api/v1/label/__name__/values?match[]={job!="prometheus"}'
Run Code Online (Sandbox Code Playgroud)
有人可以帮我通过 http 按标签过滤所有指标名称吗?谢谢
curl -G -XGET http://localhost:9090/api/v1/label/__name__/values --data-urlencode 'match[]={__name__=~".+", job!="prometheus"}'
Run Code Online (Sandbox Code Playgroud)
@anemyte,仍然返回所有结果。您可以检查一下查询吗
虽然乍一看似乎很简单,但事实证明这是一件非常棘手的事情。
必须对参数match[]及其值进行编码。curl可以通过--data-urlencode论证做到这一点。
编码match[]参数必须出现在 URL 中,而不是出现在application/x-www-form-urlencoded标头中(curl默认情况下,标头中放置的是编码值)。因此,-G(大写的!)键也是必需的。
{job!="prometheus"}不是有效的查询。它给出以下错误:
解析错误:向量选择器必须至少包含一个非空匹配器
可以使用这个低效的正则表达式选择器来克服:{__name__=~".+", job!="prometheus"}。如果可能的话,最好将其替换为另一个选择器(例如{job="foo"})。
将所有内容放在一起:
curl -XGET -G 'http://localhost:9090/api/v1/label/__name__/values' \
--data-urlencode 'match[]={__name__=~".+", job!="prometheus"}'
Run Code Online (Sandbox Code Playgroud)
自 Prometheus 发布以来,使用上面示例中的选择器成为可能v2.24.0。
| 归档时间: |
|
| 查看次数: |
26778 次 |
| 最近记录: |