Prometheus API使用介绍

网友投稿 208 2024-01-26

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

在这种场景下,需要我们从Prometheus去获取相关的数据,并对其进行处理加工关于数据的获取方法,通常会使用Prometheus提供的API来操作,本文将会对此进行讲解介绍 01—API格式 目前,Prometheus API 的稳定版本为V1,针对该API的访问路径为 /api/v1。

API支持的请求模式有GET和POST两种,当正常响应时,会返回2xx的状态码 反之,当API调用失败时,则可能返回以下几种常见的错误提示码:400 Bad Request 参数丢失或不正确时出现 422 Unprocessable En。

tity 当表达无法被执行时 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 pa。

rams=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的简单应用,更多的接口使用可参考官方文献。

审核编辑:汤梓红

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何使用Vulkan Graphics API
下一篇:WebVR:如何使用WebVR构建网络沉浸式的体验
相关文章

 发表评论

暂时没有评论,来抢沙发吧~