目錄
- 前言
- 一、TD 特點
- 二、安裝部署
- 2.1 部署
- 2.2 驗證
- 三、應用領域
- 3.1 運維監控
- 3.2 遠端擴展
- 總結
前言
TDengine 由北京濤思資料科技有限公司(TAOS Data)自主研發,而且不依賴于任何開源或第三方軟體,擁有自主的知識產權,其應用領域涉及到物聯網、車聯網、工業互聯網、IT運維等,接下來聊一下 TDengine 在IT運維監控領域的應用,
一、TD 特點
TDengine 是一個時序資料庫,所謂時序資料,就是以時間軸為維度至上而下的一系列序列(樣本),尤其是在 IT 基礎設施、運維監控系統和物聯網中應用得最為廣泛,當然時序資料庫來說還有很多,比如 InfluxDB、Prometheus、Graphite等,而對于 TDengine,它有以下幾個特點:
- 高性能;
- 高可靠;
- 可伸縮;
- 零管理,
至于這些特點所代表的是什么意思,我認為只有你親自實踐和應用之后才能有所體會,而我們為什么不選擇傳統的關系型資料庫呢?盡管傳統的關系型資料庫也能夠處理這些資料,但在面對物聯網大資料時就會顯得心有余而力不足,
二、安裝部署
接下來就是我們的安裝部署環節,為了節省時間,我這里選擇使用 Docker 方式進行部署,而對于 Docker 的安裝,我之前的博客有做過詳細介紹《Docker + Jenkins + Gitlab 自動化構建部署》,這里就不再過多贅述,想要了解更多 Docker 相關內容,可去其 Docker官方,里面介紹都非常詳細,廢話不多說,接下來直接進行安裝部署,
2.1 部署
1、pull 鏡像

2、運行容器

-itd # -i:標準輸入輸出 -t:分配一個終端或控制臺 -d:后臺啟動
-u root # 以root身份執行
--privileged=true # 擁有root權限
--name tdengine # 容器實體名
--restart=always # 容器隨docker自啟動,因為重啟docker時,默認容器都會被關閉
-p # 映射埠
-v # 映射目錄
-e # 指定時區
啟動容器時,我映射了多個埠,關于這些埠,大家可以查看TDengine 官方埠說明,而我們用 Docker 啟動的容器時,其時間和宿主機時間可能不一致,關于如何實作兩者時間的一致性,大家可以參考我之前的博文《Docker容器與宿主機設定時間同步》,
3、安裝 TDengine 客戶端

注:這里很奇怪,在我沒安裝 TDengine 客戶端之前,TDengine 容器的目錄卷/etc/taos總是映射(掛載)不到宿主機上,其實也不是映射不了,就是映射后宿主機的/etc/taos是一個空檔案夾,組態檔居然不見了,然后我就docker exec進入容器后,找出組態檔所在路徑xxx(具體路徑忘了),不應該啊,不是在/etc/taos嗎,既然這樣我就重新把這個目錄xxx掛載到/etc/taos,這次總該沒錯了吧,結果宿主機目錄依然為空,盡管容器是可正常運行的,但是外部根本訪問不了 TDengine,那這將毫無意義啊,還占用我那么多埠,
還得出殺手锏啊,運行的容器總該要有客戶端來登錄吧,要不然每次都docker exec進入,真麻煩,然后我就去 TDengine 官網下載客戶端的原始碼包(下載地址傳送門),安裝很簡單,直接運行壓縮包里的可執行腳本檔案即可(安裝成功可看到successful字樣),然后你會發現宿主機的/etc/taos居然出現了組態檔,當然這一切都回歸正常了,外部也可正常訪問了,不知道用 Docker 方式部署的小伙伴們有沒有出現這個問題,
2.2 驗證
通過 TDengineGUI 看看是否可連接上部署好的資料庫,配置完成后可看到連接成功,TDengineGUI 是由天大某團隊開發的一款開源工具,該工具通過 TDengine RESTful 連接資料庫,可對相關的表做簡單的查詢,還是挺方便的,大家可以體驗一下,下載渠道為:GitHub、碼云,


