溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

OpenTsdb如何查詢或讀取數(shù)據(jù)

發(fā)布時(shí)間:2021-12-29 17:46:23 來(lái)源:億速云 閱讀:221 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下OpenTsdb如何查詢或讀取數(shù)據(jù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

??OpenTSDB提供了許多提取,處理和分析數(shù)據(jù)的方法。數(shù)據(jù)可以通過(guò)CLI工具,HTTP API來(lái)查詢,并且作為為一個(gè)GnuPlot圖形輸出展示。開(kāi)源工具如Grafana和Bosun可以訪問(wèn)TSDB的數(shù)據(jù)。使用OpenTSDB的基于標(biāo)簽的系統(tǒng)進(jìn)行查詢可能有點(diǎn)棘手,所以仔細(xì)閱讀本文檔并查看以下頁(yè)面以獲取更深入的信息。此頁(yè)面上的示例查詢遵循HTTP API格式。

查詢組件

??OpenTSDB提供了多個(gè)工具和接口允許隨著時(shí)間推移的多樣化查詢定義。原始語(yǔ)法支持簡(jiǎn)單的過(guò)濾,聚合和降采樣。后來(lái)的版本增加了對(duì)函數(shù)和表達(dá)式的支持。一般來(lái)說(shuō),每個(gè)查詢都有以下組件:

參數(shù)數(shù)據(jù)類型Required描述示例
Start TimeString或IntegerRequired查詢的開(kāi)始時(shí)間??梢允墙^對(duì)時(shí)間或相對(duì)時(shí)間24h-ago
End TimeString或IntegerOptional查詢的結(jié)束時(shí)間。如果未提供結(jié)束時(shí)間,則當(dāng)前時(shí)間即結(jié)束時(shí)間1h-ago
MetricStringRequired系統(tǒng)中的metric全名。必須是全名并且大小寫敏感sys.cpu.user
Aggregation FunctionStringRequired用于組合多個(gè)時(shí)間序列的數(shù)學(xué)函數(shù)(即如何合并一個(gè)組中的時(shí)間序列值)sum
FilterStringOptional過(guò)濾標(biāo)簽值以減少查詢或組中挑選出的時(shí)間序列的數(shù)量,并聚合各個(gè)標(biāo)簽host=*,dc=lax
DownsamplerStringOptional可選的時(shí)間間隔和函數(shù),用于減少隨時(shí)間返回的數(shù)據(jù)點(diǎn)的數(shù)量1h-avg
RateStringOptional用于計(jì)算結(jié)果的每秒變化率rate
FunctionsStringOptional數(shù)據(jù)處理函數(shù),如附加過(guò)濾、時(shí)間切換等highestMax(…)
ExpressionsStringOptional數(shù)據(jù)處理函數(shù),例如將一個(gè)序列分化成另一個(gè)序列(m2/(m1 + m2))*100

時(shí)間

??支持人類可讀的絕對(duì)時(shí)間戳或Unix風(fēng)格的整型格式。相對(duì)時(shí)間通常用來(lái)刷新儀表板。當(dāng)前,所有的查詢可以覆蓋單一的時(shí)間段。未來(lái)我們希望提供一個(gè)偏移查詢參數(shù),這個(gè)參數(shù)可以在不同的時(shí)間段內(nèi)對(duì)指標(biāo)進(jìn)行聚合或者繪制圖表,比如上周到1年前的比較。

??雖然OpenTSDB可以以毫秒分辨率(精度)存儲(chǔ)數(shù)據(jù),但大多數(shù)查詢將以秒級(jí)分辨率返回?cái)?shù)據(jù),以提供對(duì)現(xiàn)有工具的向后兼容性。除非使用指定了降采樣算法的查詢,否則將使用查詢中指定的相同聚合函數(shù)將數(shù)據(jù)自動(dòng)降采樣到1秒。這樣,如果多個(gè)數(shù)據(jù)點(diǎn)存儲(chǔ)在一個(gè)給定的秒數(shù),它們將被聚合并正確返回一個(gè)正常的查詢。

??要以毫秒分辨率提取數(shù)據(jù),請(qǐng)使用/api/query接口并指定msResolution(ms也可以,但不推薦)JSON參數(shù)或查詢字符串標(biāo)識(shí),它將繞過(guò)采樣(除非指定),并以Unix epoch毫秒分辨率返回所有時(shí)間戳。另外,scan命令行工具將返回寫入存儲(chǔ)的時(shí)間戳。

