OpenTsdb官方文档-----理解指标和时间序列
??OpenTSDB是一個(gè)時(shí)間序列數(shù)據(jù)庫。時(shí)間序列是一段時(shí)間內(nèi)某個(gè)特定指標(biāo)量的一系列數(shù)值數(shù)據(jù)點(diǎn)。每個(gè)時(shí)間序列由一個(gè)指標(biāo)量加上一個(gè)或多個(gè)與此指標(biāo)量相關(guān)聯(lián)的標(biāo)簽組成(我們會(huì)稍微介紹一下標(biāo)簽)。指標(biāo)量是您希望隨時(shí)跟蹤的任意特定數(shù)據(jù)(例如點(diǎn)擊Apache主機(jī)文件)。
??OpenTSDB也是一個(gè)數(shù)據(jù)繪圖系統(tǒng)。OpenTSDB繪制的東西與其他系統(tǒng)有點(diǎn)不同。我們將在下面更詳細(xì)地討論繪圖,但現(xiàn)在對(duì)于OpenTSDB來說,任何給定繪圖的基礎(chǔ)都是指標(biāo)量,了解這一點(diǎn)是很重要的。它采用該指標(biāo)量,找出所選時(shí)間范圍的所有時(shí)間序列,將這些時(shí)間序列聚合在一起(例如將它們累加)并繪制結(jié)果。繪圖機(jī)制非常靈活且功能強(qiáng)大,可以做的遠(yuǎn)遠(yuǎn)不止這些,但現(xiàn)在讓我們來談?wù)剷r(shí)間序列的關(guān)鍵——指標(biāo)(Metric)。
??在OpenTSDB中,指標(biāo)命名為一個(gè)字符串,像“http.hits”。為了能夠存儲(chǔ)該指標(biāo)量存在的所有位置的不同的值,可以在將數(shù)據(jù)發(fā)送到TSD時(shí)使用一個(gè)或多個(gè)標(biāo)簽標(biāo)記數(shù)據(jù)。TSD存儲(chǔ)時(shí)間戳,值和標(biāo)簽。當(dāng)您想要讀取這些數(shù)據(jù)時(shí),TSD檢索讀取您提供的時(shí)間范圍的所有值,可選地使用您提供的標(biāo)簽過濾器,按照您想要的算法聚合所有的這些值,并繪制該指標(biāo)值隨時(shí)間變化的圖形。
??到目前為止,我們已經(jīng)介紹了一些內(nèi)容。為了幫助你理解它的工作方式,將從一個(gè)典型的例子開始。假設(shè)您有一堆Web服務(wù)器,并且您想跟蹤兩件事情: Web服務(wù)器點(diǎn)擊量和系統(tǒng)負(fù)載的平均值。我們來定義指標(biāo)名稱來表達(dá)它們。對(duì)于平均負(fù)載,我們稱之為”proc.loadavg.lmin”(因?yàn)樵贚inux上,你可以通過讀取/proc/loadavg輕易獲取這些數(shù)據(jù))。對(duì)很多Web服務(wù)器來說,有一種方法可以向Web服務(wù)器請(qǐng)求一個(gè)表示從服務(wù)器啟動(dòng)以來點(diǎn)擊服務(wù)器次數(shù)的計(jì)數(shù)器。這是一個(gè)便利的計(jì)數(shù)器,我們稱之為”http.hits”的指標(biāo)量。我選擇這兩個(gè)例子有如下兩個(gè)原因:
第一個(gè)數(shù)據(jù)點(diǎn)
??在沒有詳細(xì)討論收集器如何將數(shù)據(jù)發(fā)送到TSD的過程中,您可以編寫一個(gè)收集器,將每個(gè)服務(wù)器的這些數(shù)據(jù)點(diǎn)的當(dāng)前值定期發(fā)送到TSD。因此,TSD可以聚合來自多個(gè)主機(jī)的數(shù)據(jù),您可以用“主機(jī)”標(biāo)簽標(biāo)記每個(gè)值。所以,如果有Web服務(wù)器A,B,C等,他們每個(gè)人都會(huì)定期向TSD發(fā)送這樣的內(nèi)容:
put http.hits 1234567890 34877 host=A
put proc.loadavg.1min 1234567890 1.35 host=A
??這里的“1234567890”是以秒為單位的當(dāng)前紀(jì)元(epoch )時(shí)間(日期+%s)。下一個(gè)數(shù)字是此時(shí)的指標(biāo)值。這是來自主機(jī)A的數(shù)據(jù),因此標(biāo)簽標(biāo)記為host=A。來自主機(jī)B的數(shù)據(jù)將被標(biāo)記host=B等等。隨著時(shí)間的推移,會(huì)得到一堆存儲(chǔ)在OpenTSDB中的時(shí)間序列。
# 第一個(gè)繪制點(diǎn)??現(xiàn)在,讓我們重新回顧一下我們?cè)陂_始時(shí)談到的內(nèi)容。時(shí)間序列是一段時(shí)間內(nèi)某個(gè)特定指標(biāo)量(及其標(biāo)簽)的一系列數(shù)據(jù)點(diǎn)。在這個(gè)例子中,每個(gè)主機(jī)都向TSD發(fā)送兩個(gè)時(shí)間序列。如果你有三個(gè)箱子(主機(jī))發(fā)送這兩個(gè)時(shí)間序列,TSD將收集和存儲(chǔ)6個(gè)時(shí)間序列。現(xiàn)在有數(shù)據(jù)了,我們開始繪制。
??要繪制HTTP點(diǎn)擊量,您只需轉(zhuǎn)到UI界面并輸入http.hits為指標(biāo)名稱,然后輸入時(shí)間范圍。選中“Rate”復(fù)選框,因?yàn)檫@個(gè)特定的指標(biāo)是一個(gè)速率計(jì)數(shù)器,而且,有隨著時(shí)間的HTTP點(diǎn)擊到Web服務(wù)器的比率。
聚合器
??UI界面上聚合函數(shù)的默認(rèn)值是通過將每個(gè)主機(jī)的每個(gè)時(shí)間序列相加(sum)來聚合每個(gè)主機(jī)的時(shí)間序列。這意味著,TSD將采用這個(gè)三個(gè)時(shí)間序列(主機(jī)= A,B和C)的指標(biāo)并將它們的值相加在一起,以提供給定時(shí)間內(nèi)所有Web服務(wù)器的總的點(diǎn)擊次數(shù)。請(qǐng)注意,您不需要在同一時(shí)間發(fā)送數(shù)據(jù)點(diǎn),TSD將會(huì)找出它。因此,如果您的每個(gè)主機(jī)在某個(gè)時(shí)間點(diǎn)每秒提供1000次點(diǎn)擊,則圖表會(huì)顯示3000。如果您想要顯示每個(gè)Web服務(wù)器提供的點(diǎn)擊次數(shù),該怎么辦?有兩種方式。如果您只關(guān)心每個(gè)Web服務(wù)器的服務(wù)平均次數(shù),只需將Aggregator方法從sum更改為avg即可。您也可以嘗試其他(最大值,最小值)來查看最大值或最小值。更多的聚合函數(shù)正在起作用(percentiles,百分?jǐn)?shù)等)。這是在每個(gè)間隔的基礎(chǔ)上完成的,所以如果在某個(gè)時(shí)間點(diǎn),您的某個(gè)網(wǎng)絡(luò)服務(wù)器的服務(wù)時(shí)間為50 QPS,其他服務(wù)器的服務(wù)時(shí)間為100個(gè),稍遲一些另外一個(gè)網(wǎng)絡(luò)服務(wù)器的服務(wù)時(shí)間為50 QPS,而其他服務(wù)器的服務(wù)時(shí)間為100個(gè),這兩個(gè)點(diǎn)的Min函數(shù)值將是50。換句話說,它不能確定哪個(gè)時(shí)間系列是總的最小值,只是告訴你主機(jī)的情節(jié)。另一種方法來查看每個(gè)Web服務(wù)器正在服務(wù)的點(diǎn)擊數(shù)量?這是我們查看標(biāo)簽字段的地方。
降采樣
??為了減少返回的數(shù)據(jù)點(diǎn)的數(shù)量,可以指定一個(gè)降采樣的間隔和方法,例如1h-avg或1d-sum。這也是有用的(例如當(dāng)使用max和min時(shí))在給定時(shí)間段內(nèi)找到最佳和最差情況的數(shù)據(jù)點(diǎn)。降采樣對(duì)于使繪圖階段不太密集,以及更具可讀性尤其有用,特別是繪制比屏幕像素點(diǎn)更多的數(shù)據(jù)點(diǎn)時(shí)。
標(biāo)簽過濾器
??在UI中,您會(huì)看到TSD填充了一個(gè)或多個(gè)“標(biāo)簽”,第一個(gè)是host。TSD在這里說,在這個(gè)時(shí)間范圍內(nèi),它看到數(shù)據(jù)標(biāo)記有host標(biāo)簽。您可以過濾圖表,使其只繪制一個(gè)host的值。如果在host行中填寫A,則只繪制主機(jī)A隨時(shí)間變化的值。如果要給出要繪制的主機(jī)列表,請(qǐng)?zhí)顚懹晒艿婪?hào)分隔的主機(jī)列表,例如A | B,這將會(huì)繪制兩個(gè)圖,而不是一個(gè),一個(gè)用于A,一個(gè)用于B。最后,還可以指定特殊字符*,這意味著為每個(gè)主機(jī)繪制一條線。
添加更多指標(biāo)
??在UI中,您會(huì)看到TSD填充了一個(gè)或多個(gè)“標(biāo)簽”,第一個(gè)是host。TSD在這里說,在這個(gè)時(shí)間范圍內(nèi),它看到數(shù)據(jù)標(biāo)記有host標(biāo)簽。您可以過濾圖表,使其只繪制一個(gè)host的值。如果在host行中填寫A,則只繪制主機(jī)A隨時(shí)間變化的值。如果要給出要繪制的主機(jī)列表,請(qǐng)?zhí)顚懹晒艿婪?hào)分隔的主機(jī)列表,例如A | B,這將會(huì)繪制兩個(gè)圖,而不是一個(gè),一個(gè)用于A,一個(gè)用于B。最后,還可以指定特殊字符*,這意味著為每個(gè)主機(jī)繪制一條線。
變得花俏美觀
??試想一下,如果服務(wù)器實(shí)際上運(yùn)行了兩個(gè)Web服務(wù)器,比如說一個(gè)用于靜態(tài)內(nèi)容,另一個(gè)用于動(dòng)態(tài)內(nèi)容。而不是創(chuàng)建另一個(gè)指標(biāo),只需使用服務(wù)器實(shí)例標(biāo)簽http.hits指標(biāo)即可。讓收集器發(fā)送如下內(nèi)容:
put http.hits 1234567890 34877 host=A webserver=static
put http.hits 1234567890 4357 host=A webserver=dynamic
put proc.loadavg.1min 1234567890 1.35 host=A
??為什么要這樣做而不是創(chuàng)建另一個(gè)指標(biāo)?那么,如果有時(shí)候你關(guān)心的是繪制總HTTP點(diǎn)擊量,有時(shí)候你會(huì)分別關(guān)心靜態(tài)點(diǎn)擊或動(dòng)態(tài)點(diǎn)擊呢?使用標(biāo)簽,很容易實(shí)現(xiàn)。使用這個(gè)新標(biāo)簽,繪制此指標(biāo)時(shí),會(huì)看到UI中會(huì)顯示一個(gè)webserver標(biāo)簽??梢詫⑵浔A魹榭?#xff0c;并將兩個(gè)值合并到一個(gè)繪圖中(根據(jù)聚合器設(shè)置),可以看到總點(diǎn)擊數(shù),或者可以執(zhí)行webserver = 來分析通過web服務(wù)器的每個(gè)靜態(tài)和動(dòng)態(tài)實(shí)例的數(shù)量。甚至可以更深入地指定webserver = 和host = *以查看完整分類。
創(chuàng)建指標(biāo)的向?qū)?/h1>
現(xiàn)在,無法將兩個(gè)指標(biāo)合并成一條折線。這意味著您希望指標(biāo)量成為最大可能的聚合點(diǎn)。如果您想深入查看指標(biāo)中的具體內(nèi)容,請(qǐng)使用標(biāo)簽。
標(biāo)簽和指標(biāo)
??指標(biāo)量應(yīng)該是一個(gè)特定的事物,比如“以太網(wǎng)數(shù)據(jù)包”,但不能分解成某個(gè)事物的特定實(shí)例。一般而言,您不希望收集諸如net.bytes.eth0,net.bytes.eth1等的指標(biāo)。收集net.bytes并使用iface = eth0標(biāo)記eth0數(shù)據(jù)點(diǎn)等。不要費(fèi)心創(chuàng)建單獨(dú)的“in”和“out”指標(biāo),而是添加標(biāo)簽direction = in或direction = out。通過這種方式,您可以輕松查看給定”盒子”的整個(gè)網(wǎng)絡(luò)活動(dòng),而無需繪制大量指標(biāo)。這仍然使您可以靈活地向下鉆取,只顯示特定接口的活動(dòng),或只顯示特定方向的活動(dòng)數(shù)據(jù)。
計(jì)數(shù)器和Rates
??如果有東西是計(jì)數(shù)器,或者天生地是Rate的東西,請(qǐng)不要在將其發(fā)送到TSD之前將其轉(zhuǎn)換為Rate。這有兩個(gè)主要原因。首先,做自己的Rate計(jì)算,重置/溢出處理等是愚蠢的,因?yàn)門SD可以自動(dòng)做。您也不必?fù)?dān)心基于稍微不準(zhǔn)確或不斷改變的采樣間隔來獲取單位每秒計(jì)算的正確性。其次,如果發(fā)生了丟失數(shù)據(jù)點(diǎn)或更多數(shù)據(jù)點(diǎn)的情況,如果您發(fā)送當(dāng)前計(jì)數(shù)器值,則不會(huì)丟失數(shù)據(jù),只是該數(shù)據(jù)的解析度會(huì)稍差一些。TSD的黃金法則是,如果源數(shù)據(jù)是一個(gè)計(jì)數(shù)器(某些計(jì)數(shù)器輸出到/ proc或SNMP),請(qǐng)保持原樣,不要轉(zhuǎn)換它。如果你正在寫你自己的收集器(比如說,用于計(jì)算特定錯(cuò)誤消息出現(xiàn)在日志尾部的頻率),請(qǐng)勿在每個(gè)采樣時(shí)間間隔重置計(jì)數(shù)器。讓TSD為你做好此類工作。
您的朋友-標(biāo)簽
??在小環(huán)境之上的任何環(huán)境中,您可能會(huì)有一些集群或一組機(jī)器在做同樣的事情。不過隨著時(shí)間的推移這些會(huì)發(fā)生改變,沒關(guān)系。只需在將數(shù)據(jù)發(fā)送到TSD以傳遞此集群信息時(shí)使用標(biāo)簽。將cluster = webserver添加到每個(gè)Web服務(wù)器發(fā)送的所有數(shù)據(jù)點(diǎn),cluster = db標(biāo)簽添加到所有數(shù)據(jù)庫等。
??現(xiàn)在,當(dāng)您為Web服務(wù)器集群繪制CPU活動(dòng)情況時(shí),會(huì)看到所有這些聚合到一個(gè)繪圖中。然后,我們假設(shè)您添加一個(gè)web服務(wù)器,甚至將其從web服務(wù)器更改為數(shù)據(jù)庫。您所要做的就是確保在其角色更改時(shí)發(fā)送正確的標(biāo)簽,并且現(xiàn)在將該“盒子”的CPU活動(dòng)計(jì)入正確的集群。更重要的是,所有的歷史數(shù)據(jù)都是正確的!這是OpenTSDB的真正能力。您不僅不會(huì)像基于RRD的系統(tǒng)一樣隨時(shí)間丟失數(shù)據(jù)點(diǎn)的解析度,而且隨著“盒子”轉(zhuǎn)移,歷史數(shù)據(jù)不會(huì)丟失。您也不必將大量集群或分組意識(shí)(awareness)邏輯放入儀表板。
指標(biāo)和標(biāo)簽的精度
??數(shù)據(jù)點(diǎn)上允許的最大標(biāo)簽數(shù)量由常量(Const.MAX_NUMTAGS)定義,在寫入時(shí)為8。指標(biāo)量名稱,標(biāo)簽名稱和標(biāo)簽值必須由字母數(shù)字字符, “ - ” , “”,”.”和 “/”構(gòu)成,正如包私有函數(shù)Tags.validateString所強(qiáng)制的那樣。
下一篇OpenTsdb官方文檔----日期和時(shí)間
轉(zhuǎn)載于:https://blog.51cto.com/1196740/2159728
總結(jié)
以上是生活随笔為你收集整理的OpenTsdb官方文档-----理解指标和时间序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win7硬盘安装方法
- 下一篇: BZOJ 4555 [Tjoi2016H