標籤:hbase opentsdb
OpenTSDB是基於HBase的開源監控系統,可以支援上萬規模叢集監控和上億資料點採集。其中TSDB代表Time Series Database,OpenTSDB在時間序列資料的儲存和查詢上都做了相當多的最佳化工作。
架構Overview
概念上OpenTSDB由三部分組成:tcollector資料擷取、tsd資料服務和HBase資料存放區。
資料擷取流程
如,tcollector後台進程運行在每台被監控的伺服器上,管理資料收集指令碼,定期執行,失敗時重啟,確保所有的監控資料發送給OpenTSDB。Tcollector將資料寫入到tsd,和HBase解耦保持用戶端的輕量級。Tsd通過類似telnet的協議收集資料,所以少量的tsd執行個體能夠支援大量的tcollector寫入進程。
資料查詢流程
圖中tsd負責和HBase進行資料互動,給前端提供HTTP查詢介面。所有的tsd進程都是無狀態的,這樣查詢模組能做到負載平衡、線性可伸縮和高可用。
HBase Schema設計
OpenTSDB儲存的是時間序列metrics,來自於不同的伺服器,資料有不同的種類,每個點都包含時間戳記和測量值。而且最終來講,資料對使用者可用,OpenTSDB還必須支援線上資料視覺效果。這些因素都影響著HBase Schema設計。
OpenTSDB包括兩張表,tsdb表格儲存體時間序列資料,tsdb-uid表格儲存體ID對應關係,管理資料tags等。
Tsdb-uid表
Tsdb-uid包括id和name兩個列族
前兩行UID-to-name行的UID用於和tsdb表外部索引鍵關聯;後兩行name-to-UID行用於支援tag名稱的自動補齊(通過掃描rowkey高效實現)。
注意Column qualifier中的metrics代表資料種類,典型的值還包括tag name和tag value。比如來自ubuntu伺服器的mysql.bytes_sent資料,其中mysql.bytes_sent為metrics,host為tag name,ubuntu為tag value。OpenTSDB通過metrics、tag name、tag value組合標記同一監控資料。
Tsdb表
Tsdb表的設計重點考慮支援日期範圍尋找、tag過濾。Tsdb表只有t一個列族。
首先看rowkey設計:一開始是Metric UID,接著是四個位元組的部分時間戳記,只到小時粒度,能保證同一指標按照時間順序儲存在一起,又能顯著減少行數。最後是所有的tag name和tag value UID,滿足查詢過濾需求。
接著看column qualifier:首先是時間戳記剩餘秒部分,後面通過四位元遮罩做一些額外標記,比如首位標記單元值是整數還是浮點數。