過(guò)濾器

??每個(gè)時(shí)間序列由一個(gè)指標(biāo)與一個(gè)或多個(gè)標(biāo)簽名稱/值對(duì)組成。在OpenTSDB中,過(guò)濾器應(yīng)用于標(biāo)簽值(當(dāng)前的TSDB不提供對(duì)指標(biāo)或標(biāo)簽名稱的過(guò)濾)。由于過(guò)濾器在查詢中是可選的,如果您僅僅請(qǐng)求指標(biāo)名稱,則具有任意數(shù)值或標(biāo)簽值都會(huì)在聚合結(jié)果中返回。過(guò)濾器與SQL語(yǔ)句中的Where子句相似。例如,我們存儲(chǔ)了如下數(shù)據(jù)集:

sys.cpu.user host=webserver01,cpu=0  1356998400  1
sys.cpu.user host=webserver01,cpu=1  1356998400  4
sys.cpu.user host=webserver02,cpu=0  1356998400  2
sys.cpu.user host=webserver02,cpu=1  1356998400  1

??制定一個(gè)簡(jiǎn)單的查詢,至少帶有起始時(shí)間,聚合器和指標(biāo),如:

start=1356998400&m=sum:sys.cpu.user

??我們會(huì)得到一個(gè)在1356998400時(shí)間點(diǎn)上將4個(gè)時(shí)間序列聚合到一組,值為8。
??如果我們想縮放一個(gè)特定序列或一系列序列,可以使用過(guò)濾器。例如,我們可以通過(guò)在host標(biāo)簽上過(guò)濾:

start=1356998400&m=sum:sys.cpu.user{host=webserver01}

??該查詢將會(huì)返回一個(gè)值5,僅包含時(shí)間序列host=webserver01。要深入到特定的時(shí)間序列,必須包含序列的所有標(biāo)簽,如查詢:

start=1356998400&m=sum:sys.cpu.user{host=webserver01,cpu=0}

??將會(huì)返回1。

聚合

??OpenTSDB的一個(gè)強(qiáng)大功能是能夠?qū)⒍鄠€(gè)時(shí)間序列的即時(shí)聚合集成到一組數(shù)據(jù)點(diǎn)中。原始數(shù)據(jù)始終可用于存儲(chǔ),但我們可以通過(guò)有意義的方式快速提取數(shù)據(jù)。聚合函數(shù)是將單個(gè)時(shí)間戳的兩個(gè)或多個(gè)數(shù)據(jù)點(diǎn)合并為單個(gè)值的方法。

??注意:
??OpenTSDB默認(rèn)會(huì)聚合數(shù)據(jù),并且需要每個(gè)查詢都有一個(gè)聚合運(yùn)算符。每個(gè)聚合器必須處理多個(gè)序列的缺失或不同時(shí)間戳中的數(shù)據(jù)點(diǎn)。這通過(guò)插值來(lái)執(zhí)行的,如果用戶不知道TSDB在做什么,可能會(huì)在查詢時(shí)導(dǎo)致意外的結(jié)果。

降采樣

??OpenTSDB可以攝取大量數(shù)據(jù),即使僅提取給定時(shí)間序列中每秒一個(gè)數(shù)據(jù)點(diǎn)也是如此。因此查詢可能會(huì)返回大量的數(shù)據(jù)點(diǎn),從API訪問(wèn)大量點(diǎn)的查詢結(jié)果可能會(huì)消耗許多帶寬。高頻率的數(shù)據(jù)很容易壓倒Javascript圖形庫(kù),因此可以選擇使用GnuPlot。由GUI創(chuàng)建的圖形難以閱讀,導(dǎo)致濃密的折線,如下圖所示:
OpenTsdb如何查詢或讀取數(shù)據(jù)

??查詢時(shí)可以使用降采樣來(lái)減少返回的數(shù)據(jù)點(diǎn)數(shù)量,以便您可以從圖表中提取更好的信息或通過(guò)連接傳遞更少的數(shù)據(jù)。降采樣需要一個(gè)聚合函數(shù)和一個(gè)時(shí)間間隔。聚合函數(shù)用于通過(guò)適當(dāng)?shù)臄?shù)學(xué)函數(shù)計(jì)算指定區(qū)間內(nèi)所有數(shù)據(jù)點(diǎn)上的新數(shù)據(jù)點(diǎn)。例如,如果使用sum聚合,則間隔內(nèi)的所有數(shù)據(jù)點(diǎn)將會(huì)一起累加為單個(gè)值。如果選擇avg,則會(huì)返回間隔內(nèi)所有數(shù)據(jù)點(diǎn)的平均值。
使用降采樣,我們可以清理前面的圖,以得到更有用的東西:
OpenTsdb如何查詢或讀取數(shù)據(jù)

