最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

軟件測試 | 普羅米修斯-HTTP API 調(diào)用PromQL

2023-06-18 15:36 作者:測吧測試開發(fā)  | 我要投稿

簡介

Prometheus API 使用了 JSON 格式的響應(yīng)內(nèi)容。 當(dāng) API 調(diào)用成功后將會(huì)返回查詢結(jié)果。所有的 API 請(qǐng)求均使用以下的 JSON 格式:

我們可以通過如下的 get 請(qǐng)求向普羅米修斯發(fā)送查詢請(qǐng)求:

  • api 路徑都是/api/v1/query

  • 有兩種查詢類型, 這里面我們用的查詢類型就是 query 類型(還有另一個(gè)叫 query_range)

  • 在路徑和查詢類型后跟著的就是 PromQL 語句了。

  • 最后的 time 是時(shí)間戳, 代表著查詢的時(shí)間基線。 就是我們的 PromQL 是以哪個(gè)時(shí)間點(diǎn)為基準(zhǔn)查詢的。 我們說過普羅米修斯本身就是一個(gè)時(shí)序數(shù)據(jù)庫。它默認(rèn)保存 14 天的數(shù)據(jù), 超過 14 天就會(huì)自動(dòng)刪除。 所以這個(gè)時(shí)間戳可以讓我們以過去某個(gè)時(shí)間點(diǎn)為基礎(chǔ)進(jìn)行查詢。如果在 UI 上查詢的話,只能以當(dāng)前時(shí)間為基線進(jìn)行查詢。

下面貼一個(gè)例子看一下我們查詢的 json 結(jié)果是什么樣子的:

響應(yīng)數(shù)據(jù)類型

當(dāng) API 調(diào)用成功后,Prometheus 會(huì)返回 JSON 格式的響應(yīng)內(nèi)容,格式如上小節(jié)所示。并且在 data 節(jié)點(diǎn)中返回查詢結(jié)果。data 節(jié)點(diǎn)格式如下:

PromQL 表達(dá)式可能返回多種數(shù)據(jù)類型,在響應(yīng)內(nèi)容中使用 resultType 表示當(dāng)前返回的數(shù)據(jù)類型,包括:

  • 瞬時(shí)向量:vector

當(dāng)返回?cái)?shù)據(jù)類型 resultType 為 vector 時(shí),result 響應(yīng)格式如下:

其中 metrics 表示當(dāng)前時(shí)間序列的特征維度,value 只包含一個(gè)唯一的樣本。

  • 區(qū)間向量:matrix

當(dāng)返回?cái)?shù)據(jù)類型 resultType 為 matrix 時(shí),result 響應(yīng)格式如下:

其中 metrics 表示當(dāng)前時(shí)間序列的特征維度,values 包含當(dāng)前事件序列的一組樣本。

  • 標(biāo)量:scalar

當(dāng)返回?cái)?shù)據(jù)類型 resultType 為 scalar 時(shí),result 響應(yīng)格式如下:

由于標(biāo)量不存在時(shí)間序列一說,因此 result 表示為當(dāng)前系統(tǒng)時(shí)間一個(gè)標(biāo)量的值。

  • 字符串:string

當(dāng)返回?cái)?shù)據(jù)類型 resultType 為 string 時(shí),result 響應(yīng)格式如下:

字符串類型的響應(yīng)內(nèi)容格式和標(biāo)量相同。

區(qū)間數(shù)據(jù)查詢

使用 QUERY_RANGE API 我們則可以直接查詢 PromQL 表達(dá)式在一段時(shí)間返回內(nèi)的計(jì)算結(jié)果。

URL 請(qǐng)求參數(shù):

  • query=: PromQL 表達(dá)式。

  • start=: 起始時(shí)間。

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

  • step=: 查詢步長。

  • timeout=: 超時(shí)設(shè)置。可選參數(shù),默認(rèn)情況下使用-query,timeout 的全局設(shè)置。

當(dāng)使用 QUERY_RANGE API 查詢 PromQL 表達(dá)式時(shí),返回結(jié)果一定是一個(gè)區(qū)間向量

需要注意的是,在 QUERY_RANGE API 中 PromQL 只能使用瞬時(shí)向量選擇器類型的表達(dá)式。

例如使用以下表達(dá)式查詢表達(dá)式 up 在 30 秒范圍內(nèi)以 15 秒為間隔計(jì)算 PromQL 表達(dá)式的結(jié)果。

實(shí)戰(zhàn)演示

最近做了一個(gè)資源優(yōu)化專項(xiàng),目的是實(shí)際了解一下業(yè)務(wù)運(yùn)行時(shí)產(chǎn)品 160+ 的服務(wù)每個(gè)服務(wù)所使用的 cpu 和內(nèi)存情況。 并對(duì)比他們申請(qǐng)的 request 和 limit 的值,計(jì)算服務(wù)是否申請(qǐng)了過多的資源導(dǎo)致資源浪費(fèi)。 所以我們要通過 HTTP PromQL 把相關(guān)的數(shù)據(jù)查詢出來。

上面代碼中的 PromQL 是首先

node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate 是一個(gè)預(yù)定義的查詢別名。 有些查詢語句過于復(fù)雜,所以我們可以給復(fù)雜的語句一個(gè)別名, 這樣在使用 的時(shí)候就比較方便了。 而我們使用的這個(gè)別名就如同它的名字一樣, 是查詢每個(gè)容器的 cpu 使用率的。 因?yàn)橐粋€(gè) pod 里可能會(huì)有多個(gè)容器, 所以需要使用 sum by (pod) 的方式統(tǒng)計(jì)出每個(gè) pod 的 cpu 使用率總和。 這里我們使用的就是一個(gè) query_range 的查詢類型。 因?yàn)槲覀兿M樵冊跍y試期間的 2 個(gè)小時(shí)內(nèi) cpu 使用率的最大值和平均值。 所以我們在請(qǐng)求最后使用step=30這個(gè)參數(shù)來指定每隔 30s 計(jì)算一次指標(biāo),然后我們在使用 start 和 end 參數(shù)指定了一個(gè)時(shí)間范圍。所以在指定的這 2 個(gè)小時(shí)內(nèi),每隔 30s 就會(huì)使用 PromQL 查詢一次,這樣返回結(jié)果里我們就有了很多個(gè)采樣數(shù)據(jù), 反應(yīng)了隨著時(shí)間變化 CPU 使用率的情況。 這時(shí)候我們再編寫 python 代碼把返回的 json 取出來計(jì)算最大值和平均值即可。

軟件測試 | 普羅米修斯-HTTP API 調(diào)用PromQL的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
彭山县| 闻喜县| 闽清县| 怀化市| 江阴市| 来安县| 南安市| 朝阳县| 西盟| 东丽区| 阿勒泰市| 阿拉尔市| 福海县| 夹江县| 平和县| 华坪县| 康定县| 登封市| 万州区| 赣榆县| 隆化县| 家居| 玉屏| 泰顺县| 雷州市| 黔西| 宜春市| 合水县| 龙游县| 姚安县| 太仆寺旗| 双柏县| 莫力| 阿城市| 黄陵县| 砀山县| 高清| 新平| 永仁县| 平邑县| 汉阴县|