我想通过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"}
有没有办法一次性向监控主机请求所有性能数据?
您可以使用以下curl表达式获取所有指标:
url=http://{urIPorhostname}:9090
curl -s $url/api/v1/label/__name__/values | jq -r ".data[]" | sort
您可以使用以下命令从特定机器请求所有当前的node_exporter指标:
curl --request GET "http://NODE-EXPORTER-IP:9100/metrics"
特定实例的所有指标
IP:9100
可以通过以下PromQL查询获得:
{instance="IP:9100"}
此查询返回具有给定
instance="IP:9100"
标签的所有指标。有关更多详细信息,请参阅时间序列选择器文档。另请参阅 PromQL 教程。
{instance="IP:9100"}
查询可以发送到以下 Prometheus 查询 API:
time
查询参数指定的给定时间戳的匹配时间序列值。例如,curl 'http://prometheus:9090/api/v1/query?query={instance="IP:9100"}'
。确保您使用 百分比编码正确编码了
query
arg。请参阅此演示。curl 'http://prometheus:9090/api/v1/series?match[]={instance="IP:9100"}'
。确保您使用 百分比编码正确编码了
match[]
arg。请参阅此演示[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
标签值。
小心!如果你配置 nginx 作为 prometheus 的代理。
然后
你必须这样做:curl http://localhost:9090/prometheus/api/v1/query?query=up -------------------------------------------------- url 中额外的 nginx-config。