運維監控場景下,如何從OpenTSDB遷移到TDengine

語言: CN / TW / HK

OpenTSDB是一個經典的時序資料庫系統,它沒有開發自己的儲存引擎,而是基於HBase,對於已經有HBase基礎服務的企業而言,降低了門檻。而且得益於其先發優勢,OpenTSDB在運維監控領域有不少應用。不過也因為要依賴HBase,系統的效能、壓縮效率逐漸成為瓶頸。隨著業務系統規模的擴大,部署成本、執行效率等方面的問題日益嚴重。此外,OpenTSDB的功能升級也比較緩慢。 與之相比,TDengine有著明顯的優勢:

  • 資料寫入和查詢的效能遠超OpenTSDB;
  • 針對時序資料的高效壓縮機制,壓縮後在磁碟上的儲存空間不到OpenTSDB的1/5;
  • 安裝部署非常簡單,單一安裝包完成安裝部署,除了taosAdapter需要依賴Go執行環境外,不依賴其他第三方軟體,整個安裝部署非常迅速;
  • 提供的內建函式覆蓋OpenTSDB支援的全部查詢函式,還支援更多的時序資料查詢函式、標量函式及聚合函式,支援多種時間視窗聚合、連線查詢、表示式運算、多種分組聚合、使用者定義排序、以及使用者定義函式等高階查詢功能。採用類 SQL 的語法規則,更加簡單易學,基本上沒有學習成本。
  • 支援多達128個標籤,標籤總長度可達到16KB;
  • 除HTTP 之外,還提供Java、Python、C、Rust、Go 等多種語言的介面。

如果我們將原本執行在OpenTSDB上的應用遷移到 TDengine 上,不僅可以有效降低計算和儲存資源的佔用、減少部署伺服器的規模,還能夠極大減少執行維護成本,讓運維管理工作更簡單、更輕鬆,大幅降低總擁有成本。

本文將以“使用最典型並廣泛應用的運維監控場景”來說明,不用編寫一行程式碼,如何將基於OpenTSDB的應用快速、安全、可靠地遷移到 TDengine之上。

1、典型運維監控應用場景

一個典型的運維監控應用場景的系統整體的架構如下圖(圖1) 所示。

圖1. 運維監控場景典型架構

圖1. 運維監控場景典型架構

在該應用場景中,包含了部署在應用環境中負責收集機器度量(Metrics)、網路度量(Metrics)以及應用度量(Metrics)的 Agent 工具,匯聚Agent所收集資訊的資料收集器,負責資料持久化儲存和管理的系統以及監控資料視覺化工具(例如:Grafana等)。

其中,部署在應用節點的Agent負責向collectd/Statsd提供不同來源的執行指標,collectd/StatsD則負責將匯聚的資料推送到OpenTSDB集群系統,然後使用Grafana將資料以視覺化的方式呈現出來。

2、遷移服務

  • TDengine 安裝部署

首先是TDengine的安裝,從官網上下載TDengine最新穩定版,解壓縮後執行install.sh進行安裝。各種安裝包的使用幫助可參考《TDengine多種安裝包的安裝和解除安裝》。 注意,安裝完成以後,不要立即啟動 taosd 服務,在正確配置完成引數以後再啟動。

  • 調整資料收集器配置

在TDengine 2.3版本中,在後臺服務taosd啟動後,一個叫taosAdapter的HTTP的服務也會自動啟用。利用taosAdapter,能夠相容Influxdb的Line Protocol和OpenTSDB的telnet/Json寫入協議,所以我們可以將collectd和StatsD收集的資料直接推送到TDengine。

如果使用collectd,修改其預設位置在/etc/collectd/collectd.conf的配置檔案,使其指向taosAdapter部署的節點IP地址和埠。假設taosAdapter的IP地址為192.168.1.130,埠為 6046,配置如下:

LoadPlugin write_tsdb
<Plugin write_tsdb>
    <Node>
        Host "192.168.1.130"
        Port "6046"
        HostTags "status=production"
        StoreRates false
        AlwaysAppendDS false
    </Node>
</Plugin>

這樣collectd就可以通過taosAdapter將資料寫入TDengine了。如果使用的是StatsD,可以相應地調整配置檔案。

  • 調整看板(Dashborad)系統

在資料能夠正常寫入TDengine後,可以調整適配Grafana,將寫入TDengine的資料視覺化呈現出來。在TDengine的安裝目錄下有為Grafana提供的連線外掛(connector/grafanaplugin)。使用很簡單:

首先將grafanaplugin目錄下的dist目錄整體拷貝到Grafana的外掛目錄(預設地址為 /var/lib/grafana/plugins/),然後重啟Grafana,即可在Add Data Source選單下看見 TDengine 資料來源。

此外,TDengine還提供了兩套預設的Dashboard 模板,供使用者快速檢視儲存到TDengine庫裡的資訊。只需要其匯入到Grafana中並激活。

圖2. 匯入Grafana模板

至此,我們就完成了將OpenTSDB替換成為TDengine的遷移工作。可以看到整個流程非常簡單,不需要寫程式碼,只需要調整某個配置檔案。

3、遷移後架構

完成遷移以後,此時的系統整體的架構如下圖(圖3)所示,而整個過程中採集端、資料寫入端、以及監控呈現端均保持了穩定,除了極少的配置調整外,不涉及任何重要的更改和變動。

圖3. 遷移完成後的系統架構

OpenTSDB的主要應用場景就是運維監控,這種情況下我們可以輕鬆完成向TDengine的遷移,從而用上 TDengine更加強大的處理能力和查詢效能。

在絕大多數運維監控場景中,如果擁有一個小規模的OpenTSDB叢集(3臺及以下的節點)作為監控資料的儲存端,依賴OpenTSDB所提供的資料儲存和查詢功能,那麼可以安全地將其替換為TDengine,並節約更多的計算和儲存資源。在同等計算資源配置情況下,單臺TDengine即可實現3 ~ 5臺OpenTSDB節點提供的服務能力。如果規模比較大,那便需要採用TDengine叢集。

如果應用特別複雜,或者應用領域並不是運維監控場景,你可以繼續閱讀下一篇文章,更加全面深入地瞭解將OpenTSDB應用遷移到TDengine的高階話題。