0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Prometheus API使用介紹

馬哥Linux運(yùn)維 ? 來(lái)源: DevOps進(jìn)階之路 ? 作者:西岸Alex ? 2022-10-31 09:23 ? 次閱讀

做為一位優(yōu)秀的技術(shù)人員,往往能通過(guò)對(duì)數(shù)據(jù)的最大化利用來(lái)產(chǎn)生更多價(jià)值。而Prometheus的監(jiān)控?cái)?shù)據(jù)則是可以為我們所用的重要數(shù)據(jù),它并不只能用于日常的監(jiān)控和告警使用,也可以用于數(shù)據(jù)分析、成本管理等企業(yè)需求。

在這種場(chǎng)景下,需要我們從Prometheus去獲取相關(guān)的數(shù)據(jù),并對(duì)其進(jìn)行處理加工。關(guān)于數(shù)據(jù)的獲取方法,通常會(huì)使用Prometheus提供的API來(lái)操作,本文將會(huì)對(duì)此進(jìn)行講解介紹。

01—API格式


目前,Prometheus API 的穩(wěn)定版本為V1,針對(duì)該API的訪問(wèn)路徑為 /api/v1。API支持的請(qǐng)求模式有GET和POST兩種,當(dāng)正常響應(yīng)時(shí),會(huì)返回2xx的狀態(tài)碼。 反之,當(dāng)API調(diào)用失敗時(shí),則可能返回以下幾種常見(jiàn)的錯(cuò)誤提示碼:

400 Bad Request 參數(shù)丟失或不正確時(shí)出現(xiàn)。
422 Unprocessable Entity 當(dāng)表達(dá)無(wú)法被執(zhí)行時(shí)。
503 Service Unavailiable 查詢(xún)超時(shí)或中止時(shí)。
在功能上,Prometheus API 提供了豐富的接口類(lèi)型,包括表達(dá)式查詢(xún)、元數(shù)據(jù)查詢(xún)、配置查詢(xún)、規(guī)則查詢(xún)等多個(gè)功能,甚至還有清理數(shù)據(jù)的接口。 當(dāng)API正常響應(yīng)后,將返回如下的Json數(shù)據(jù)格式。
{
"status":"success"|"error",
"data":,

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

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

02—

API調(diào)用

下面,我們將以?xún)蓚€(gè)樣例來(lái)演示關(guān)于API的調(diào)用,方便大家理解掌握。

即時(shí)查詢(xún)

說(shuō)明:該接口屬于表達(dá)式查詢(xún),將根據(jù)表達(dá)式返回單個(gè)時(shí)間點(diǎn)的數(shù)據(jù)。

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

該接口可使用如下參數(shù)進(jìn)行查詢(xún),其中time為需要獲取值的時(shí)間戳,如果不填則默認(rèn)返回最新的值 。

query=:Prometheus 表達(dá)式查詢(xún)字符串。

time= :評(píng)估時(shí)間戳,可選參數(shù)。

timeout=: 查詢(xún)超時(shí)設(shè)置,可選參數(shù),默認(rèn)將使用-query.timeout的全局參數(shù)。

示例:

獲取實(shí)例"192.168.214.108"的node_load5值。

請(qǐng)求的參數(shù)如下:

curlhttp://localhost:9090/api/v1/query?query=node_load5{instance="192.168.214.108:9100"}
返回?cái)?shù)據(jù):

status 字段為success,表明請(qǐng)求成功;data字段包括了數(shù)據(jù)的相關(guān)參數(shù),其中value為對(duì)應(yīng)的時(shí)間戳和數(shù)據(jù)值 ,也即是node_load5的值。

{
"status":"success",
"data":{
"resultType":"vector",
"result":[
{
"metric":{
"__name__":"node_load5",
"instance":"192.168.214.108:9100",
"job":"node"
},
"value":[
1666865246.993,#時(shí)間戳
"0.04"#數(shù)據(jù)值
]
}
]
}
}

2. 范圍查詢(xún)

說(shuō)明:接口將根據(jù)表達(dá)式,返回指定時(shí)間范圍內(nèi)的數(shù)據(jù)。

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

該接口支持如下參數(shù)查詢(xún):

query=:Prometheus 表達(dá)式查詢(xún)字符串。

start=:開(kāi)始時(shí)間戳。

end= :結(jié)束時(shí)間戳。

step=:查詢(xún)分辨率步長(zhǎng)。

timeout=:查詢(xún)超時(shí)設(shè)置,可選參數(shù),默認(rèn)將使用-query.timeout的全局參數(shù)。

