是一個經典的時序數據庫(Time-Series Database)系統,它沒有(you)開發自(zi)己(ji)的存儲引擎,而(er)是基(ji)于(yu),對于(yu)已經有(you)HBase基(ji)礎服(fu)務(wu)的企業(ye)而(er)言,降(jiang)低了門檻。而(er)且得(de)益(yi)于(yu)其先(xian)發優勢(shi),OpenTSDB在運(yun)維監控領(ling)域有(you)不少應用(yong)。不過也因為要依(yi)賴HBase,系統的性能、壓縮效(xiao)率(lv)逐漸成(cheng)為瓶頸。隨著業(ye)務(wu)系統規(gui)模的擴大(da),部署(shu)成(cheng)本、運(yun)行效(xiao)率(lv)等(deng)方(fang)面的問題日益(yi)嚴重。此(ci)外,OpenTSDB的功能升級也比較(jiao)緩慢。 與之相比, Database有(you)著明顯的優勢(shi):
- 數據寫入和查詢的性能遠超OpenTSDB;
- 針對時序數據的高效壓縮機制,壓縮后在磁盤上的存儲空間不到OpenTSDB的1/5;
- 安裝部署非常簡單,單一安裝包完成安裝部署,不依賴其他的第三方軟件,整個安裝部署過程秒級搞定;
- 提供的內建函數覆蓋OpenTSDB支持的全部查詢函數,還支持更多的時序數據查詢函數、標量函數及聚合函數,支持多種時間窗口聚合、連接查詢、表達式運算、多種分組聚合、用戶定義排序、以及用戶定義函數等高級查詢功能。采用類 SQL 的語法規則,更加簡單易學,基本上沒有學習成本。
- 支持多達128個標簽,標簽總長度可達到16KB;
- 除HTTP 之外,還提供Java、Python、C、Rust、Go 等多種語言的接口。
如果我們將原本運行(xing)在(zai)OpenTSDB上的應用遷(qian)移到 TDengine 上,不僅(jin)可以有效降(jiang)低計算和存儲資(zi)源的占用、減少(shao)部署服務器(qi)的規模(mo),還(huan)能夠(gou)極大減少(shao)運行(xing)維護成本,讓運維管理工作更簡(jian)單、更輕松,大幅降(jiang)低總擁有成本。
本文將以“使(shi)用最典(dian)型并廣泛應用的運維監控場景”來說(shuo)明,不用編寫一(yi)行代(dai)碼,如何將基于OpenTSDB的應用快速、安(an)全、可靠地遷移(yi)到(dao) TDengine之上。
1、典型運維監控應用場景
一個典型的運維監控應用場景(jing)的系統整體的架構如下圖(圖1) 所(suo)示(shi)。

