网络通信 频道

三大实例带你搞定 Prometheus API 使用,简明易上手

  作为一位优秀的技术人员,往往能通过对数据的最大化利用来产生更多价值。而 Prometheus 的监控数据则是可以为我们所用的重要数据,它并不只能用于日常的监控和告警使用,也可以用于数据分析、成本管理等企业需求。

  在这种场景下,需要我们从 Prometheus 去获取相关的数据,并对其进行处理加工。关于数据的获取方法,通常会使用 Prometheus 提供的 API 来操作,本文将会对此进行讲解介绍。

  1. API格式

  目前,Prometheus API 的稳定版本为V1,针对该 API 的访问路径为 /api/v1。API支持的请求模式有 GET 和 POST 两种,当正常响应时,会返回2xx的状态码。

  反之,当 API 调用失败时,则可能返回以下几种常见的错误提示码:

  在功能上,Prometheus API 提供了丰富的接口类型,包括表达式查询、元数据查询、配置查询、规则查询等多个功能,甚至还有清理数据的接口。

  当 API 正常响应后,将返回如下的 Json 数据格式。

  在功能上,Prometheus API 提供了丰富的接口类型,包括表达式查询、元数据查询、配置查询、规则查询等多个功能,甚至还有清理数据的接口。

  当API正常响应后,将返回如下的Json数据格式。

  2. API调用

  下面,我们将以两个样例来演示关于API的调用,方便大家理解掌握。

  1. 即时查询

  说明:该接口属于表达式查询,将根据表达式返回单个时间点的数据。

  该接口可使用如下参数进行查询,其中time为需要获取值的时间戳,如果不填则默认返回最新的值 。

  query=:Prometheus 表达式查询字符串。

  time=:评估时间戳,可选参数。

  timeout=: 查询超时设置,可选参数,默认将使用-query.timeout的全局参数。

  示例:

  获取实例”192.168.214.108”的node_load5值。

  请求的参数如下:

  返回数据:

  status 字段为success,表明请求成功;data字段包括了数据的相关参数,其中value为对应的时间戳和数据值 ,也即是node_load5的值。

  2. 范围查询

  说明:接口将根据表达式,返回指定时间范围内的数据。

  该接口支持如下参数查询:

  query=:Prometheus 表达式查询字符串。

  start=:开始时间戳。

  end=:结束时间戳。

  step=:查询分辨率步长。

  timeout=:查询超时设置,可选参数,默认将使用-query.timeout的全局参数。

  示例:

  获取实例”192.168.214.108”在某段时间内node_load5的所有值。

  请求的参数如下 :

  返回数据 :

  以下示例为3分钟范围内的表达式返回值,查询分辨率为60秒,故返回三次值。

  3. 获取数据

  上面的 curl 访问方式更多是用于测试,在实际应用中,我们通常会用代码的方式来获取数据并进行处理。

  此处以 Python 为例,演示关于代码调用接口的应用方法。(PS:这里需要具备一点 Python 编程基础)

  安装 requests 库,用于 url 访问。

  编写python脚本 test_api.py。

  脚本运行结果:

  结语

  本文仅展示了 Prometheus API 的简单应用,更多的接口使用可参考官方文献:https://prometheus.io/docs/prometheus/latest/querying/api/。

0
相关文章