0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Prometheus API使用介绍

马哥Linux运维 来源: DevOps进阶之路 作者:西岸Alex 2022-10-31 09:23 次阅读

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

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

01—API格式


目前,Prometheus API 的稳定版本为V1,针对该API的访问路径为 /api/v1。API支持的请求模式有GET和POST两种,当正常响应时,会返回2xx的状态码。 反之,当API调用失败时,则可能返回以下几种常见的错误提示码:

400 Bad Request 参数丢失或不正确时出现。
422 Unprocessable Entity 当表达无法被执行时。
503 Service Unavailiable 查询超时或中止时。
在功能上,Prometheus API 提供了丰富的接口类型,包括表达式查询、元数据查询、配置查询、规则查询等多个功能,甚至还有清理数据的接口。 当API正常响应后,将返回如下的Json数据格式。
{
"status":"success"|"error",
"data":,

//Onlysetifstatusis"error".Thedatafieldmaystillhold
//additionaldata.
"errorType":"",
"error":"",

//Onlyiftherewerewarningswhileexecutingtherequest.
//Therewillstillbedatainthedatafield.
"warnings":[""]
}

02—

API调用

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

即时查询

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

GET/api/v1/query
POST/api/v1/query

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

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

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

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

示例:

获取实例"192.168.214.108"的node_load5值。

请求的参数如下:

curlhttp://localhost:9090/api/v1/query?query=node_load5{instance="192.168.214.108:9100"}
返回数据:

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

{
"status":"success",
"data":{
"resultType":"vector",
"result":[
{
"metric":{
"__name__":"node_load5",
"instance":"192.168.214.108:9100",
"job":"node"
},
"value":[
1666865246.993,#时间戳
"0.04"#数据值
]
}
]
}
}

2. 范围查询

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

GET/api/v1/query_range
POST/api/v1/query_range

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

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

start=:开始时间戳。

end= :结束时间戳。

step=:查询分辨率步长。

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

示例:

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

请求的参数如下 :

curlhttp://localhost:9090/api/v1/query_range?query=node_load5{instance="192.168.214.108:9100"}&start=2022-10-28T0210.000Z&end=2022-10-28T0200.000Z&step=60s
返回数据 :

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

{
"status":"success",
"data":{
"resultType":"matrix",
"result":[
{
"metric":{
"__name__":"node_load5",
"instance":"192.168.214.108:9100",
"job":"node"
},
"values":[
[
1666923010,
"0.04"
],
[
1666923070,
"0.04"
],
[
1666923130,
"0.03"
]
]
}
]
}
}

03—获取数据

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

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

安装requests库,用于url访问。

$pipinstallrequests

2. 编写python脚本test_api.py。

#-*-coding:utf-8-*-

importrequests

#定义参数
url='http://192.168.214.108:9090'
query_api='/api/v1/query'
params='query=node_load5{instance="192.168.214.108:9100"}'
#访问prometheusAPI获取数据
res=requests.get(url+query_api,params)
metrics=res.json().get("data").get("result")
#判断结果是否为空
ifmetrics:
value=metrics[0].get('value')[1]
print('服务器192.168.214.108的node_load5值为%s'%value)
else:
print('无法获取有效数据')

脚本运行结果:

$pythontest_api.py
服务器192.168.214.108的node_load5值为0.01

结语:

本文仅展示了Prometheus API的简单应用,更多的接口使用可参考官方文献。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1434

    浏览量

    61229
  • Prometheus
    +关注

    关注

    0

    文章

    26

    浏览量

    1686