Rate

??許多數(shù)據(jù)源以不斷遞增的計(jì)數(shù)器的形式返回值。一個(gè)例子是一個(gè)網(wǎng)站點(diǎn)擊計(jì)數(shù)器。當(dāng)您啟動(dòng)Web服務(wù)器時(shí),它的計(jì)數(shù)器可能為0。五分鐘后,該值可能為1,024。再過(guò)五分鐘后可能是2,048。計(jì)數(shù)器的圖形是一條直線且向右傾斜,這樣的圖并不總是非常有用。OpenTSDB提供了一個(gè)rate轉(zhuǎn)換函數(shù),用于計(jì)算值隨時(shí)間變化的變化率。這會(huì)將計(jì)數(shù)器轉(zhuǎn)換為帶有尖峰的折線(曲線),以便在活動(dòng)發(fā)生時(shí)向您展示且更有用。
該比率是這些值的一階導(dǎo)函數(shù)。它被定義為(v2 - v1) / (t2 - t1),時(shí)間以秒為單位。因此你會(huì)得到每秒的變化率。目前,毫秒級(jí)值之間的變化率默認(rèn)為每秒計(jì)算。

??OpenTSDB 2.0支持特殊的單調(diào)遞增計(jì)數(shù)器數(shù)據(jù)處理,包括設(shè)置“翻轉(zhuǎn)”(越界)值和抑制異常波動(dòng)的能力。當(dāng)在查詢中指定counterMax值時(shí),如果數(shù)據(jù)點(diǎn)接近該值并且之后的點(diǎn)小于先前的值,則將使用最大值來(lái)計(jì)算給定兩個(gè)點(diǎn)的準(zhǔn)確率。例如,如果我們用2個(gè)字節(jié)記錄整數(shù)計(jì)數(shù)器,則最大值將是65,535。如果在t0值是64000,在t1值是 1000,每秒所得到的速率將被作為計(jì)算-63000。然而我們知道,計(jì)數(shù)器可能會(huì)翻轉(zhuǎn),因此我們可以將最大值設(shè)置為65535,現(xiàn)在計(jì)算65535 - t0 + t1將會(huì)返回給我們2535。

??跟蹤計(jì)數(shù)器中數(shù)據(jù)的系統(tǒng)通常在重新啟動(dòng)時(shí)恢復(fù)為0。發(fā)生這種情況時(shí),如果使用最大計(jì)數(shù)器功能,我們可能會(huì)得到一個(gè)虛假的結(jié)果。例如,如果計(jì)數(shù)器在t0達(dá)到2000,同時(shí)有人重新啟動(dòng)服務(wù)器時(shí),在t1下一個(gè)值可能會(huì)500。如果我們?cè)O(shè)定最大值65535,那么結(jié)果就是65535 - 2000 + 500返回64035給我們。如果正常速度是每秒幾個(gè)點(diǎn),這個(gè)特定的尖峰,在30s中的數(shù)據(jù)點(diǎn)之間,將創(chuàng)建一個(gè)速率尖峰2134.5!為了避免這種情況,我們可以設(shè)置resetValue,當(dāng)速率超過(guò)這個(gè)值時(shí),返回一個(gè)值為0數(shù)據(jù)點(diǎn)以避免任何一個(gè)方向上出現(xiàn)尖峰。對(duì)于上面的例子,如果我們知道,速度幾乎從來(lái)沒(méi)有超過(guò)100,我們可以配置resetValue為100,并且當(dāng)上面的數(shù)據(jù)點(diǎn)被計(jì)算時(shí),它將返回0而不是2,134.5。默認(rèn)值0表示重置的值將被忽略,不會(huì)抑制rates。(不會(huì)影響rates)

運(yùn)算順序

??了解運(yùn)算順序非常重要。返回查詢結(jié)果時(shí),以下是處理的順序:
??1. 過(guò)濾
??1. 分組
??1. 降采樣
??1. 插值
??1. 聚合
??1. Rate轉(zhuǎn)換
??1. 函數(shù)
??1. 表達(dá)式

以上是“OpenTsdb如何查詢或讀取數(shù)據(jù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI