opentsdb簡介

1、OpenTSDB介紹

1.1、OpenTSDB是什麼?主要用途是什麼?

官方文檔這樣描述:OpenTSDB is a distributed, scalable Time Series Database (TSDB) written on top of HBase;

翻譯過來就是,基於Hbase的分佈式的,可伸縮的時間序列數據庫。

主要用途,就是做監控系統;譬如收集大規模集羣(包括網絡設備、操作系統、應用程序)的監控數據並進行存儲,查詢。

1.2、介紹continue

存儲到OpenTSDB的數據,是以metric爲單位的,metric就是1個監控項,譬如服務器的話,會有CPU使用率、內存使用率這些metric;

OpenTSDB使用HBase作爲存儲,由於有良好的設計,因此對metric的數據存儲支持到秒級別;

OpenTSDB支持數據永久存儲,即保存的數據不會主動刪除;並且原始數據會一直保存(有些監控系統會將較久之前的數據聚合之後保存)

2、OpenTSDB存儲相關的概念

介紹這些概念的時候,我們先看一個實際的場景。

譬如假設我們採集1個服務器(hostname=qatest)的CPU使用率,發現該服務器在21:00的時候,CPU使用率達到99%

下面結合例子看看OpenTSDB存儲的一些核心概念

1)Metric:即平時我們所說的監控項。譬如上面的CPU使用率

2)Tags:就是一些標籤,在OpenTSDB裏面,Tags由tagk和tagv組成,即tagk=takv。標籤是用來描述Metric的,譬如上面爲了標記是服務器A的CpuUsage,tags可爲hostname=qatest

3)Value:一個Value表示一個metric的實際數值,譬如上面的99%

4)Timestamp:即時間戳,用來描述Value是什麼時候的;譬如上面的21:00

5)Data Point:即某個Metric在某個時間點的數值。

                        Data Point包括以下部分:Metric、Tags、Value、Timestamp

                       上面描述的服務器在21:00時候的cpu使用率,就是1個DataPoint

保存到OpenTSDB的,就是無數個DataPoint。

下面講一下,OpenTSDB是如何保存DataPoint的。

3、OpenTSDB的設計

還是以例子來說明,譬如保存這樣的1個DataPoint:

metric:proc.loadavg.1m

timestamp:1234567890

value:0.42

tags:host=web42,pool=static

3.1、簡單的設計

那麼,如果是一般的設計,會怎麼做呢,可能就是:RowKey=metric|timestamp|value|host=web42|pool=static,Column=v,Value=0.42

這是最簡單的設計,那接下來看看,OpenTSDB是怎麼做的吧。

3.2、OpenTSDB的方案

OpenTSDB使用HBase存儲,核心的存儲,是有兩張表,tsdb和tsdb-uid

3.2.1、表tsdb

tsdb是保存數據的,看看該表的設計


tsdb的表結構

1)RowKey的設計

RowKey其實和上面的metric|timestamp|value|host=web42|pool=static類似;

但是區別是,OpenTSDB爲了節省存儲空間,將每個部分都做了映射。

在OpenTSDB裏面有這樣的映射,metric-->3字節整數、tagk-->3字節整數、tagv-->3字節整數

上圖的映射關係爲,proc.loadavg.1m-->052、host-->001、web42-->028、pool-->047、static-->001

2)column的設計

爲了方便後期更進一步的節省空間。OpenTSDB將一個小時的數據,保存在一行裏面。

所以上面的timestamp1234567890,會先模一下小時,得出1234566000,然後得到的餘數爲1890,表示的是它是在這個小時裏面的第1890秒;

然後將1890作爲column name,而0.42即爲column value

3.2.2、表tsdb-uid


表tsdb-uid

這裏其實保存的就是一些metric,tagk,tagv的一些映射關係。

4、OpenTSDB的總體架構


openTSDB架構

Servers:就是服務器了,上面的C就是指Collector,可以理解爲OpenTSDB的agent,通過Collector收集數據,推送數據;

TSD:TSD是對外通信的無狀態的服務器,Collector可以通過TSD簡單的RPC協議推送監控數據;另外TSD還提供了一個web UI頁面供數據查詢;另外也可以通過腳本查詢監控數據,對監控數據做報警

HBase:TSD收到監控數據後,是通過AsyncHbase這個庫來將數據寫入到HBase;AsyncHbase是完全異步、非阻塞、線程安全的Hbase客戶端,使用更少的線程、鎖以及內存,可以提供更高的吞吐量,特別對於大量的寫操作。



文/沉默劍士(簡書作者)
原文鏈接:http://www.jianshu.com/p/0bafd0168647
著作權歸作者所有,轉載請聯繫作者獲得授權,並標註“簡書作者”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章