TDengine 在IT运维监控领域的应用
目錄
- 前言
- 一、TD 特點
- 二、安裝部署
- 2.1 部署
- 2.2 驗證
- 三、應(yīng)用領(lǐng)域
- 3.1 運維監(jiān)控
- 3.2 遠端擴展
- 總結(jié)
前言
TDengine 由北京濤思數(shù)據(jù)科技有限公司(TAOS Data)自主研發(fā),而且不依賴于任何開源或第三方軟件,擁有自主的知識產(chǎn)權(quán)。其應(yīng)用領(lǐng)域涉及到物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)、IT運維等。接下來聊一下 TDengine 在IT運維監(jiān)控領(lǐng)域的應(yīng)用。
一、TD 特點
TDengine 是一個時序數(shù)據(jù)庫,所謂時序數(shù)據(jù),就是以時間軸為維度至上而下的一系列序列(樣本),尤其是在 IT 基礎(chǔ)設(shè)施、運維監(jiān)控系統(tǒng)和物聯(lián)網(wǎng)中應(yīng)用得最為廣泛。當(dāng)然時序數(shù)據(jù)庫來說還有很多,比如 InfluxDB、Prometheus、Graphite等。而對于 TDengine,它有以下幾個特點:
- 高性能;
- 高可靠;
- 可伸縮;
- 零管理。
至于這些特點所代表的是什么意思,我認為只有你親自實踐和應(yīng)用之后才能有所體會。而我們?yōu)槭裁床贿x擇傳統(tǒng)的關(guān)系型數(shù)據(jù)庫呢?盡管傳統(tǒng)的關(guān)系型數(shù)據(jù)庫也能夠處理這些數(shù)據(jù),但在面對物聯(lián)網(wǎng)大數(shù)據(jù)時就會顯得心有余而力不足。
二、安裝部署
接下來就是我們的安裝部署環(huán)節(jié),為了節(jié)省時間,我這里選擇使用 Docker 方式進行部署。而對于 Docker 的安裝,我之前的博客有做過詳細介紹《Docker + Jenkins + Gitlab 自動化構(gòu)建部署》,這里就不再過多贅述。想要了解更多 Docker 相關(guān)內(nèi)容,可去其 Docker官方,里面介紹都非常詳細。廢話不多說,接下來直接進行安裝部署。
2.1 部署
1、pull 鏡像
2、運行容器
-itd # -i:標準輸入輸出 -t:分配一個終端或控制臺 -d:后臺啟動 -u root # 以root身份執(zhí)行 --privileged=true # 擁有root權(quán)限 --name tdengine # 容器實例名 --restart=always # 容器隨docker自啟動,因為重啟docker時,默認容器都會被關(guān)閉 -p # 映射端口 -v # 映射目錄 -e # 指定時區(qū)啟動容器時,我映射了多個端口,關(guān)于這些端口,大家可以查看TDengine 官方端口說明。而我們用 Docker 啟動的容器時,其時間和宿主機時間可能不一致,關(guān)于如何實現(xiàn)兩者時間的一致性,大家可以參考我之前的博文《Docker容器與宿主機設(shè)置時間同步》。
3、安裝 TDengine 客戶端
注:這里很奇怪,在我沒安裝 TDengine 客戶端之前,TDengine 容器的目錄卷/etc/taos總是映射(掛載)不到宿主機上,其實也不是映射不了,就是映射后宿主機的/etc/taos是一個空文件夾,配置文件居然不見了,然后我就docker exec進入容器后,找出配置文件所在路徑xxx(具體路徑忘了),不應(yīng)該啊,不是在/etc/taos嗎。既然這樣我就重新把這個目錄xxx掛載到/etc/taos,這次總該沒錯了吧,結(jié)果宿主機目錄依然為空。盡管容器是可正常運行的,但是外部根本訪問不了 TDengine,那這將毫無意義啊,還占用我那么多端口。
還得出殺手锏啊,運行的容器總該要有客戶端來登錄吧,要不然每次都docker exec進入,真麻煩。然后我就去 TDengine 官網(wǎng)下載客戶端的源碼包(下載地址傳送門),安裝很簡單,直接運行壓縮包里的可執(zhí)行腳本文件即可(安裝成功可看到successful字樣)。然后你會發(fā)現(xiàn)宿主機的/etc/taos居然出現(xiàn)了配置文件,當(dāng)然這一切都回歸正常了,外部也可正常訪問了。不知道用 Docker 方式部署的小伙伴們有沒有出現(xiàn)這個問題。
2.2 驗證
通過 TDengineGUI 看看是否可連接上部署好的數(shù)據(jù)庫,配置完成后可看到連接成功。TDengineGUI 是由天大某團隊開發(fā)的一款開源工具,該工具通過 TDengine RESTful 連接數(shù)據(jù)庫,可對相關(guān)的表做簡單的查詢,還是挺方便的,大家可以體驗一下,下載渠道為:GitHub、碼云。
至此,TDengine 就已經(jīng)部署完成!!
三、應(yīng)用領(lǐng)域
3.1 運維監(jiān)控
1、監(jiān)控方案
在實際生產(chǎn)中,我制定了多套監(jiān)控方案(告警這里先忽略,后續(xù)會講到),分別為:
-
Exporter + prometheus + Grafana;
-
Telegraf + prometheus + Grafana;
-
Telegraf + TDengine + Grafana;
-
Telegraf + InfluxDB + Grafana。
我個人認為相對于 Exporter 來說,Telegraf 更容易管理和維護。首先 Exporter 是各種獨立的資源包,盡管它是開箱即用,但是你并不能保證每個 Exporter 都是存活的。而對于 Telegraf 來說,它更集中。在說 Telegraf 之前先說一聲 Telegraf 是什么?
2、Telegraf 介紹
Telegraf 是TICK Stack的一部分,是一個輕量級插件驅(qū)動的服務(wù)器代理,用于收集和報告各種指標,包括從第三方 API 提取指標 , 它還具有輸出插件,可將指標發(fā)送到各種其他數(shù)據(jù)存儲、服務(wù)和消息隊列,包括 InfluxDB、Graphite、OpenTSDB、Datadog、Librato、Kafka、MQTT、NSQ 等。 Telegraf 下載地址傳送門,Telegraf 官方文檔傳送門。
3、相關(guān)部署文檔
以上監(jiān)控方案的部署文檔在我之前的博客中有詳細部署步驟(除了 InfluxDB,不過部署方法都大同小異),還沒部署過得小伙伴可以去參考參考哦。
《Prometheus + Grafana 監(jiān)控平臺》
《Telegraf + Promethue + Grafana 監(jiān)控平臺》
《Telegraf + TDengine + Grafana 監(jiān)控平臺》
其實部署都很簡單,重點在于監(jiān)控指標,指標查詢方法,用過 TDengine 的小伙伴應(yīng)該都知道,其查詢方式基本上和 mysql 的查詢方式一致。
4、其他說明
相對于 Prometheus、InfluxDB 來說,其在 grafana web 展示中沒有更多的模板,也就是說每個圖表都需要手動創(chuàng)建,以及相應(yīng)的指標查詢(計算)sql 語句,因此要熟悉基本的 sql 查詢語句、相關(guān)的 sql 函數(shù)、聚合等。不過相對于 Prometheus 來說,學(xué)習(xí)成本更低,因為 Prometheus 也有一套查詢語言。關(guān)于如何選擇時序數(shù)據(jù)庫,這得根據(jù)你的應(yīng)用場景,后續(xù)會繼續(xù)對比分析各時序的優(yōu)缺點、性能等。在者就是,TDengine 支持集群,而且是免費的,InfluxDB 也支持集群,但是其集群版是收費,而 Prometheus 卻只支持單節(jié)點部署,因此接下來我會介紹使用 Prometheus 作為數(shù)據(jù)存儲時,如何對其做遠端擴展。
3.2 遠端擴展
這里我采用 Prometheus 作為數(shù)據(jù)存儲,同樣跳過部署過程,由于 Prometheus 是單節(jié)點部署,沒有集群或高可用,因此我們可以采用其他時序數(shù)據(jù)庫作為遠端存儲,從而實現(xiàn) Prometheus 僅收集數(shù)據(jù),不存儲數(shù)據(jù),其數(shù)據(jù)可存儲到其他時序數(shù)據(jù)庫,如 InfluxDB、TimescaleDB、 PostgreSQL、TDengine 等。本次選擇 TDengine 作為遠端數(shù)據(jù)存儲,關(guān)于 Prometheus 寫入 TDengine,可參考 TD 官方文檔,其實就是通過 Bailongma API 接口寫入。
1、Bailongma 注意事項
Bailongma 源碼包提供了 telegraf API 和 Prometheus API 的編譯,針對 telegraf API 的編譯方法我前面的博文也有具體步驟,Prometheus API 方式與其一致,但編譯時可能會提示缺少相關(guān)依賴,根據(jù)提示執(zhí)行即可,具體實例操作如下圖:下圖是在編譯 Prometheus API 出現(xiàn)的小問題,根據(jù)提示執(zhí)行即可。
當(dāng)生成blm_prometheus可執(zhí)行文件時,表明編譯成功。具體參數(shù)說明,可通過 ./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 是單節(jié)點的,不支持集群,因此存儲就成為它的瓶頸,這時通過寫入遠端時序數(shù)據(jù)庫就可解決集群這個瓶頸,最關(guān)鍵的是 TDengine 的集群版是免費的,而且性能也是非常好的,為 TDengine 官方的開源精神點贊。
3、監(jiān)控告警
其實,以上僅僅是實現(xiàn)了數(shù)據(jù)的采集與存儲,還差最后的告警。如果僅僅是采集數(shù)據(jù),那在監(jiān)控的領(lǐng)域中將是毫無意義的,因此我們還得配合 AlertManager 進行相應(yīng)的告警閾值設(shè)置和告警操作(郵件、短信等),這個告警部分后面單獨分享。
總結(jié)
通過上面的簡單介紹,其實 TDengine 還是挺人性化的,其有著我們熟悉的 sql 查詢語句,而且還支持連續(xù)查詢、數(shù)據(jù)訂閱、緩存、報警監(jiān)測等高級功能。再就是關(guān)于 TDengine 在監(jiān)控領(lǐng)域的應(yīng)用,重點不在于如何安裝部署,而是在于其數(shù)據(jù)存儲的性能,因為監(jiān)控?zé)o非是做一個數(shù)據(jù)的存儲。后續(xù)會繼續(xù)分享各時序數(shù)據(jù)庫的性能對比、應(yīng)用場景以及告警操作等。
本文正在參與 擁抱開源 │ 濤思數(shù)據(jù) TDengine 有獎?wù)鞲?br /> 活動鏈接:https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c
<點擊跳轉(zhuǎn)至開頭>
總結(jié)
以上是生活随笔為你收集整理的TDengine 在IT运维监控领域的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记 - Front End - 新知识
- 下一篇: Auto.js逆向分析-提取脚本文件(附