原文标题:Prometheus API 使用介绍

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Prometheus的架构原理从“监控”谈起

    Prometheus是继Kubernetes(k8s)之后,CNCF毕业的第二个开源项目,其来源于Google的Borgmon。本文从监控这件事说起,深入浅出Prometheus的架构原理、目标发现
    的头像 发表于 10-10 15:47 4292次阅读
    <b class='flag-5'>Prometheus</b>的架构原理从“监控”谈起

    Stream API原理介绍

    原理介绍 Stream API 的核心是 Stream 接口,它表示一组元素的序列,可以按需进行计算。Stream 接口提供了大量的中间操作和终端操作,可以用于过滤、映射、排序、聚合等各种操作。 Stream API 的实现原
    的头像 发表于 09-30 15:31 439次阅读

    Prometheus的基本原理与开发指南

      导读      本文由梯度科技云管研发部高级工程师周宇明撰写,共分为7章,紧密围绕Prometheus的基本原理与开发指南展开介绍: 监控系统概述 Prometheus入门 PromQL入门
    的头像 发表于 11-09 10:45 681次阅读
    <b class='flag-5'>Prometheus</b>的基本原理与开发指南

    prometheus做监控服务的整个流程介绍

    最近有个新项目需要搞一套完整的监控告警系统,我们使用了开源监控告警系统Prometheus;其功能强大,可以很方便对其进行扩展,并且可以安装和使用简单;本文首先介绍Prometheus的整个监控流程
    发表于 12-23 17:34

    django-prometheus数据监控

    django-prometheus.zip
    发表于 04-26 11:07 1次下载
    django-<b class='flag-5'>prometheus</b>数据监控

    Prometheus服务监控系统

    prometheus.zip
    发表于 04-26 10:23 3次下载
    <b class='flag-5'>Prometheus</b>服务监控系统

    使用Thanos+Prometheus+Grafana构建监控系统

    对于弹性伸缩和高可用的系统来说,一般有大量的指标数据需要收集和存储,如何为这样的系统打造一个监控方案呢?本文介绍了如何使用 Thanos+Prometheus+Grafana 构建监控系统。
    的头像 发表于 05-05 21:14 2382次阅读

    prometheus-book Prometheus操作指南

    ./oschina_soft/prometheus-book.zip
    发表于 05-16 09:11 5次下载
    <b class='flag-5'>prometheus</b>-book <b class='flag-5'>Prometheus</b>操作指南

    监控神器:Prometheus

    Prometheus发展速度很快,12年开发完成,16年加入CNCF,成为继K8s 之后第二个CNCF托管的项目,目前Github 42k的,而且社区很活跃,维护频率很高,基本稳定在1个月1个小版本的迭代速度。
    的头像 发表于 07-31 11:55 950次阅读

    如何基于kube-prometheus设计一个监控系统

    本文提供了作者的应用示例,另外还记录了作者在学习、使用 Prometheus 过程中的一些笔记,如 arm 版镜像获取、一些工具的使用等。
    的头像 发表于 09-13 09:47 866次阅读

    prometheus下载安装教程

    Prometheus 是一个开放性的监控解决方案,用户可以非常方便的安装和使用 Prometheus 并且能够非常方便的对其进行扩展。 在Prometheus的架构设计中,Prometheus
    的头像 发表于 01-13 16:07 7191次阅读
    <b class='flag-5'>prometheus</b>下载安装教程

    Prometheus存储引擎简析

    Prometheus 作为云原生时代的时序数据库, 是当下最流行的监控平台之一,尽管其整体架构一直没怎么变,但其底层的存储引擎却演进了几个版本。
    的头像 发表于 03-28 17:57 524次阅读

    基于kube-prometheus的大数据平台监控系统设计

    本文介绍了如何基于 kube-prometheus 设计一个监控系统, 以灵活简单的方式对 kubernetes 上的应用进行指标采集,并实现监控报警功能。
    的头像 发表于 05-30 17:02 510次阅读

    基于Prometheus开源的完整监控解决方案

    每一个被 Prometheus 监控的服务都是一个 Job,Prometheus 为这些 Job 提供了官方的 SDK ,利用这个 SDK 可以自定义并导出自己的业务指标,也可以
    发表于 10-18 09:15 246次阅读
    基于<b class='flag-5'>Prometheus</b>开源的完整监控解决方案

    Prometheus新手常犯的6项错误你知道吗?

    这是 Prometheus 使用者经常会犯的一个错,因为 Prometheus 时序是基于多标签的,它非常灵活,有时你想新增一个标签,从而将一个粗粒度的指标进行拆分,但切记添加的标签的值应该做到尽量收敛
    的头像 发表于 12-26 10:18 292次阅读
    <b class='flag-5'>Prometheus</b>新手常犯的6项错误你知道吗?