如何通过prometheus api获取实例的所有指标?

问题描述 投票:0回答:4

我想通过prometheus的api获取监控主机的指标,需要对每个请求的指标发起一次请求。

curl http://IP:9090/api/v1/query?query=node_cpu_seconds_total{instance="IP:9100"}

curl http://IP:9090/api/v1/query?query=node_memory_MemTotal_bytes{instance="IP:9100"}

有没有办法一次性向监控主机请求所有性能数据?

prometheus prometheus-node-exporter
4个回答
7
投票

您可以使用以下curl表达式获取所有指标:

url=http://{urIPorhostname}:9090    
curl -s  $url/api/v1/label/__name__/values | jq -r ".data[]" | sort 

1
投票

您可以使用以下命令从特定机器请求所有当前的node_exporter指标:

curl --request GET "http://NODE-EXPORTER-IP:9100/metrics"

1
投票

特定实例的所有指标

IP:9100
可以通过以下PromQL查询获得:

{instance="IP:9100"}

此查询返回具有给定

instance="IP:9100"
标签的所有指标。有关更多详细信息,请参阅时间序列选择器文档。另请参阅 PromQL 教程

{instance="IP:9100"}
查询可以发送到以下 Prometheus 查询 API:

  • /api/v1/query - 此端点返回通过
    time
    查询参数指定的给定时间戳的匹配时间序列值。例如,
    curl 'http://prometheus:9090/api/v1/query?query={instance="IP:9100"}'
    。确保您使用
    百分比编码
    正确编码了 query arg。请参阅此演示
  • /api/v1/series - 此端点返回没有任何数据的匹配时间序列,例如仅返回指标名称和标签。例如,
    curl 'http://prometheus:9090/api/v1/series?match[]={instance="IP:9100"}'
    。确保您使用
    百分比编码
    正确编码了 match[] arg。请参阅此演示
  • /api/v1/query_range - 此端点返回计算的数据点,用于在选定的时间范围
    [start ... end]
    上与给定的
    step
    样本间隔匹配时间序列。请参阅这些文档中有关计算数据点的更多详细信息。

如果您只想返回不带标签的唯一指标名称,则可以查询

/api/v1/label/__name__/values
端点:
curl http://prometheus:9090/api/v1/label/__name__/values
__name__
是 Prometheus 中用于引用指标名称的特殊标签名称。请注意,多个时间序列可能共享相同的指标名称。例如,
http_requests_total{path="/foo"}
http_requests_total{path="/bar"}
时间序列共享
http_requests_total
指标名称,但它们的不同之处在于
path
标签值。


0
投票

使用API

小心!如果你配置 nginx 作为 prometheus 的代理。

然后

你必须这样做:curl http://localhost:9090/prometheus/api/v1/query?query=up -------------------------------------------------- url 中额外的 nginx-config。

© www.soinside.com 2019 - 2024. All rights reserved.