logo资料库

EMQ X + TDengine + Grafana环境搭建教程.docx

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
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/ 1. 安装 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 完成初次登录。 2. 安装 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 号 3. 安装 Grafana(可视化数据库界面) 安装相关环境: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 第 1 页 共 15 页
传感器发送的数据格式为 JSON,数据包括传感器采集的温度、湿度、噪声音量、PM10、 PM2.5、二氧化硫、二氧化氮、一氧化碳、传感器 ID、区域、采集时间等数据。 { } "temperature": 30, "humidity" : 20, "volume": 44.5, "PM10": 23, "pm25": 61, "SO2": 14, "NO2": 4, "CO": 5, "id": "10-c6-1f-1a-1f-47", "area": 1, "ts": 1596157444170 现在需要实时存储以便在后续任意时间查看数据,提出以下的需求: 每个设备按照每 5 秒钟一次的频率进行数据上报,数据库需存储每条数据以供后续回 溯分析; 通过可视化系统查看 任意区域、任意时间区间内 的指标数据,如平均值、最大值、最 小值。 操作步骤 1. 配置 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, SO2 float, NO2 float, CO float, sensor_id NCHAR(255), 第 2 页 共 15 页
area TINYINT, coll_time timestamp ); 2. 配置 EMQ X 规则引擎 首先把 EMQ X 更换为中文界面 打开 EMQ X Dashboared,进入 规则引擎 -> 规则 页面,点击 创建 按 钮进入创建页面。 规则 SQL 规则 SQL 用于 EMQ X 消息以及事件筛选,以下 SQL 表示从 sensor/data 主题筛选出 payload 数据: SELECT payload FROM "sensor/data" 第 3 页 共 15 页
如下图所示配置 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 } 第 4 页 共 15 页
测试结果如下所示为正确(使用 SQL 测试功能,输入测试数据进行 筛选结果测试,测试有结果且输出内容如下,标明 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}" } 响应动作 为支持各种不同类型平台的开发,TDengine 提供符合 REST 设计标准的 API。通过 RESTful Connector 第 5 页 共 15 页
(https://www.taosdata.com/cn/documentation20/connector/#RESTful-Connector) 提供了最简单的连接方式,即使用 HTTP 请求携带认证信息与要执行的 SQL 操作 TDengine。 使用 EMQ X 开源版中的发送到 Web 服务即可通过 RESTful Connector 写入数据到 TDengine。即将到来的 EMQ X 企业版 4.1.1 版本将提供原生更 高性能的写入 Connector。 响应动作创建过程:点击响应动作下的添加按钮,在弹出框内选择 发送 数据到 Web 服务,点击 新建资源 新建一个 WebHook 资源。 发送到 Web 服务需要两个数据,一个是关联资源,另一个是消息内容模 板。 关联资源:HTTP 服务器配置信息,此处为 TDengine 的 RESTful Connector 消息内容模板:此处为携带数据的 INSERT SQL,注意我们应当在 SQL 中 指定数据库名,字符类型也要用单引号括起来, 消息内容模板为: 消息内容模板编写如下所示 INSERT INTO test.sensor_data VALUES( now, ${payload.temperature}, ${payload.humidity}, ${payload.volume}, 第 6 页 共 15 页
${payload.PM10}, ${payload.pm25}, ${payload.SO2}, ${payload.NO2}, ${payload.CO}, '${payload.id}', ${payload.area}, ${payload.ts} ) 关联资源如下所示 关联资源 - > 新建资源 资源类型选择 Webhook,请求 URL 填写 http://127.0.0.1:6041/rest/sql,请求方法选择 POST,还需添加 Authorization 请求头作为认证信息。 Authorization 的值为 Basic + TDengine 的 {username}:{password} 经过 Base64 编码之后的字符串, 例如 root:taosdata 编码后为 第 7 页 共 15 页
cm9vdDp0YW9zZGF0YQ==,实际填入的值为:Basic cm9vdDp0YW9zZGF0YQ== 创建响应动作完成之后如下图所示 第 8 页 共 15 页
分享到:
收藏