這篇文章主要介紹了TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有雙塔免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
在搞懂了基本的功能后,便上線了TDengine版的監(jiān)控系統(tǒng),但是發(fā)現(xiàn),在grafana中居然不能“group by”,只能通過寫where多條語句將多個(gè)短信狀態(tài)數(shù)據(jù)放到一個(gè)儀表盤里,如圖:
如果where條件有更多,這樣的方法就太笨,并且靈活性太差。
于是,開始仔細(xì)研究官方文檔,搞懂了“超級(jí)表”、“連續(xù)查詢“等,在這個(gè)過程中遇到過不少問題,在這里做一下記錄(測試環(huán)境,數(shù)據(jù)是模擬產(chǎn)生的)。
一、安裝和運(yùn)行
測試環(huán)境
cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
安裝很簡單:
rpm -ivh tdengine-1.6.3.1-3.x86_64.rpm
配置都用默認(rèn)的(未改配置文件)
啟動(dòng)TDengine:
systemctl start taosd
二、建庫、建表
在命令行輸入“taos”
taos>
以下建庫、建表操作都在此提示符下進(jìn)行
創(chuàng)建數(shù)據(jù)庫
create database jk keep 365 precision 'us';
說明:
keep 365表示該庫保存365天內(nèi)的數(shù)據(jù),365天之前的數(shù)據(jù)會(huì)被自動(dòng)清除(因?yàn)槭菚r(shí)序數(shù)據(jù)庫,所以不能對(duì)庫中的表進(jìn)行delete操作);
precision ‘us’表示數(shù)據(jù)庫中的時(shí)間戳精度為“微秒”,(默認(rèn)是毫秒,也可以顯示寫為precision ‘ms’), 經(jīng)測試,此處用單引號(hào)和雙引號(hào)都是可以的,但是不能沒有引號(hào)。
配置文件中已經(jīng)不支持時(shí)間精度的配置,必須在建庫的時(shí)候指定(測試了很多配置都不生效,Issues后得到的官方回復(fù))
TDengine的設(shè)計(jì)初衷是用于物聯(lián)網(wǎng),設(shè)備的信息采集精度到“毫秒”已經(jīng)足夠用,但我司的短信平臺(tái)會(huì)有突發(fā)大量數(shù)據(jù)產(chǎn)生,為了避免可能會(huì)導(dǎo)致的數(shù)據(jù)丟失,將精度設(shè)置為“微秒”,經(jīng)測試,效果很好,測試的模擬數(shù)據(jù)插入時(shí)間戳都用“now”獲取,下圖左側(cè)為“毫秒”精度,能看到有“0 row(s)”的情況出現(xiàn),表示有數(shù)據(jù)未插入, 右側(cè)為“微秒”精度,未見未插入數(shù)據(jù)。
2. 創(chuàng)建超級(jí)表
進(jìn)入數(shù)據(jù)庫“jk”
taos> use jk; Database changed.
create table jiankong (ts timestamp, gatewayid binary(6), companyid binary(20), provinceid binary(10), cityid binary(10), value int, timestr binary(30)) tags(type binary(10), subtype binary(10));
短信系統(tǒng)中有3種type,幾百種subtype,所以將這些靜態(tài)信息(或者簡單地理解為需要將進(jìn)行g(shù)roup by的字段設(shè)置為tag)
解釋一下超級(jí)表:
STable是同一類型數(shù)據(jù)采集點(diǎn)的抽象,是同類型采集實(shí)例的集合,包含多張數(shù)據(jù)結(jié)構(gòu)一樣的子表。
每個(gè)STable為其子表定義了表結(jié)構(gòu)和一組標(biāo)簽:表結(jié)構(gòu)即表中記錄的數(shù)據(jù)列及其數(shù)據(jù)類型;標(biāo)簽名和數(shù)據(jù)類型由STable定義,標(biāo)簽值記錄著每個(gè)子表的靜態(tài)信息,用以對(duì)子表進(jìn)行分組過濾。
子表本質(zhì)上就是普通的表,由一個(gè)時(shí)間戳主鍵和若干個(gè)數(shù)據(jù)列組成,每行記錄著具體的數(shù)據(jù),數(shù)據(jù)查詢操作與普通表完全相同;但子表與普通表的區(qū)別在于每個(gè)子表從屬于一張超級(jí)表,并帶有一組由STable定義的標(biāo)簽值。
針對(duì)所有的通過STable創(chuàng)建的子表進(jìn)行多表聚合查詢,支持按照全部的TAG值進(jìn)行條件過濾(where),并可將結(jié)果按照TAGS中的值進(jìn)行聚合(group by),暫不支持針對(duì)binary類型的模糊匹配過濾。
標(biāo)簽數(shù)據(jù)(或者叫標(biāo)簽值)直接關(guān)聯(lián)到每個(gè)子表,相同的標(biāo)簽值(一個(gè)或者多個(gè),最多6個(gè))定位到一個(gè)子表(用“寫數(shù)據(jù)時(shí)自動(dòng)建表”的方式,可以將“相同的標(biāo)簽值”對(duì)應(yīng)到多個(gè)子表)。
tag值支持中文,需要將tag類型設(shè)置為NCHAR(在其他測試中已經(jīng)驗(yàn)證過)。
3. 創(chuàng)建子表(子表就是普通表,表結(jié)構(gòu)完全由超級(jí)表定義):
create table jiankong_sub_send using jiankong tags ('send', 'send'); create table jiankong_sub_delivrd using jiankong tags ('delivrd', 'delivrd'); create table jiankong_sub_undeliv_db_0108 using jiankong tags ('undeliv', 'DB:0108'); create table jiankong_sub_undeliv_db_0107 using jiankong tags ('undeliv', 'DB:0107'); create table jiankong_sub_undeliv_balance using jiankong tags ('undeliv', 'BALANCE'); create table jiankong_sub_undeliv_id_0076 using jiankong tags ('undeliv', 'ID:0076'); create table jiankong_sub_undeliv_ib_0008 using jiankong tags ('undeliv', 'IB:0008');
相同類型的type和subtype的組合創(chuàng)建為一個(gè)子表(只是進(jìn)行測試,所以并沒有將所有的幾百個(gè)subtype都進(jìn)行建表)
4. 插入數(shù)據(jù)
INSERT INTO jiankong_sub_send VALUES (now, 3034, '1564', '109', '1272', '2', '201909231530') INSERT INTO jiankong_sub_delivrd VALUES (now, 3034, '1564', '109', '1272', '2', '201909231530') INSERT INTO jiankong_sub_undeliv_balance VALUES (now, 1179, '152', '106', '1000', '1', '201910071113') INSERT INTO jiankong_sub_undeliv_id_0076 VALUES (now, 1165, '1785', '111', '1226', '1', '201910071415') INSERT INTO jiankong_sub_undeliv_ib_0008 VALUES (now, 1165, '1785', '127', '1000', '2', '201910061727') INSERT INTO jiankong_sub_undeliv_db_0108 VALUES (now, 90, '548', '123', '1237', '1', '201910061127') INSERT INTO jiankong_sub_undeliv_db_0107 VALUES (now, 2261, '808', '116', '1314', '2', '201910032106')
以上是對(duì)上述創(chuàng)建的7個(gè)子表分別插入模擬數(shù)據(jù),由于模擬大量數(shù)據(jù),所以需要寫shell腳本(也可以用其他方式)進(jìn)行數(shù)據(jù)灌入。
寫入數(shù)據(jù)時(shí)不能直接對(duì)STable操作,而是要對(duì)每張子表進(jìn)行操作。
5. 數(shù)據(jù)庫、表結(jié)構(gòu)等查詢
查詢數(shù)據(jù)庫信息:
taos> show databases; name | created time | ntables | vgroups |replica| days | keep1,keep2,keep(D) | tables | rows | cache(b) | ablocks |tblocks| ctime(s) | clog | comp |time precision| status | ============================================================================================================================================================================================================================================== log | 19-11-18 16:37:14.025| 4| 1| 1| 10|30,30,30 | 32| 1024| 2048| 2.00000| 32| 3600| 1| 2|us |ready | jk | 19-11-18 16:48:19.867| 10| 1| 1| 10|365,365,365 | 1024| 4096| 16384| 4.00000| 100| 3600| 1| 2|us |ready | Query OK, 1 row(s) in set (0.002487s)
查詢超級(jí)表:
taos> show stables; name | created_time |columns| tags | tables | ==================================================================================================================== jiankong | 19-11-18 16:48:41.540| 7| 2| 7| Query OK, 1 row(s) in set (0.002140s)
查詢超級(jí)表的表結(jié)構(gòu):
taos> describe jiankong; Field | Type | Length | Note | ======================================================================================================= ts |TIMESTAMP | 8| | gatewayid |BINARY | 6| | companyid |BINARY | 20| | provinceid |BINARY | 10| | cityid |BINARY | 10| | value |INT | 4| | timestr |BINARY | 30| | type |BINARY | 10|tag | subtype |BINARY | 10|tag | Query OK, 9 row(s) in set (0.001301s)
可以在Note列看到“tag”,表示是此列是標(biāo)簽
查詢子表:
taos> show tables; table_name | created_time |columns| stable | ================================================================================================================================================================= jiankong_sub_delivrd | 19-11-18 16:49:17.009| 7|jiankong | jiankong_sub_undeliv_ib_0008 | 19-11-18 16:49:17.025| 7|jiankong | jiankong_sub_undeliv_db_0108 | 19-11-18 16:49:17.016| 7|jiankong | jiankong_sub_undeliv_db_0107 | 19-11-18 16:49:17.018| 7|jiankong | jiankong_sub_undeliv_id_0076 | 19-11-18 16:49:17.023| 7|jiankong | jiankong_sub_send | 19-11-18 16:49:17.003| 7|jiankong | jiankong_sub_undeliv_balance | 19-11-18 16:49:17.021| 7|jiankong | Query OK, 10 row(s) in set (0.007001s)
查詢具體的子表的表結(jié)構(gòu):
taos> describe jiankong_sub_undeliv_db_0108; Field | Type | Length | Note | ========================================================================================================= ts |TIMESTAMP | 8| | gatewayid |BINARY | 6| | companyid |BINARY | 20| | provinceid |BINARY | 10| | cityid |BINARY | 10| | value |INT | 4| | timestr |BINARY | 30| | type |BINARY | 10|undeliv | subtype |BINARY | 10|DB:0108 | Query OK, 9 row(s) in set (0.001195s)
可以在Note列看到“undeliv”(超級(jí)表中的type字段)和“DB:0108"(超級(jí)表中的subtype字段),這2個(gè)靜態(tài)標(biāo)簽值確定了這個(gè)子表
6. 數(shù)據(jù)查詢
對(duì)type進(jìn)行分組聚合查詢:
taos> select sum(value) from jk.jiankong group by type; sum(value) | type | ================================= 11827688|delivrd | 55566578|send | 46687487|undeliv | Query OK, 3 row(s) in set (0.018251s)
對(duì)subtype進(jìn)行分組聚合查詢:
taos> taos> select sum(value) from jk.jiankong group by subtype; sum(value) | subtype | ================================= 9317|BALANCE | 65219|DB:0107 | 2077691|DB:0108 | 2804417|IB:0008 | 41730843|ID:0076 | 11827688|delivrd | 55566578|send | Query OK, 7 row(s) in set (0.013978s)
對(duì)type和subtype進(jìn)行分組聚合查詢:
taos> select sum(value) from jk.jiankong group by type, subtype; sum(value) | type | subtype | ============================================ 11827688|delivrd |delivrd | 55566578|send |send | 9317|undeliv |BALANCE | 65219|undeliv |DB:0107 | 2077691|undeliv |DB:0108 | 2804417|undeliv |IB:0008 | 41730843|undeliv |ID:0076 | Query OK, 7 row(s) in set (0.732830s)
按天對(duì)type和subtype進(jìn)行分組聚合查詢:
taos> select sum(value) from jk.jiankong interval(1d) group by type, subtype; ts | sum(value) | type | subtype | ====================================================================== 19-11-18 00:00:00.000000| 1760800|delivrd |delivrd | 19-11-19 00:00:00.000000| 14768|delivrd |delivrd | 19-11-20 00:00:00.000000| 3290720|delivrd |delivrd | 19-11-21 00:00:00.000000| 4973640|delivrd |delivrd | 19-11-22 00:00:00.000000| 1787760|delivrd |delivrd | 19-11-18 00:00:00.000000| 36976790|send |send | 19-11-19 00:00:00.000000| 310128|send |send | 19-11-20 00:00:00.000000| 9482760|send |send | 19-11-21 00:00:00.000000| 6470940|send |send | 19-11-22 00:00:00.000000| 2325960|send |send | 19-11-18 00:00:00.000000| 6200|undeliv |BALANCE | 19-11-19 00:00:00.000000| 52|undeliv |BALANCE | 19-11-20 00:00:00.000000| 1590|undeliv |BALANCE | 19-11-21 00:00:00.000000| 1085|undeliv |BALANCE | 19-11-22 00:00:00.000000| 390|undeliv |BALANCE | 19-11-18 00:00:00.000000| 43400|undeliv |DB:0107 | 19-11-19 00:00:00.000000| 364|undeliv |DB:0107 | 19-11-20 00:00:00.000000| 11130|undeliv |DB:0107 | 19-11-21 00:00:00.000000| 7595|undeliv |DB:0107 | 19-11-22 00:00:00.000000| 2730|undeliv |DB:0107 | 19-11-18 00:00:00.000000| 1382600|undeliv |DB:0108 | 19-11-19 00:00:00.000000| 11596|undeliv |DB:0108 | 19-11-20 00:00:00.000000| 354570|undeliv |DB:0108 | 19-11-21 00:00:00.000000| 241955|undeliv |DB:0108 | 19-11-22 00:00:00.000000| 86970|undeliv |DB:0108 | 19-11-18 00:00:00.000000| 1866200|undeliv |IB:0008 | 19-11-19 00:00:00.000000| 15652|undeliv |IB:0008 | 19-11-20 00:00:00.000000| 478590|undeliv |IB:0008 | 19-11-21 00:00:00.000000| 326585|undeliv |IB:0008 | 19-11-22 00:00:00.000000| 117390|undeliv |IB:0008 | 19-11-18 00:00:00.000000| 27769800|undeliv |ID:0076 | 19-11-19 00:00:00.000000| 232908|undeliv |ID:0076 | 19-11-20 00:00:00.000000| 7121610|undeliv |ID:0076 | 19-11-21 00:00:00.000000| 4859715|undeliv |ID:0076 | 19-11-22 00:00:00.000000| 1746810|undeliv |ID:0076 | Query OK, 35 row(s) in set (0.023865s)
此處interval是聚合時(shí)間段的長度, 最短時(shí)間間隔10毫秒(10a)
未建超級(jí)表時(shí),對(duì)普通表進(jìn)行分組聚合查詢,會(huì)報(bào)錯(cuò):
taos> select sum(value) from jk.jiankong group by type; TSDB error: invalid SQL: group by only available for STable query
7. 寫數(shù)據(jù)時(shí)自動(dòng)建子表
我們有另外一個(gè)需求,由于要監(jiān)控的靜態(tài)數(shù)據(jù)多達(dá)幾百個(gè),而且具有不確定性,所以無法全部在建庫、建表的時(shí)候創(chuàng)建所有子表,這個(gè)功能完全解決了我們的這個(gè)問題。
以下是官網(wǎng)的文檔摘錄:
在某些特殊場景中,用戶在寫數(shù)據(jù)時(shí)并不確定某個(gè)設(shè)備的表是否存在,此時(shí)可使用自動(dòng)建表語法來實(shí)現(xiàn)寫入數(shù)據(jù)時(shí)用超級(jí)表定義的表結(jié)構(gòu)自動(dòng)創(chuàng)建不存在的子表,若該表已存在則不會(huì)建立新表。
注意:自動(dòng)建表語句只能自動(dòng)建立子表而不能建立超級(jí)表,這就要求超級(jí)表已經(jīng)被事先定義好。自動(dòng)建表語法跟insert/import語法非常相似,唯一區(qū)別是語句中增加了超級(jí)表和標(biāo)簽信息。具體語法如下:
INSERT INTO
USING TAGS ( , ...) VALUES (field_value, ...) (field_value, ...) ...;
對(duì)比,用create創(chuàng)建子表:
create table jiankong_sub_send using jiankong tags ('send', 'send');
三、安裝和配置garafana
安裝
在官網(wǎng)https://grafana.com/grafana/download下載grafana的rpm安裝包后,進(jìn)行安裝:
rpm -ivh grafana-6.4.4-1.x86_64.rpm
2. copy TDengine的Grafana插件到Grafana的插件目錄
TDengine的Grafana插件在安裝包的/usr/local/taos/connector/grafana目錄下
cp -r /usr/local/taos/connector/grafana/tdengine/ /var/lib/grafana/plugins
3. 啟動(dòng)Grafana
systemctl start grafana-server
4. 在瀏覽器中通過host:3000登錄Grafana服務(wù)器
默認(rèn)用戶名和密碼都是admin
5. 添加TDengine數(shù)據(jù)源
在最下方找到“TDengine”
Name:“TDengine”(可以是其他名字)
Host:測試服務(wù)器地址“http://192.168.8.66:6020”
User: 默認(rèn)為“root”
Password:默認(rèn)為“taosdata”
測試一下:
6. 添加Folder
將相同類型需要監(jiān)控的儀表盤(dashboard)放到一個(gè)Folder中
7. 添加Dashboard
進(jìn)入剛才創(chuàng)建的Folder后,創(chuàng)建Dashboard
INPUT處的sql語句,要注意fill的位置,需要在group by前面,否則報(bào)錯(cuò)
配置圖形顯示
可以根據(jù)需求進(jìn)行曲線圖,表格,儀表盤等的選擇
在這里配置“曲線圖”,圖示下方是具體的圖形顯示細(xì)則,如:標(biāo)線、是否填充,對(duì)顯示的字段進(jìn)行曲線顏色的自定義等
給此儀表盤起個(gè)一看就懂的名字:
8. 配置了6個(gè)儀表盤
9. 無group by和有g(shù)roup by的實(shí)例
無group by,需要寫多條sql,通過where條件去區(qū)分,如果分類多就很麻煩且不靈活
有g(shù)roup by,一條sql就解決問題了:
下圖是有無group by的曲線趨勢對(duì)比,可以看到是一模一樣的
四、高級(jí)功能初探和一些聯(lián)想
1. 連續(xù)查詢(Continuous Query)----用戶級(jí)別的預(yù)計(jì)算
TDengine的“預(yù)計(jì)算”的概念我覺得非常的棒,官網(wǎng)文檔摘錄如下:
為有效地提升查詢處理的性能,針對(duì)物聯(lián)網(wǎng)數(shù)據(jù)的不可更改的特點(diǎn),TDengine采用在每個(gè)保存的數(shù)據(jù)塊上,都記錄下該數(shù)據(jù)塊中數(shù)據(jù)的最大值、最小值、和等統(tǒng)計(jì)數(shù)據(jù)。如果查詢處理涉及整個(gè)數(shù)據(jù)塊的全部數(shù)據(jù),則直接使用預(yù)計(jì)算結(jié)果,不再讀取數(shù)據(jù)塊的內(nèi)容。由于預(yù)計(jì)算模塊的大小遠(yuǎn)小于磁盤上存儲(chǔ)的具體數(shù)據(jù)的大小,對(duì)于磁盤IO為瓶頸的查詢處理,使用預(yù)計(jì)算結(jié)果可以極大地減小讀取IO,并加速查詢處理的流程。
連續(xù)查詢的官網(wǎng)文檔摘錄如下:
基于滑動(dòng)窗口的流式計(jì)算(Stream)
連續(xù)查詢是TDengine定期自動(dòng)執(zhí)行的查詢,采用滑動(dòng)窗口的方式進(jìn)行計(jì)算,是一種簡化的時(shí)間驅(qū)動(dòng)的流式計(jì)算。針對(duì)庫中的表或超級(jí)表,TDengine可提供定期自動(dòng)執(zhí)行的連續(xù)查詢,用戶可讓TDengine推送查詢的結(jié)果,也可以將結(jié)果再寫回到TDengine中。每次執(zhí)行的查詢是一個(gè)時(shí)間窗口,時(shí)間窗口隨著時(shí)間流動(dòng)向前滑動(dòng)。在定義連續(xù)查詢的時(shí)候需要指定時(shí)間窗口(time window, 參數(shù)interval )大小和每次前向增量時(shí)間(forward sliding times, 參數(shù)sliding)。
其中,將結(jié)果再寫回到TDengine中的方式其實(shí)就是一種用戶級(jí)別的預(yù)計(jì)算,這樣由TDengine按照用戶定義的時(shí)間窗口和時(shí)間增量進(jìn)行后臺(tái)的計(jì)算,在用戶查詢數(shù)據(jù)的時(shí)候,直接從回寫的表中讀取數(shù)據(jù),速度就會(huì)非??臁?/p>
創(chuàng)建連續(xù)查詢:
taos> create table test_stream_sum as select sum(value) from jiankong interval(20s) sliding(10s) group by type, subtype; Query OK, 1 row(s) affected (0.000983s)
上述連續(xù)查詢,sql的select部分實(shí)際的輸出結(jié)果為:
taos> select sum(value) from jiankong interval(20s) group by type, subtype; ts | sum(value) | type | subtype | ====================================================================== 19-11-18 16:50:40.000000| 9088|delivrd |delivrd | 19-11-18 16:51:00.000000| 31808|delivrd |delivrd | 19-11-18 16:51:20.000000| 15904|delivrd |delivrd | 19-11-18 16:52:20.000000| 12212|delivrd |delivrd | 19-11-18 16:52:40.000000| 31524|delivrd |delivrd | 19-11-18 16:53:00.000000| 31524|delivrd |delivrd | 19-11-18 16:53:20.000000| 31808|delivrd |delivrd | 19-11-18 16:53:40.000000| 31240|delivrd |delivrd | 19-11-18 16:54:00.000000| 31524|delivrd |delivrd | 19-11-18 16:54:20.000000| 31524|delivrd |delivrd | 19-11-18 16:54:40.000000| 31240|delivrd |delivrd | 19-11-18 16:55:00.000000| 31524|delivrd |delivrd | 19-11-18 16:55:20.000000| 28400|delivrd |delivrd | 19-11-18 16:55:40.000000| 31808|delivrd |delivrd | 19-11-18 16:56:00.000000| 31524|delivrd |delivrd | 19-11-18 16:56:20.000000| 31240|delivrd |delivrd | 19-11-18 16:56:40.000000| 31524|delivrd |delivrd | 19-11-18 16:57:00.000000| 32092|delivrd |delivrd | 19-11-18 16:57:20.000000| 31240|delivrd |delivrd | 19-11-18 16:57:40.000000| 32092|delivrd |delivrd | 19-11-18 16:58:00.000000| 31240|delivrd |delivrd | 19-11-18 16:58:20.000000| 22720|delivrd |delivrd | 19-11-18 16:50:40.000000| 190848|send |send |
自動(dòng)創(chuàng)建的連續(xù)查詢的表中實(shí)際的數(shù)據(jù)為:
taos> select * from test_stream_sum; ts | sum_value_ | ================================================ 19-11-18 17:17:30.000000| 2556| 19-11-18 17:17:40.000000| 18460| 19-11-18 17:17:50.000000| 15904| 19-11-18 17:18:00.000000| 15620| Query OK, 4 row(s) in set (0.000431s)
上述結(jié)果并不是期待的結(jié)果,沒有按照我定義的group by字段進(jìn)行聚合查詢顯示。
于是github Issues, taos的攻城獅回復(fù)“連續(xù)查詢目前還不能很好的支持 group by,這個(gè)問題已經(jīng)在我們的計(jì)劃列表里,后續(xù)會(huì)完善這方面的功能”,原因是“因?yàn)檫@樣回寫后,新表的時(shí)間戳主鍵可能出現(xiàn)相同(不同的group by字段會(huì)有相同的時(shí)間),就會(huì)沖突了,所以暫時(shí)不支持”。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!