EMQ X + TDengine + Grafana 环境搭建教程
操作系统:ubuntu 18.04 LTS
EMQ X:EMQ 官网 https://www.emqx.io/cn/
TDengine:涛思数据官网 https://www.taosdata.com/cn/
Grafana:Grafana 官网 https://grafana.com/
- 安装 EMQ (开源版本: EMQ X Broker)
去官网下载 EMQ(官网网址: https://www.emqx.io/cn/ )下载 zip 压缩包
(docker 建议不要下载,不好修改,慎用)
下载压缩包 : wget https://www.emqx.io/cn/downloads/broker/v4.2.2/
emqx-ubuntu18.04-4.2.2-x86_64.zip
解压下载好的压缩包
unzip emqx-ubuntu18.04-4.2.2-x86_64.zip
运行 EMQ(以 console 模式启动 EMQ X 方便调试): ./bin/emqx console
EMQ 启动成功后浏览器访问 http://127.0.0.1:18083 访问 EMQ X 管理控制台
Dashboard,使用 默认用户名:admin 密码: public 完成初次登录。 - 安装 TDengine(以 docker 方式安装)
第一次启动 TDengine:
拉取并启动容器 :sudo docker run -d --name tdengine -p 6030-6041:6030-6041
tdengine/tdengine:latest
启动以后检查容器运行的状态,看看是否成功启动 : sudo docker ps -a
第二次及以上启动 TDengine:
查看容器状态 : sudo docker ps -a
重启 TDengine 容器: sudo docker restart + CONTAINER ID 号 - 安装 Grafana(可视化数据库界面)
第 1 页 共 16 页安装相关环境:sudo apt-get install -y adduser libfontconfig1
下载 Grafana : wget https://dl.grafana.com/oss/release/
grafana_7.2.1_amd64.deb
安装 Grafana : sudo dpkg -i grafana_7.2.1_amd64.deb
启动 Grafana : sudo service grafana-server start
停止 Grafana:sudo service grafana-server stop
为 Grafana 添加 TDengine 数据源插件
下载插件:git clone https://github.com/taosdata/TDengine.git
拷贝插件到相关位置:sudo cp -r ./TDengine/minidevops/grafana/tdengine
/var/lib/grafana/plugins/
重启 Grafana : sudo service grafana-server restart
Grafana 启动成功后浏览器访问 http://127.0.0.1:3000 访问 Grafana 可视化面
板,使用 默认用户名:admin 密码:admin 完成初次登录,登录后按照提示修改密码
使用新密码登录进入主界面:
测试应用
本文模拟物联网环境数据采集场景,假设现有一定数据的环境数据采集点,所有采集点
数据均通过 MQTT 协议 传输至采集平台(MQTT Publish),主题设计如下:
sensor/data
传感器发送的数据格式为 JSON,数据包括传感器采集的温度、湿度、噪声音量、 PM10、
PM2.5、二氧化硫、二氧化氮、一氧化碳、传感器 ID、区域、采集时间等数据。
{
“temperature”: 30,
“humidity” : 20,
“volume”: 44.5,
“PM10”: 23,
第 2 页 共 16 页"pm25": 61,
“SO2”: 14,
“NO2”: 4,
“CO”: 5,
“id”: “10-c6-1f-1a-1f-47”,
“area”: 1,
“ts”: 1596157444170
}
现在需要实时存储以便在后续任意时间查看数据,提出以下的需求:
每个设备按照每 5 秒钟一次的频率进行数据上报,数据库需存储每条数据以供后续回
溯分析;
通过可视化系统查看 任意区域、任意时间区间内 的指标数据,如平均值、最大值、最
小值。
操作步骤
配置 EMQ X 存储数据到 TDengine
TDengine 创建数据库与数据表
进入 TDengine Docker 容器: docker exec -it tdengine bash
创建 test 数据库:
1.taos
2.create database test;
创建 sensor_data 表,关于 TDengine 数据结构以及 SQL 命令(参见
https://www.taosdata.com/cn/documentation20/taos-sql/#表管理 ):
use test;
CREATE TABLE sensor_data (
ts timestamp,
temperature float,
humidity float,
volume float,
PM10 float,
pm25 float,
第 3 页 共 16 页SO2 float,
NO2 float,
CO float,
sensor_id NCHAR(255),
area TINYINT,
coll_time timestamp
);
2.
配置 EMQ X 规则引擎
首先把 EMQ X 更换为中文界面
打开 EMQ X Dashboared,进入 规则引擎 -> 规则 页面,点击 创建 按
钮进入创建页面。
第 4 页 共 16 页规则 SQL
规则 SQL 用于 EMQ X 消息以及事件筛选,以下 SQL 表示从
sensor/data 主题筛选出 payload 数据:
SELECT
payload
FROM
“sensor/data”
如下图所示配置 SQL 测试,payload 填写如下所示
{
“temperature”:30,
“humidity”:20,
“volume”:44.5,
“PM10”:23,
“pm2.5”:61,
“SO2”:14,
“NO2”:4,
“CO”:5,
“id”:“10-c6-1f-1a-1f-47”,
“area”:1,
“ts”:1596157444170
}
第 5 页 共 16 页测试结果如下所示为正确(使用 SQL 测试功能,输入测试数据进行
筛选结果测试,测试有结果且输出内容如下,标明 SQL 编写正确):
{
“payload”:
“{“temperature”:30,“humidity”:20,“volume”:44.5,“PM10”:23,“pm
2.5”:61,“SO2”:14,“NO2”:4,“CO”:5,“id”:“10-c6-1f-1a-1f-47”,“are
a”:1,“ts”:1596157444170}”
}
响应动作
第 6 页 共 16 页为支持各种不同类型平台的开发, TDengine 提供符合 REST 设计标准的
API。通过 RESTful Connector
(https://www.taosdata.com/cn/documentation20/connector/#RESTful-Co
nnector) 提供了最简单的连接方式,即使用 HTTP 请求携带认证信息与要执
行的 SQL 操作 TDengine。
使用 EMQ X 开源版中的发送到 Web 服务即可通过 RESTful Connector
写入数据到 TDengine。即将到来的 EMQ X 企业版 4.1.1 版本将提供原生更
高性能的写入 Connector。
响应动作创建过程:点击响应动作下的添加按钮,在弹出框内选择 发送
数据到 Web 服务,点击 新建资源 新建一个 WebHook 资源。
第 7 页 共 16 页发送到 Web 服务需要两个数据,一个是关联资源,另一个是消息内容模
板。
关联资源:HTTP