示例:

獲取實(shí)例"192.168.214.108"在某段時(shí)間內(nèi)node_load5的所有值。

請(qǐng)求的參數(shù)如下 :

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
返回?cái)?shù)據(jù) :

以下示例為3分鐘范圍內(nèi)的表達(dá)式返回值,查詢(xún)分辨率為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—獲取數(shù)據(jù)

上面的curl訪問(wèn)方式更多是用于測(cè)試,在實(shí)際應(yīng)用中,我們通常會(huì)用代碼的方式來(lái)獲取數(shù)據(jù)并進(jìn)行處理。

此處以Python為例,演示關(guān)于代碼調(diào)用接口的應(yīng)用方法。(PS:這里需要具備一點(diǎn)Python編程基礎(chǔ))

安裝requests庫(kù),用于url訪問(wèn)。

$pipinstallrequests

2. 編寫(xiě)python腳本test_api.py。

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

importrequests

#定義參數(shù)
url='http://192.168.214.108:9090'
query_api='/api/v1/query'
params='query=node_load5{instance="192.168.214.108:9100"}'
#訪問(wèn)prometheusAPI獲取數(shù)據(jù)
res=requests.get(url+query_api,params)
metrics=res.json().get("data").get("result")
#判斷結(jié)果是否為空
ifmetrics:
value=metrics[0].get('value')[1]
print('服務(wù)器192.168.214.108的node_load5值為%s'%value)
else:
print('無(wú)法獲取有效數(shù)據(jù)')

腳本運(yùn)行結(jié)果:

$pythontest_api.py
服務(wù)器192.168.214.108的node_load5值為0.01

結(jié)語(yǔ):

本文僅展示了Prometheus API的簡(jiǎn)單應(yīng)用,更多的接口使用可參考官方文獻(xiàn)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1500

    瀏覽量

    62010
  • Prometheus
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    1716