至此,TDengine 就已經部署完成!!
三、應用領域
3.1 運維監控
1、監控方案
在實際生產中,我制定了多套監控方案(告警這里先忽略,后續會講到),分別為:
-
Exporter + prometheus + Grafana;
-
Telegraf + prometheus + Grafana;
-
Telegraf + TDengine + Grafana;
-
Telegraf + InfluxDB + Grafana,
我個人認為相對于 Exporter 來說,Telegraf 更容易管理和維護,首先 Exporter 是各種獨立的資源包,盡管它是開箱即用,但是你并不能保證每個 Exporter 都是存活的,而對于 Telegraf 來說,它更集中,在說 Telegraf 之前先說一聲 Telegraf 是什么?
2、Telegraf 介紹
Telegraf 是TICK Stack的一部分,是一個輕量級插件驅動的服務器代理,用于收集和報告各種指標,包括從第三方 API 提取指標 , 它還具有輸出插件,可將指標發送到各種其他資料存盤、服務和訊息佇列,包括 InfluxDB、Graphite、OpenTSDB、Datadog、Librato、Kafka、MQTT、NSQ 等, Telegraf 下載地址傳送門,Telegraf 官方檔案傳送門,
3、相關部署檔案
以上監控方案的部署檔案在我之前的博客中有詳細部署步驟(除了 InfluxDB,不過部署方法都大同小異),還沒部署過得小伙伴可以去參考參考哦,
《Prometheus + Grafana 監控平臺》
《Telegraf + Promethue + Grafana 監控平臺》
《Telegraf + TDengine + Grafana 監控平臺》
其實部署都很簡單,重點在于監控指標,指標查詢方法,用過 TDengine 的小伙伴應該都知道,其查詢方式基本上和 mysql 的查詢方式一致,
4、其他說明
相對于 Prometheus、InfluxDB 來說,其在 grafana web 展示中沒有更多的模板,也就是說每個圖表都需要手動創建,以及相應的指標查詢(計算)sql 陳述句,因此要熟悉基本的 sql 查詢陳述句、相關的 sql 函式、聚合等,不過相對于 Prometheus 來說,學習成本更低,因為 Prometheus 也有一套查詢語言,關于如何選擇時序資料庫,這得根據你的應用場景,后續會繼續對比分析各時序的優缺點、性能等,在者就是,TDengine 支持集群,而且是免費的,InfluxDB 也支持集群,但是其集群版是收費,而 Prometheus 卻只支持單節點部署,因此接下來我會介紹使用 Prometheus 作為資料存盤時,如何對其做遠端擴展,
3.2 遠端擴展
這里我采用 Prometheus 作為資料存盤,同樣跳過部署程序,由于 Prometheus 是單節點部署,沒有集群或高可用,因此我們可以采用其他時序資料庫作為遠端存盤,從而實作 Prometheus 僅收集資料,不存盤資料,其資料可存盤到其他時序資料庫,如 InfluxDB、TimescaleDB、 PostgreSQL、TDengine 等,本次選擇 TDengine 作為遠端資料存盤,關于 Prometheus 寫入 TDengine,可參考 TD 官方檔案,其實就是通過 Bailongma API 介面寫入,
1、Bailongma 注意事項
Bailongma 原始碼包提供了 telegraf API 和 Prometheus API 的編譯,針對 telegraf API 的編譯方法我前面的博文也有具體步驟,Prometheus API 方式與其一致,但編譯時可能會提示缺少相關依賴,根據提示執行即可,具體實體操作如下圖:下圖是在編譯 Prometheus API 出現的小問題,根據提示執行即可,



當生成blm_prometheus可執行檔案時,表明編譯成功,具體引數說明,可通過 ./blm_prometheus -h進行查看,
2、Prometheus 寫入配置

remote_write:
- url: "http://10.20.10.69:6666/receive"
remote_read:
- url: "http://10.20.10.69:6666/pull"

這樣做的好處有什么呢?由于 Prometheus 是單節點的,不支持集群,因此存盤就成為它的瓶頸,這時通過寫入遠端時序資料庫就可解決集群這個瓶頸,最關鍵的是 TDengine 的集群版是免費的,而且性能也是非常好的,為 TDengine 官方的開源精神點贊,
3、監控告警
其實,以上僅僅是實作了資料的采集與存盤,還差最后的告警,如果僅僅是采集資料,那在監控的領域中將是毫無意義的,因此我們還得配合 AlertManager 進行相應的告警閾值設定和告警操作(郵件、短信等),這個告警部分后面單獨分享,
總結
通過上面的簡單介紹,其實 TDengine 還是挺人性化的,其有著我們熟悉的 sql 查詢陳述句,而且還支持連續查詢、資料訂閱、快取、報警監測等高級功能,再就是關于 TDengine 在監控領域的應用,重點不在于如何安裝部署,而是在于其資料存盤的性能,因為監控無非是做一個資料的存盤,后續會繼續分享各時序資料庫的性能對比、應用場景以及告警操作等,
<點擊跳轉至開頭>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289423.html
標籤:其他
上一篇:git的簡單使用和遇到的一些問題
