TDengine+Telegraf+Grafana搭建監(jiān)控系統(tǒng)

簡介:

? ? ??TDengine是一個高效的存儲、查詢、分析時序大數(shù)據(jù)的平臺,專為物聯(lián)網、車聯(lián)網、工業(yè)互聯(lián)網、運維監(jiān)測等優(yōu)化而設計。而作為服務于一家車聯(lián)網公司且有著鉆研精神的大數(shù)據(jù)工程師,自然會摸索一番。
? ? ??在安裝好TDengine后,根據(jù)官方給出的TDengine+Telegraf+Grafana組合,搭建監(jiān)控平臺。

Telegraf--數(shù)據(jù)采集
TDengine--數(shù)據(jù)存儲
Grafana--數(shù)據(jù)展示

利用官方博客給出的c程序向TDengine插入數(shù)據(jù),并通過監(jiān)控平臺觀測CPU、內存和磁盤利用率如下圖:

注意事項:

TDengine官方文檔顯示:
目前,TDengine只支持在使用`systemd`做進程服務管理的linux系統(tǒng)上安裝。其他linux系統(tǒng)的支持正在開發(fā)中。用`which`命令來檢測系統(tǒng)中是否存在`systemd`。
因此,Linux系統(tǒng)需要是`Centos7`和`Ubuntu16.04`及以上系統(tǒng)。

Linux環(huán)境:

1. 系統(tǒng):Centos7.2
2. 內存:8G
3. 磁盤:1T
4. CPU:Intel(R) Pentium(R) CPU G3250 @ 3.20GHz
5. 核數(shù):2核

TDengine部署:

1、從官網https://www.taosdata.com/cn/getting-started/下載RPM包(tdengine-1.6.0.0-3.el7.x86_64.rpm)
2、安裝:rpm -ivh tdengine-1.6.0.0-3.el7.x86_64.rpm
3、啟動taos:systemctl start taosd
4、輸入taos,進入數(shù)據(jù)庫

Telegraf部署:

? ? ??Telegraf 是收集和報告指標和數(shù)據(jù)的代理。Telegraf是TICK Stack的一部分,是一個插件驅動的服務器代理,用于收集和報告指標。

1、進入官網https://portal.influxdata.com/downloads/下載

2、選擇對應版本安裝

wget https://dl.influxdata.com/telegraf/releases/telegraf-1.11.3-1.x86_64.rpm
sudo yum localinstall telegraf-1.11.3-1.x86_64.rpm

3、配置Telegraf,進入/etc/telegraf/telegraf.conf

在[agent]部分修改配置項:

hostname: 區(qū)分不同采集設備的機器名稱,需確保其唯一性metric_batch_size: 30,允許Telegraf每批次寫入記錄最大數(shù)量,增大其數(shù)量可以降低Telegraf的請求發(fā)送頻率,但對于TDengine,該數(shù)值不能超過50

在[[outputs.http]]修改配置項:

url:http://ip:6020/telegraf/udb,其中ip為TDengine集群的中任意一臺服務器的IP地址,6020為TDengine RESTful接口的端口號,telegraf為固定關鍵字,udb為用于存儲采集數(shù)據(jù)的數(shù)據(jù)庫名稱,可預先創(chuàng)建(一般默認生成)
method: "POST" 
username: 登錄TDengine的用戶名,默認為root
password: 登錄TDengine的密碼,默認為taosdata
data_format: "json"
json_timestamp_units: "1ms" `注意這一行不能直接復制粘貼,里面“:”要改成“=”`

4、啟動Telegraf

systemctl start telegraf

5、進入taos數(shù)據(jù)庫,查看生成的庫和表

show databases; --顯示數(shù)據(jù)庫
use udb;--使用數(shù)據(jù)庫
show stables;--顯示超級表
show tables;--顯示普通表

Grafana部署:

? ? ??Grafana是一個跨平臺的開源的度量分析和可視化工具,可以通過將采集的數(shù)據(jù)查詢然后可視化的展示,并及時通知。

1、進入官網https://grafana.com/grafana/download下載并安裝:

wget https://dl.grafana.com/oss/release/grafana-6.2.5-1.x86_64.rpm
sudo yum localinstall grafana-6.2.5-1.x86_64.rpm

2、TDengine的Grafana插件在安裝包的/usr/local/taos/connector/grafana目錄下。

