系统架构;mqtt.fx;emqx4.4.3;telegraf1.21;infludb2.2;grafana8.4.1
系统环境;;ubuntu18.04;
关于物联网监控系统;当前最流行的方法就是;emq;influxdb;grafna;其中EMQX负责采集终端设备数据; influxdb数据库负责存储数据;grafana负责读取数据;并以仪表盘形式进行监控报警。
网上也有很多学习的文章;可大部分都是残缺不全;没有一个系统性的介绍;看完后也是一知半解。此文可以说是网络上最全面的教程;非常详细讲解了整个系统的搭建步骤;每一步除了用文字介绍外;还用截图方式进行直观说明;真正的傻瓜式教程;开发者只需要逐步照做;即可完成整个系统的搭建;当然了;如果连ubuntu 都没听说过的同学;那就不用往下看了;。
=====================================================================
整个系统分4个模块;
数据采集;mqtt.fx 模拟终端设备产生数据;通过emqx服务器进行数据采集。
数据存储;telegraf作为插件;订阅emqx数据并存储到influxdb2数据库。
数据监控;grafana 读取influxdb2 数据;进行图形监控。
数据预警;配置grafana预警策略;实现报警功能。
=====================================================================
详细操作步骤如下;
数据采集;
搭建emqx服务器;
下载emqx;
sudo wget https://www.emqx.com/zh/downloads/enterprise/4.4.3/emqx-ee-4.4.3-otp24.1.5-3-ubuntu18.04-amd64.deb
安装;
sudo apt install ./emqx-ee-4.4.3-otp24.1.5-3-ubuntu18.04-amd64.deb
运行
sudo emqx start
以上截图表示emqx服务器安装成功。
MQTT.fx 客户端数据模拟;
使用MQTT-fx-1.7.1 首先点击齿轮按钮;进行参数设置
下图中IP地址;填写EMQX服务器主机ip;其它按图中默认设置即可
若有账户要求;则填入登陆账户及密码即可
然后Apply和OK就配置完成。
连接EMQX;模拟数据发送和订阅
选择myprofile;点击右边按钮【connect】连接EMQX server
连接成功后;如下图;
出现绿色小球;表示连接成功
选择标签【publish】
输入你自己的topic;此处是 sensors/a
输入要想此topic 发送的内容;此处是 sensor data test
点击【publish】;发送主题数据到emqx server
查看EMQX broker 数据
访问ip:18083 ;访问emqx客户端页面如下;输入初始用户/密码 admin/public, 点击【登录】进入emqx 控制台;
在控制台页面;操作如下;
选择【工具-websocket】
点击按钮【连接】
在topic 输入【sensors/a】
点击【订阅】
订阅成功后;在MQTT-fx 页面;重新点击【publish】发送消息
回到EMQX 控制台页面; MQTT-fx 发送的数据;已经被接收到
以上说明EMQX 已经能够正常接收到来自MQTT 设备的数据。
配置规则引擎;EMQX server 收到设备数据后; 需要做相应规则引擎;以便将数据存储到时序数据库influxdb。
创建资源;在EMQ 左边栏点击【规则引擎-资源-创建】如下;
资源类型选择【influxDB UDP 服务】;自动生成资源ID;【resource:329849】其它默认;确定
创建规则;在EMQ 左边栏点击【规则引擎-规则-创建】如下;
编辑规则;如下图
输入SQL 语法
自动生成规则ID;此处为【rule:902869】, 后面会用到。
添加动作;也就是当收到数据后;如何处理数据
添加动作;配置如下
选择influxdb 数据库
选择前面创建的资源ID
任意输入measurement;作为influxdb 获取数据的类别
填写键值;要与前面SQL select 里面保持一致;此处my_msg
其余保持默认;确定即可
至此;完成EMQX 数据的采集;以数据持久化规则引擎的配置。
数据存储;
安装influxdb
sudo wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.7-amd64.deb
sudo dpkg -i influxdb2-2.0.7-amd64.deb
sudo service influxdb start
以上表示安装成功。
web访问ip:8086 ;influxdb客户端页面如下;
点击【Get Started】进入influxdb控制台;
任意设置 username;password, organization name, bucket name;点击【continue】
创建telegraf 配置文件;
配置输出;点击【data-telegraf-influxdb output plugin】
选择bucket;此处为【mybucket】
点击下载文件;并将文件改名为 telegraf.conf
配置mqtt 输入;
点击【data-sources】;在搜索栏输入mqtt后;下面会出现【MQTT】图标
点击【MQTT】图标;生成mqtt 配置数据;点击下方按钮【copy to clipboard】;将配置数据粘贴到 telegraf.conf 文件中。
安装并运行telegraf;
sudo wget https://dl.influxdata.com/telegraf/releases/telegraf_1.21.4-1_amd64.deb
sudo dpkg -i telegraf_1.21.4-1_amd64.deb
telegraf -version
出现telegraf 版本号;说明安装成功。
配置telegraf.conf:
打开前面生成的telegraf.conf 修改如下;将其替换 /etc/telegraf/telegraf.conf 文件
设置 token 的环境变量
运行telegraf.conf
sudo service telegraf start
telegraf --config etc/telegraf/telegraf.conf
下图说明telegraf 已正常工作
验证数据是否正确存储
MQTT 模拟发送数据;
实例中;发送100,150,200 等
influxdb中查看是否收到数据
顺序选择【explore-mybucket-mqtt_consumer-value】;然后点击6【submit】;如下图说明数据已收到;并以曲线形式进行显示;
至此;数据已经成功存储在influxdb 数据库了。
telegraf 写数据 influxdb ;权限不对;无法写入时;通过删掉token;重新创建token;并设置export 变量;运行telegraf 即可。
infludb 中无法显示mqtt_consumer , 可能是因为emq 【规则引擎-规则-响应动作-编辑-整形数据处理模式】中设定的数据类型;和mqtt.fx 中发送的数据类型不匹配。
原创不易;还有两部分【数据监控】和【数据报警】;如果本文对你学习有帮助;请点击下面的【打赏】图标;仅需5元的支持;即可获取完整文档;绝对靠谱;谢谢支持。
Neuron v2.2.2 发布:MQTT插件功能提升 、新增OPC DA驱动