在(zai)該應用(yong)場景(jing)中(zhong),包含了部署在(zai)應用(yong)環境中(zhong)負責(ze)收(shou)(shou)集(ji)(ji)機(ji)器度量(Metrics)、網(wang)絡度量(Metrics)以(yi)及應用(yong)度量(Metrics)的 Agent 工(gong)具,匯聚Agent所收(shou)(shou)集(ji)(ji)信息的數(shu)據收(shou)(shou)集(ji)(ji)器,負責(ze)數(shu)據持久化存儲(chu)和管理的系統(tong)以(yi)及監控(kong)數(shu)據可視化工(gong)具(例如:Grafana等)。
其中(zhong),部署在應用節點的(de)Agent負(fu)責(ze)向collectd/Statsd提(ti)供不同來源的(de)運(yun)行指(zhi)標,collectd/StatsD則負(fu)責(ze)將匯聚(ju)的(de)數據推(tui)送到OpenTSDB集群系統,然后(hou)使(shi)用Grafana將數據以(yi)可視化的(de)方式呈(cheng)現出來。
2、遷移服務
- TDengine 安裝部署
首先是(shi)TDengine的(de)安(an)(an)裝,從官(guan)網(wang)上下載TDengine最新穩定版,解壓縮后運行install.sh進行安(an)(an)裝。各(ge)種安(an)(an)裝包的(de)使用(yong)幫助可參(can)考。 注意,安(an)(an)裝完成以后,不要立即啟動(dong) taosd 服務,在正確配置完成參(can)數以后再啟動(dong)。
- 調整數據收集器配置
在TDengine 2.3版本中,在后臺服務taosd啟動后,一個叫taosAdapter的HTTP的服務也會自動啟用。利用(yong)taosAdapter,能夠(gou)兼容(rong)Influxdb的(de)Line Protocol和(he)(he)OpenTSDB的(de)telnet/Json寫入協(xie)議,所以我們可以將collectd和(he)(he)StatsD收集的(de)數據直接推送到TDengine。
如果使用collectd,修改其默認位置在/etc/collectd/collectd.conf的(de)配(pei)(pei)置(zhi)(zhi)文件,使其指向taosAdapter部署的(de)節(jie)點(dian)IP地(di)址(zhi)和端口。假(jia)設taosAdapter的(de)IP地(di)址(zhi)為192.168.1.130,端口為 6046,配(pei)(pei)置(zhi)(zhi)如下:
LoadPlugin write_tsdb
<Plugin write_tsdb>
<Node>
Host "192.168.1.130"
Port "6046"
HostTags "status=production"
StoreRates false
AlwaysAppendDS false
</Node>
</Plugin>
這(zhe)樣collectd就可以通過taosAdapter將數據寫入TDengine了。如果使用的是(shi)StatsD,可以相(xiang)應地(di)調整(zheng)配置文件。
- 調整看板(Dashborad)系統
在(zai)數據(ju)能夠正常(chang)寫(xie)入TDengine后(hou),可以調整適(shi)配(pei)Grafana,將寫(xie)入TDengine的(de)數據(ju)可視化呈現出來。在(zai)TDengine的(de)安裝目錄(lu)下有為Grafana提(ti)供的(de)連(lian)接插件(connector/grafanaplugin)。使用(yong)很(hen)簡(jian)單:
首先將grafanaplugin目錄下的dist目錄整體拷貝到Grafana的插件目錄(默認地址為 /var/lib/grafana/plugins/),然后重啟Grafana,即可在Add Data Source菜單下(xia)看見 TDengine 數據源。
此外,TDengine還(huan)提供(gong)了兩套默認的(de)Dashboard 模板,供(gong)用(yong)戶快(kuai)速查看保存到TDengine庫里的(de)信(xin)息。只需要其(qi)導入到Grafana中并(bing)激活。

至此,我們就完成(cheng)了將OpenTSDB替換成(cheng)為TDengine的遷移工(gong)作。可(ke)以看到(dao)整(zheng)(zheng)個流(liu)程非(fei)常簡單,不需要寫代碼,只(zhi)需要調整(zheng)(zheng)某個配置(zhi)文件(jian)。
3、遷移后架構
完成遷移(yi)以(yi)后(hou),此(ci)時(shi)的(de)(de)系(xi)統整(zheng)體的(de)(de)架構如下(xia)圖(圖3)所示,而整(zheng)個(ge)過程(cheng)中(zhong)采集端(duan)、數據寫(xie)入端(duan)、以(yi)及監控呈現端(duan)均保持了穩定,除(chu)了極少的(de)(de)配置調整(zheng)外,不涉及任(ren)何重(zhong)要的(de)(de)更改和變(bian)動。

OpenTSDB的(de)主(zhu)要(yao)應用(yong)場(chang)景就是運維監控,這種情(qing)況下我們可(ke)以輕松完成向TDengine的(de)遷移,從(cong)而用(yong)上 TDengine更加強大的(de)處理能力(li)和(he)查(cha)詢性能。
在絕大(da)多(duo)數運維監控場景中,如果擁(yong)有一個小規模(mo)的(de)OpenTSDB集群(3臺(tai)及以(yi)下的(de)節點)作為監控數據的(de)存(cun)儲端,依賴OpenTSDB所提(ti)供(gong)的(de)數據存(cun)儲和查詢(xun)功能,那(nei)么可以(yi)安(an)全地將其(qi)替換為TDengine,并(bing)節約更(geng)多(duo)的(de)計算(suan)和存(cun)儲資(zi)(zi)源(yuan)。在同等計算(suan)資(zi)(zi)源(yuan)配置情況下,單(dan)臺(tai)TDengine即可實現3 ~ 5臺(tai)OpenTSDB節點提(ti)供(gong)的(de)服(fu)務能力。如果規模(mo)比較(jiao)大(da),那(nei)便需(xu)要采用TDengine Database集群。
如果(guo)應(ying)用特別復雜,或者應(ying)用領域并不是運維監控場景(jing),你可以繼續閱(yue)讀(du)文章(zhang),更加全面深入(ru)地(di)了解將(jiang)OpenTSDB應(ying)用遷移到TDengine的高級話題。


