原文標(biāo)題:Prometheus API 使用介紹

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Prometheus的架構(gòu)原理從“監(jiān)控”談起

    Prometheus是繼Kubernetes(k8s)之后,CNCF畢業(yè)的第二個(gè)開(kāi)源項(xiàng)目,其來(lái)源于Google的Borgmon。本文從監(jiān)控這件事說(shuō)起,深入淺出Prometheus的架構(gòu)原理、目標(biāo)發(fā)現(xiàn)
    的頭像 發(fā)表于 10-10 15:47 ?4485次閱讀
    <b class='flag-5'>Prometheus</b>的架構(gòu)原理從“監(jiān)控”談起

    Stream API原理介紹

    原理介紹 Stream API 的核心是 Stream 接口,它表示一組元素的序列,可以按需進(jìn)行計(jì)算。Stream 接口提供了大量的中間操作和終端操作,可以用于過(guò)濾、映射、排序、聚合等各種操作。 Stream API 的實(shí)現(xiàn)原
    的頭像 發(fā)表于 09-30 15:31 ?714次閱讀

    Prometheus的基本原理與開(kāi)發(fā)指南

    ? 導(dǎo)讀??? ? 本文由梯度科技云管研發(fā)部高級(jí)工程師周宇明撰寫(xiě),共分為7章,緊密?chē)@Prometheus的基本原理與開(kāi)發(fā)指南展開(kāi)介紹: 監(jiān)控系統(tǒng)概述 Prometheus入門(mén) PromQL入門(mén)
    的頭像 發(fā)表于 11-09 10:45 ?1126次閱讀
    <b class='flag-5'>Prometheus</b>的基本原理與開(kāi)發(fā)指南

    prometheus做監(jiān)控服務(wù)的整個(gè)流程介紹

    最近有個(gè)新項(xiàng)目需要搞一套完整的監(jiān)控告警系統(tǒng),我們使用了開(kāi)源監(jiān)控告警系統(tǒng)Prometheus;其功能強(qiáng)大,可以很方便對(duì)其進(jìn)行擴(kuò)展,并且可以安裝和使用簡(jiǎn)單;本文首先介紹Prometheus的整個(gè)監(jiān)控流程
    發(fā)表于 12-23 17:34

    vc++ api函數(shù) (Windows API大全)

    Windows API大全,本書(shū)主要介紹VC++里API函數(shù)及其用法-WindowsAPI Daquan, the book introduces VC Lane API fun
    發(fā)表于 10-14 11:45 ?32次下載

    django-prometheus數(shù)據(jù)監(jiān)控

    django-prometheus.zip
    發(fā)表于 04-26 11:07 ?1次下載
    django-<b class='flag-5'>prometheus</b>數(shù)據(jù)監(jiān)控

    Prometheus服務(wù)監(jiān)控系統(tǒng)

    prometheus.zip
    發(fā)表于 04-26 10:23 ?3次下載
    <b class='flag-5'>Prometheus</b>服務(wù)監(jiān)控系統(tǒng)

    使用Thanos+Prometheus+Grafana構(gòu)建監(jiān)控系統(tǒng)

    對(duì)于彈性伸縮和高可用的系統(tǒng)來(lái)說(shuō),一般有大量的指標(biāo)數(shù)據(jù)需要收集和存儲(chǔ),如何為這樣的系統(tǒng)打造一個(gè)監(jiān)控方案呢?本文介紹了如何使用 Thanos+Prometheus+Grafana 構(gòu)建監(jiān)控系統(tǒng)。
    的頭像 發(fā)表于 05-05 21:14 ?2637次閱讀

    prometheus-book Prometheus操作指南

    ./oschina_soft/prometheus-book.zip
    發(fā)表于 05-16 09:11 ?5次下載
    <b class='flag-5'>prometheus</b>-book <b class='flag-5'>Prometheus</b>操作指南

    監(jiān)控神器:Prometheus

    Prometheus發(fā)展速度很快,12年開(kāi)發(fā)完成,16年加入CNCF,成為繼K8s 之后第二個(gè)CNCF托管的項(xiàng)目,目前Github 42k的,而且社區(qū)很活躍,維護(hù)頻率很高,基本穩(wěn)定在1個(gè)月1個(gè)小版本的迭代速度。
    的頭像 發(fā)表于 07-31 11:55 ?1192次閱讀

    prometheus下載安裝教程

    Prometheus 是一個(gè)開(kāi)放性的監(jiān)控解決方案,用戶(hù)可以非常方便的安裝和使用 Prometheus 并且能夠非常方便的對(duì)其進(jìn)行擴(kuò)展。 在Prometheus的架構(gòu)設(shè)計(jì)中,Prometheus
    的頭像 發(fā)表于 01-13 16:07 ?8030次閱讀
    <b class='flag-5'>prometheus</b>下載安裝教程

    Prometheus存儲(chǔ)引擎簡(jiǎn)析

    Prometheus 作為云原生時(shí)代的時(shí)序數(shù)據(jù)庫(kù), 是當(dāng)下最流行的監(jiān)控平臺(tái)之一,盡管其整體架構(gòu)一直沒(méi)怎么變,但其底層的存儲(chǔ)引擎卻演進(jìn)了幾個(gè)版本。
    的頭像 發(fā)表于 03-28 17:57 ?710次閱讀

    基于kube-prometheus的大數(shù)據(jù)平臺(tái)監(jiān)控系統(tǒng)設(shè)計(jì)

    本文介紹了如何基于 kube-prometheus 設(shè)計(jì)一個(gè)監(jiān)控系統(tǒng), 以靈活簡(jiǎn)單的方式對(duì) kubernetes 上的應(yīng)用進(jìn)行指標(biāo)采集,并實(shí)現(xiàn)監(jiān)控報(bào)警功能。
    的頭像 發(fā)表于 05-30 17:02 ?677次閱讀

    40個(gè)步驟安裝部署Prometheus監(jiān)控系統(tǒng)

    Prometheus是一套開(kāi)源的監(jiān)控&報(bào)警&時(shí)間序列數(shù)據(jù)庫(kù)的組合,起始是由SoundCloud公司開(kāi)發(fā)的。隨著發(fā)展,越來(lái)越多公司和組織接受采用Prometheus,社區(qū)也十分活躍,他們便將它獨(dú)立成開(kāi)源項(xiàng)目,并且有公司來(lái)運(yùn)作。
    的頭像 發(fā)表于 08-14 11:53 ?5.2w次閱讀
    40個(gè)步驟安裝部署<b class='flag-5'>Prometheus</b>監(jiān)控系統(tǒng)

    基于Prometheus開(kāi)源的完整監(jiān)控解決方案

    每一個(gè)被 Prometheus 監(jiān)控的服務(wù)都是一個(gè) Job,Prometheus 為這些 Job 提供了官方的 SDK ,利用這個(gè) SDK 可以自定義并導(dǎo)出自己的業(yè)務(wù)指標(biāo),也可以
    發(fā)表于 10-18 09:15 ?486次閱讀
    基于<b class='flag-5'>Prometheus</b>開(kāi)源的完整監(jiān)控解決方案