写点什么

Prometheus HTTP API 查询(四)Target 和查询结果格式

作者:耳东@Erdong
  • 2021 年 11 月 10 日
  • 本文字数:1619 字

    阅读完需:约 5 分钟

本文已经收录在 Prometheus 合集 你真的会 Prometheus 查询吗?--PromQL 合集 中。


Target

这个接口会返回 Prometheus Target 发现的当前状态。


GET /api/v1/targets
复制代码


默认情况下 activeTargetsdroppedTargets 都是请求响应的一部分。


discoveredLabels 表示在进行 Label 重新标记发生之前,服务发现找到的未修改的原始 Label。


labels 表示 Label 重新标记后的结果。


$ curl http://localhost:9090/api/v1/targets{  "status": "success",  "data": {    "activeTargets": [      {        "discoveredLabels": {          "__address__": "127.0.0.1:9090",          "__metrics_path__": "/metrics",          "__scheme__": "http",          "job": "prometheus"        },        "labels": {          "instance": "127.0.0.1:9090",          "job": "prometheus"        },        "scrapePool": "prometheus",        "scrapeUrl": "http://127.0.0.1:9090/metrics",        "globalUrl": "http://example-prometheus:9090/metrics",        "lastError": "",        "lastScrape": "2017-01-17T15:07:44.723715405+01:00",        "lastScrapeDuration": 0.050688943,        "health": "up",        "scrapeInterval": "1m",        "scrapeTimeout": "10s"      }    ],    "droppedTargets": [      {        "discoveredLabels": {          "__address__": "127.0.0.1:9100",          "__metrics_path__": "/metrics",          "__scheme__": "http",          "__scrape_interval__": "1m",          "__scrape_timeout__": "10s",          "job": "node"        },      }    ]  }}
复制代码


对于上边的这个查询,可以添加一个查询参数 state ,这个参数可以指定对应的 Target 状态,比如 state=active, state=dropped, state=any 。当然,这是个可选参数,不是必须的。


注意,对于过滤掉的目标,仍然返回一个空数组,里边的值会丢掉。比如:


$ curl 'http://localhost:9090/api/v1/targets?state=active'{  "status": "success",  "data": {    "activeTargets": [      {        "discoveredLabels": {          "__address__": "127.0.0.1:9090",          "__metrics_path__": "/metrics",          "__scheme__": "http",          "job": "prometheus"        },        "labels": {          "instance": "127.0.0.1:9090",          "job": "prometheus"        },        "scrapePool": "prometheus",        "scrapeUrl": "http://127.0.0.1:9090/metrics",        "globalUrl": "http://example-prometheus:9090/metrics",        "lastError": "",        "lastScrape": "2017-01-17T15:07:44.723715405+01:00",        "lastScrapeDuration": 50688943,        "health": "up"      }    ],    "droppedTargets": []  }}
复制代码

查询结果格式

我们通过表达式对 Prometheus 进行查询,会将返回的值放在结果的 data 部分。


<sample_value> 是数值的例子。


JSON 不支持特殊浮点值,比如 NaNInf-Inf ,所以样本值是作为引用的 JSON 字符串而不是原始数字传输的。

范围向量

范围向量返回的结果类型是 matrix 。对应的 result 属性的格式如下:


[  {    "metric": { "<label_name>": "<label_value>", ... },    "values": [ [ <unix_time>, "<sample_value>" ], ... ]  },  ...]
复制代码

瞬时向量

瞬时向量返回的结果类型是 vector 。对应的 result 属性的格式如下:


[  {    "metric": { "<label_name>": "<label_value>", ... },    "value": [ <unix_time>, "<sample_value>" ]  },  ...]
复制代码

标量

标量返回的结果类型是 scalar 。对应的 result 属性的格式如下:


[ <unix_time>, "<scalar_value>" ]
复制代码

字符串

字符串返回的结果类型是 string 。对应的 result 属性的格式如下:


[ <unix_time>, "<string_value>" ]
复制代码


发布于: 2021 年 11 月 10 日阅读数: 9
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus HTTP API 查询(四)Target 和查询结果格式