一、概念简介
EMQX实现边缘网关的边缘采集、边缘调度、边缘计算、边缘存储、边缘管理等边缘功能是由一系列服务集组成,在本次体验中,业务数据流向及涉及相关服务如下图所示:
- EMQX Neuron、EMQX Edge、EMQX Kuiper、EMQX Edge Manager是EMQX在边缘应用的产品系列:EMQX Neuron是工业边缘网关,可以完成大多数工业协议及常规协议的数据接入并解释转换为MQTT协议;EMQX Edge可以看做轻量级多协议物联网边缘消息中间件,是小号版的EMQX Broker或EMQX Enterprise;EMQX Kuiper实现边缘计算,支持轻量级物联网边缘分析、流式处理;EMQX Edge Manager基于web 界面实现对 Neuron、Edge 和 Kuiper 可视化管理。
- TDengine Edge是涛思数据的一款开源时序数据库,本次体验中,主要用来存储EMQX Kuiper输出数据。
- Grafana是一款开源的、功能齐全的度量仪表盘和图形编辑器,通过加载插件支持从TDengine直接读取存储数据做各种仪表盘展示及数据统计分析。
二、安装部署
本次体验采用vmware安装了centos7桌面版虚拟机,在其上安装docker和docker-compose。
1)安装docker,root用户,以下安装命令执行:
安装依赖:$yum install -y yum-utils device-mapper-persistent-data lvm2
配置阿里云源:$yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker:$yum install docker-ce docker-ce-cli containerd.io
启动docker: $systemctl start docker
测试docker:$docker run hello-world
2)安装docker-compose,root用户,以下安装命令执行:
安装(要安装其他版本的 Compose,请替换 1.29.1):$curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将可执行权限应用于二进制文件:$ chmod +x /usr/local/bin/docker-compose
创建软链:$ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:$ docker-compose --version
3)去https://github.com/emqx/edge-stack下载安装包,这是基于 docker 和 docker-compose 的一套整合了所有 EMQ 边缘软件以及TDengine 、Grafana的解决方案,通过配置yaml配置文件及run.sh脚本实现一站式部署:
下载:wget https://github.com/emqx/edge-stack/archive/refs/heads/master.zip或git clone https://github.com/emqx/edge-stack.git
下载完成后,如果不在本虚拟机进行web管理,而是在主机win系统操作,去修改配置的yml文件:
cd edge-stack/develpoer-scripts && gedit docker-compose.yml
*修改 docker-compose.yml 中的 ports ,删除127.0.0.1。 例如,kuiper 端口 "127.0.0.1:9081:9081"应更改为 "9081:9081",支持kuiper外网访问。
*修改kuiper的mqtt默认流接口的配置
完成修改后,启动(root):./run.sh
注意:若出现异常“iptables: No chain/target/match by that name”,需要启动防火墙(root):
systemctl start firewalld.service
三、配置测试
1)在浏览器登录:http://your-host:9082,其登录账号密码:admin/public,如本次体验是http://192.168.174.130:9082。注:虚拟机地址192.168.174.130,主机(win)地址192.168.174.1。
2)登录进入后,需配置neuron,实现数据采集,进入服务管理/Neuron栏目,点击列表的服务名称进入neuron配置界面
3)配置采集信息点,进入object设置页面,编辑驱动,并导入案例信息点,在edge-stack/develpoer-scripts下的neuron_batch_modbus_5.xlsx,完成配置后点击发送完成配置生效。
4)启动modbus Slave完成数据推送,然后去状态监控界面查看数据采集状况。
5)前往EMQX Edge查看Neuron是否作为客户端成功连接,并查看主题消息情况
6)在EMQX Manager管理界面,配置kuiper,完成流配置、规则配置
进入源配置,可以查看mqtt的默认配置就是我们前面修改docker-compose.yml时kuiper调整的信息(MQTT_SOURCE__DEFAULT__SERVERS: "[tcp://192.168.174.130:1883,tcp://127.0.0.1:1883,tcp://manager-edge:1883]")。
7) 进入kuiper的插件配置页面,先配置TDengine的插件,后面配置规则时,需实现输出数据写入TDengine数据库。
进入kuiper规则配置页面,配置规则,实现简单的SQL刷选数据转写到TDengine数据库。
进入 EMQX kuiper容器(docker exec -it manager-kuiper sh),进行SQL语句验证,另外进入容器后,可以通过查看日志tail -f log/stream.log进行相关异常排查
8)进入Grafana的web页面(http://192.168.174.130:3000),admin/admin,配置TDengine插件,创建一个空plane,创建两个查询:
1)temperature :SELECT ts,temperature FROM db.t;
2)humidity :SELECT ts,humidity FROM db.t;
9)可以从panel Title下拉框菜单转入Explore页面查看结果,整个业务数据链OK。