以CentOS 7.2系統(tǒng)為例,將tdengine目錄拷貝到/var/lib/grafana/plugins目錄下

scp -r /usr/local/taos/connector/grafana/tdengine/ /var/lib/grafana/plugins

3、啟動Grafana

systemctl start grafana-server

4、在瀏覽器中通過host:3000登錄Grafana服務器(用戶名/密碼:admin/admin

5、添加數(shù)據(jù)源為TDengine

用戶名/密碼為連接TDengine的root/taosdata,而不是Grafana的admin/admin

6、創(chuàng)建dashboard實現(xiàn)數(shù)據(jù)可視化

注意事項

最近有朋友執(zhí)行我文檔中的SQL語句,發(fā)現(xiàn)顯示no data,原因是新版的TDengine改變了各個參數(shù)在數(shù)據(jù)庫中的名稱,請大家對照taos數(shù)據(jù)庫中的表名編寫SQL語句。

以上分為7個步驟,分別用1-7標明:

1、點擊Queries圖標
2、選擇Query中的TDengine
3、在INPUT SQL中填入需要顯示的指標,以上為CPU利用率:
select avg(f_usage_user) from udb.cpu WHERE ts>=$from and ts<$to interval($interval)
4、為Panel形取一個別名:CPU
5、點擊GENERATE SQL,生成圖形
6、選擇需要展示的時間段,如Last 5 minutes
7、選擇圖形刷新的頻率,如5s

7、配置Visualization參數(shù)

8、設置General參數(shù)

點擊General,為Panel修改名稱為:CPU利用率

9、配置Settings

10、保存后得到下圖

11、進入Grafana官網https://grafana.com/grafana/plugins?type=panel還可以安裝一些插件,如時鐘等

grafana-cli plugins install grafana-clock-panel
systemctl restart grafana-server

重啟Grafana后,刷新dashboard便會出現(xiàn)Clock

12、其他監(jiān)控指標如下:

磁盤利用率

select avg(f_used_percent) from udb.disk WHERE ts>=$from and ts<$to interval($interval);

總內存

select avg(f_total) from udb.mem WHERE ts>=$from and ts<$to interval($interval);

內存利用率

select avg(f_used_percent) from udb.mem WHERE ts>=$from and ts<$to interval($interval);

可用內存

select avg(f_available) from udb.mem WHERE ts>=$from and ts<$to interval($interval);

總結:

? ? ??基于TDengine+Telegraf+Grafana的簡易監(jiān)控平臺搭建完成,感興趣的朋友可以監(jiān)控更多指標并加上報警功能等。TDengine自開源以來便引起了巨大反響,使用過一段時間后,不得不說,TDengine的誕生確實為物聯(lián)網數(shù)據(jù)的存儲分析帶來了便利,我有以下幾個心得:

1、從部署來講,即使搭建過很多次Hadoop架構,我還是得仔細配置調參測試,至少得折騰一兩天,TDengine單機版部署確實是秒級,集群版部署流程不太清楚。

2、從存儲來講,我用的是snappy算法,官方給出的壓縮率是remaining 20%,在測試的時候感覺并沒有這么多,我們磁盤總共60T,3月開始到現(xiàn)在用了差不多10T了。TDengine的壓縮率是10%。

3、從數(shù)據(jù)分析來講,我們讀取Hbase數(shù)據(jù),快的方法是Spark,我們的行健是車輛ID和時間戳的組合,相鄰時間的數(shù)據(jù)可能分散在各個region上,在不同的機器上,通過RPC連接,查詢時也比較慢。而TDengine設計時一輛車對應一張表,連續(xù)的數(shù)據(jù)在一個block上,查詢非??欤矣胮ython連接單機版taos數(shù)據(jù)庫,讀取和分析整個超級表也是秒級的,集群版沒有測試過。

4、從運維上來講,我安裝的每個組件是分開部署,不像Ambari那種集成了所有組件的,集群出問題了就要一點點排查,不過好在Hadoop架構相對比較成熟了,網上應該總能找到解決辦法。而TDengine就是把所有東西都封裝在一個小小的包里面,運維應該會相對輕松。

? ? ??以上言論均為一家之言,最后,希望能盡快感受到集群版的魅力,也祝愿TDengine蓬勃發(fā)展。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容