天天看點

如何從 InfluxDB/OpenTSDB 無縫連接配接到 TDengine

小 T 導讀:taosAdapter 是 TDengine 這款時序資料庫(Time Series Database)的配套工具,是 TDengine 叢集和應用程式之間的橋梁和擴充卡。當我們需要從資料收集代理軟體(如 Telegraf、StatsD、collectd 等)攝取資料時,使用 taosAdapter 能讓這一操作變得更加高效。此外,它還提供了 InfluxDB/OpenTSDB 相容的資料攝取接口,允許 InfluxDB/ OpenTSDB應用程式無縫移植到 TDengine。本文将整體介紹一下 taosAdapter,友善大家使用。

taosAdapter 主要提供以下功能:

  • RESTful 接口
  • 相容 InfluxDB v1 寫接口
  • 相容 OpenTSDB JSON 和 telnet 格式寫入
  • 無縫連接配接到 Telegraf
  • 無縫連接配接到 collectd
  • 無縫連接配接到 StatsD
  • 支援 Prometheus remote_read 和 remote_write

    ::: hljs-center

如何從 InfluxDB/OpenTSDB 無縫連接配接到 TDengine

taosAdapter 架構圖

:::

taosAdapter 部署方法

安裝 taosAdapter

有兩種安裝方式,你可以選擇進入濤思資料官網(https://www.taosdata.com/)下載下傳 TDengine server 安裝包,無需任何額外操作即可安裝好 taosAdapter。

這種方式下,如果你需要将 taosAdapter 分離部署在 TDengine server 之外的伺服器上,則應該在該伺服器上安裝完整的 TDengine 來安裝 taosAdapter。除此之外,你還可以選擇使用源代碼編譯生成 taosAdapter,具體可參考如下文檔(https://github.com/taosdata/taosadapter/blob/3.0/BUILD-CN.md)。

啟動/停止 taosAdapter

在 Linux 系統上 taosAdapter 服務預設由 systemd 管理,使用指令 systemctl start taosadapter 可以啟動 taosAdapter 服務,使用指令 systemctl stop taosadapter 可以停止 taosAdapter 服務。

移除 taosAdapter

使用指令 rmtaos 可以移除包括 taosAdapter 在内的 TDengine server 軟體。

更新 taosAdapter

taosAdapter 和 TDengine server 需要使用相同版本,請通過更新 TDengine server 來更新 taosAdapter。

taosAdapter 支援通過指令行參數、環境變量和配置檔案來配置,預設配置檔案是 /etc/taos/taosadapter.toml。其中,指令行參數優先于環境變量優先于配置檔案,指令行用法是 arg=val,如 taosadapter -p=30000 --debug=true,詳細參數清單可參見:https://docs.taosdata.com/reference/taosadapter/。

接口

TDengine RESTful 接口

你可以使用任何支援 http 協定的用戶端通路 RESTful 接口位址 http://<fqdn>:6041/rest/sql 來寫入資料到 TDengine 或從 TDengine 中查詢資料。細節請參考官方文檔(https://docs.taosdata.com/connector/rest-api/)。

InfluxDB

你可以使用任何支援 http 協定的用戶端通路 Restful 接口位址 http://<fqdn>:6041/<APIEndPoint> 來寫入 InfluxDB 相容格式的資料到 TDengine。EndPoint 如下:

/influxdb/v1/write
           

支援 InfluxDB 查詢參數如下:

  • db 指定 TDengine 使用的資料庫名
  • precision TDengine 使用的時間精度
  • u TDengine 使用者名
  • p TDengine 密碼

注意:目前不支援 InfluxDB 的 token 驗證方式,僅支援 Basic 驗證和查詢參數驗證。

OpenTSDB

同樣,你可以使用任何支援 http 協定的用戶端通路 Restful 接口位址 http://<fqdn>:6041/<APIEndPoint> 來寫入 OpenTSDB 相容格式的資料到 TDengine。EndPoint 如下:

/opentsdb/v1/put/json/<db>
/opentsdb/v1/put/telnet/<db>
           

collectd

配置 taosAdapter 接收 collectd 資料的方法如下:

  • 在 taosAdapter 配置檔案(預設位置為 /etc/taos/taosadapter.toml)中使能配置項:
...
[opentsdb_telnet]
enable = true
maxTCPConnections = 250
tcpKeepAlive = false
dbs = ["opentsdb_telnet", "collectd", "icinga2", "tcollector"]
ports = [6046, 6047, 6048, 6049]
user = "root"
password = "taosdata"
...
           

其中 taosAdapter 預設寫入的資料庫名稱為 collectd,也可以修改 taosAdapter 配置檔案 dbs 項來指定不同的名稱。user 和 password 填寫實際 TDengine 配置的值,修改過配置檔案後 taosAdapter 需重新啟動。

StatsD

配置 taosAdapter 接收 StatsD 資料的方法如下:

  • 在 taosAdapter 配置檔案(預設位置 /etc/taos/taosadapter.toml)中使能配置項:
...
[statsd]
enable = true
port = 6044
db = "statsd"
user = "root"
password = "taosdata"
worker = 10
gatherInterval = "5s"
protocol = "udp"
maxTCPConnections = 250
tcpKeepAlive = false
allowPendingMessages = 50000
deleteCounters = true
deleteGauges = true
deleteSets = true
deleteTimings = true
...
           

其中 taosAdapter 預設寫入的資料庫名稱為 statsd,也可以修改 taosAdapter 配置檔案 db 項來指定不同的名稱。同樣,user 和 password 填寫實際 TDengine 配置的值,如果修改了配置檔案,taosAdapter 需重新啟動。

在上述兩種接口下,也可以使用 taosAdapter 指令行參數或設定環境變量啟動的方式,使 taosAdapter 能接收 collectd/StatsD 資料。更多接口及其配置方法,請參考 https://docs.taosdata.com/reference/taosadapter/。

記憶體使用優化方法

taosAdapter 将監測自身運作過程中的記憶體使用率,并通過兩個門檻值(pauseQueryMemoryThreshold 及 pauseAllMemoryThreshold)進行調節,有效值範圍為 -1 到 100 之間的整數,機關為系統實體記憶體的百分比。

  • 當超過 pauseQueryMemoryThreshold 門檻值時将停止處理查詢請求。http 傳回内容為 code 503、body “query memory exceeds threshold”
  • 當超過 pauseAllMemoryThreshold 門檻值時停止處理所有寫入和查詢請求。http 傳回内容為 code 503、body “memory exceeds threshold”

當記憶體回落到門檻值之下時恢複對應功能。狀态檢查接口 http://<fqdn>:6041/-/ping

  • 正常傳回 code 200
  • 無參數。如果記憶體超過 pauseAllMemoryThreshold 将傳回 code 503
  • 請求參數 action=query。如果記憶體超過 pauseQueryMemoryThreshold 或 pauseAllMemoryThreshold 将傳回 code 503

我們可以根據具體項目應用場景和營運政策進行相應調整,建議使用營運監控軟體及時進行系統記憶體狀态監控。負載均衡器也可以通過這個接口檢查 taosAdapter 運作狀态。點選 https://docs.taosdata.com/reference/taosadapter/ 可檢視參數詳情。

如何從舊版本 TDengine 遷移到 taosAdapter

在 TDengine server 2.2.x.x 或更早期版本中,taosd 程序包含一個内嵌的 HTTP 服務。如前文所述,taosAdapter 是一個使用 systemd 管理的獨立軟體,擁有自己的程序,并且兩者有一些配置參數和行為是不同的,請見下表:

::: hljs-center

如何從 InfluxDB/OpenTSDB 無縫連接配接到 TDengine

:::

taosAdapter 主要通過參數 restfulRowLimit 來控制結果的傳回條數,-1 代表無限制,預設無限制。該參數控制以下接口傳回:

  • http://<fqdn>:6041/rest/sql
  • http://<fqdn>:6041/prometheus/v1/remote_read/:db

如果出現故障,我們可以通過指令 systemctl status taosadapter 來檢查 taosAdapter 運作狀态,也可以通過設定 –logLevel 參數或者環境變量 TAOS_ADAPTER_LOG_LEVEL 來調節 taosAdapter 日志輸出詳細程度,有效值包括:panic、fatal、error、warn、warning、info、debug 以及 trace。

寫在最後

受文章篇幅所限,本文并未包含 taosAdapter 應用手冊的所有技術細節,如需查詢相關配置内容,可以移步到 TDengine 官網-技術文檔進行更具體了解。此外,歡迎大家掃碼添加小助手小T,進入 TDengine 使用者交流群,在本群中,你不僅可以與有同樣業務場景的小夥伴進行交流,還可以獲得官方技術人員的專業支援。

::: hljs-center