KairosDB是一個快速可靠的分佈式時間序列數據庫,主要用於Cassandra來做底層存儲,當然也可以使用HBase。KairosDB是在OpenTSDB基礎上重寫的。 KairosDB主頁: https://code.google.com/p/kairosdb/
對於運維工程師而言,OpenTSDB可以獲取基礎設施和服務的實時狀態信息,展示集羣的各種軟硬件錯誤,性能變化以及性能瓶頸。對於管理者而言,OpenTSDB可以衡量系統的SLA,理解複雜系統間的相互作用,展示資源消耗情況。集羣的整體作業情況,可以用以輔助預算和集羣資源協調。對於開發者而言,OpenTSDB可以展示集羣的主要性能瓶頸,經常出現的錯誤,從而可以着力重點解決重要問題。
與OpenTSDB相比KairosDB 改進的地方:
- Uses Guice to load modules.
- Incorporates Jetty for Rest API and serving up UI.
- Pure Java build tool (Tablesaw)
- UI uses Flot and is client side rendered.
- Ability to customize UI.
- Relative time now includes Month and supports leap years.
-
Modular data store interface supports:
- HBase
- Cassandra
- H2 (For development)
- Milliseconds data support when using Cassandra.
- Rest API for querying and submitting data.
- Build produces deployable tar, rpm and deb packages.
- Linux start/stop service scripts.
- Faster.
- Made aggregations optional (easier to get raw data).
- Bug fix with returning incorrect data.
- Added abilities to import and export data.
- Aggregators can aggregate data for a specified period.
- Aggregators can be stacked or "piped" together.
- Grouping by tags, time range, or value.
KairosDB 刪除的地方:
- Removed all telnet commands except for put
- No longer supports URL query
KairosDb 特性:
Data Store Support
KairosDB 可以使用cassandra、HBase、H2(開發環境中)作爲後端存儲。默認情況下,KairosDB運行在H2數據庫下,開發環境不需要cassandra或HBase。
Time Granularity
如果使用cassandra,KairosDB 支持毫秒的粒度。HBase 僅支持秒級別。
Tags
數據點可以跟上標記,一個標記是一個鍵值對。
Submit Metrics Via Telnet
使用telnet是一個非常簡單的方式來添加指標的方法。語法簡單、使用方便。
REST API
支持REST API來添加查詢指標。
Aggregators
在查詢時,使用聚合來處理數據點。KairosDB帶有聚合的默認設置,聚合器可以很容易地進行編碼,並加入到擴展默認功能。
Grouping
查詢API可以通過標記、時間範圍、值來對數據點進行分組。
Filtering
查詢API通過標記來篩選過濾返回的一組數據。
Graphing
KairosDB 有一個內置的web服務來繪圖。用戶界面允許您在一個折線圖建立查詢並顯示結果數據點。將JSON發送到REST API也可以顯示出結果,因此如果你想直接調用KairosDB對結果進行解析。
CORS
KairosDB支持跨地資源共享。這個主要是js跨域。基本上,可以讓你在其他網站上通過JavaScript來訪問KairosDB數據。
Compressed Upload
KairosDB支持gzip壓縮指標數據。如果你需要上傳大量的數據讓服務器批量處理,可以用gzip壓縮JSON並上傳,設置內容類型爲application/gzip。
KairosDB 對時間粒度的處理
原來的OpenTSDB項目只處理秒級別的數據。KairosDB重寫了該項目,並引進毫秒級別粒度的目標。
爲了實現這兩個目錄,做了下面的處理:
1. Telnet協議接收秒和毫秒級別的時間值。如果時間值小於3,000,000,000,就乘以 1,000所得到毫秒值存入到數據庫。
2. REST API只接受毫秒時間值。
3. Cassandra接收並存儲毫秒級的時間值。
4. HBase對毫秒級時間值進行處理,除以1,000所得的秒值存入到數據庫。