最近GitHub上开源了一个专为IoT设计的大数据平台,相当火热(下图),我们先来跑一下官方给的demo,有个感性的认识。
(注:以下所有截图均来自我的微信公众号“生锈的TRUENO”,欢迎各位关注!)
我们要跑的这个demo,是一个实时监测系统,主要分为三个步骤:1.数据采集,2.数据持久化,3.数据可视化。流程图如下:
我们可以看到,TDengine处于数据持久化阶段,充当了一个数据库的作用。下面,我们开始跑这个demo
1、首先,我们先在Ubuntu上来安装TDengine:
点击官方给的链接,进行下载:
https://www.taosdata.com/en/getting-started/#Install-from-Package
下载完毕后,安装。
安装成功后,把TDengine设置为开启自启动服务:
systemctl start taosd
设置成功后,在terminal中输入:taos,检测该服务是否已经启动(下图表示服务启动成功)。
2、数据采集用的是“Telegraf”
这是一个开源的数据采集代理,在这个demo中,我们用它来收集CPU的不同指标信息。下面,我们来在Ubuntu上安装一下:
在terminal中输入:
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.11.3-1_amd64.deb
sudo dpkg -i telegraf_1.11.3-1_amd64.deb
安装成功后, 需要对telegraf进行配置,使其可以读取CPU的指标信息:
打开/etc/telegraf/telegraf.conf,并把其中的“[[outputs.http]]”,修改为下面的样子:
[[outputs.http]]
url = "http://localhost:6020/telegraf/udb"
method = "POST"
username = "root"
password = "taosdata"
data_format = "json"
json_timestamp_units = "1ms"
这样修改的目的是让telegraf连接taosd的接口,可以向其中传递数据,然后,我们需要修改[agent]部分:
[agent]
hostname = "myhost"
metric_batch_size = 30
interval = "10s"
debug = true
omit_hostname = false
现在,我们把telegraf设置为开启自启动服务:
sudo systemctl start telegraf
现在,telegraf理论上就会向TDengine传递数据了,我们通过SQL语句验证一下:
show databases;
use udb;
show stables;
show tables;
结果如下图,说明已经成功地创建了udb这个数据库,以及其中的表单;
到目前为止,数据收集和数据持久化均已完成,下面来实现数据的可视化:
3、数据可视化:
这部分用到了“Grafana”这个数据可视化工具,我们先来安装它:
在terminal中输入:
wget https://dl.grafana.com/oss/release/grafana_6.2.5_amd64.deb
sudo dpkg -i grafana_6.2.5_amd64.deb
然后,把TDengine中Grafana的插件
tdengine-1.6.0.0/code/examples/grafana拷贝到/var/lib/grafana/plugins 这个路径下,然后启动这个服务:
sudo systemctl start grafana
现在,我们在浏览器中打开“localhost:3000”,用用户名admin和密码admin登录,然后在configuration中选择TDengine:
然后进行如下配置:
创建dashboard,点击“Add Query”,添加三个SQL查询,分别查询CPU处于空闲的时间比例(idle)、CPU运行用户进程的时间比例(user)以及CPU运行内核进程的时间比例(system),并将过去30分钟(时间可以人为设置)的数据情况以折线图的形式进行展示,如下图:
目前为止,TDengine给我最直观的感受,就是一个用来存储时序数据的数据库,并且可以实现,在一个时间轴上显示多个时间线的数据,并且支持数据的订阅,一旦有新的订阅数据产生,就会通知应用(在这个demo中的体现,就是:被SQL查询的数据,如果出现新的,折线图就会随着时间先前推移),此外,历史数据和当前的实时数据可以一起显示,更方便分析数据的趋势。
目前仅仅是跑了一个demo,至于官方说的:比其他数据库快10倍的插入与查询速度、1/5的计算资源、与其他工具的集成以及使用不同语言进行接口调用等功能,还有待考察。