EMQX+INFLUXDB+GRAFANA物联网可视化平台搭建

本文档详细介绍了如何在Linux Ubuntu 20.04上利用Docker配置EMQX、InfluxDB和Grafana,构建物联网数据可视化平台。首先介绍了EMQX作为MQTT服务器、InfluxDB作为时序数据库以及Grafana作为可视化工具的角色。接着,通过Docker部署三个服务,并配置EMQX-InfluxDB规则引擎,实现数据持久化。最后,通过Grafana配置图表和大地图展示数据,并设置了用户管理系统,限制特定用户的权限。
摘要由CSDN通过智能技术生成

前言

总项目目的是实现基于Lora通信的物联网可视化系统的实现,其中工作流程为单片机连接传感器获取数值通过Lora协议实现无线长距离传输到网关,网关通过4G模块基于MQTT连接到网络服务器进行转发到应用服务器,最后由应用服务器进行数据解析、存储与展示。而物联网可视化部分即包括网络服务器到应用服务器的搭建,因此我们使用到三个主要应用平台。

(1)EMQX:EMQX是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构,发布订阅模式的开源 MQTT 消息服务器。EMQ X 内置了大量开箱即用的功能,其开源版 EMQ X Broker 及企业版 EMQ X Enterprise 均支持通过规则引擎将设备消息存储到 TDengine。
(2)INFLUXDB:InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
(3)Grafana:Grafana 是一个跨平台、开源的度量分析和可视化工具,可以查询处理各类数据源中的数据,进行可视化的展示。它可以快速灵活创建的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;支持 Graphite,TDengine、InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和 KairosDB 等数据源,支持数据项独立/混合查询展示;可以创建自定义告警规则并通知到其他消息处理服务或组件中。
以下使用平台为Linux Ubuntu 20.04 与 Docker。

MQTT-JSON内容如下:

{
   
  "host": "test0",
  "latitude": 123.123456,
  "longitude": 22.564234,
  "temperature": 16.22,
  "battery": 4.3
}

一、DOCKER配置

1.Docker介绍:

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,这里不一定要使用Docker。

2.Docker镜像准备

使用指令

apt-get install docker docker.io

然后使用docker指令准备两个镜像 分别是emqx influxdb

EMQX:
    docker pull emqx/emqx-ee:latest
    INFLUXDB:
	docker pull influxdb:1.8

此时使用指令

docker images

可以发现有两个镜像emqx influxdb
在这里插入图片描述

文件准备完成,开始配置安装EMQX。

3.Docker常用指令及解释

这里简单列出使用到的指令

docker pull [images] //拉取镜像指令
docker run -d --name [镜像名称] -p [容器端口:服务器端口] [镜像文件] //运行镜像以指定名称 指定映射端口 运行的镜像名称
docker restart/stop/start/rm [镜像名称] //重启、停止、开始、移除容器但是不会吧镜像移除
docker ps //展示镜像
docker exec -it [镜像名称] bash(/bin/sh) //进入容器 使用bash/sh控制台
//进入容器之后可以输入exit退出容器
docker cp [本地文件/容器文件] [本地文件/容器文件]
//例如 docker cp influxdb.conf influxDb:/etc/influxdb/ 则是拷贝当前文件夹中的influxdb.conf到influxdb容器中的/etc/influxdb/文件夹下
//docker cp influxDb:/etc/influxdb/influxdb.conf . 则表示拷贝influxdb容器中/etc/influxdb/influxdb.conf到当前文件夹	

由于docker容器环境中没有提供vi编辑器所以需要先拷贝文件夹下来更改再复制进入容器后再重启容器才能够生效

二、服务器上配置EMQX

使用以下指令

docker run -d --name emqx-ee -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx-ee:latest
docker ps 

得到如图 则运行成功 我们使用浏览器输入服务器IP:18083 如xxx.xxx.xxx.xxx:18083进入网页在这里插入图片描述
网页如图所示 默认用户名admin 密码public
在这里插入图片描述
如图所示安装成功
在这里插入图片描述
但是由于websocket工具占用了8083端口 会导致influxdb无法正常安装
解决方法1:在EMQX主界面左侧栏目->设置->启用->监听器->8083端口的ws->关闭
这样做会导致websocket工具无法使用 但是可以使用MQTT.fx测试工具代替
在这里插入图片描述
解决方法2: 在配置Influxdb更改8083的映射端口号,可能会有其他影响。

三、服务器上配置INFLUXDB

强调一下这里本文使用的是influx1.8版本,influx2.0版本之后各方面大改,想学习可以自行学习。
先在本地创建一个文件,名称为influxdb.conf
内容如下:配置文件详解

reporting-disabled = false
bind-address = "127.0.0.1:8088"

[meta]
  dir = "/var/lib/influxdb/meta"
  retention-autocreate = true
  logging-enabled = true

[data]
  dir = "/var/lib/influxdb/data"
  index-version = "inmem"
  wal-dir = "/var/lib/influxdb/wal"
  wal-fsync-delay = "0s"
  validate-keys = false
  query-log-enabled = true
  cache-max-memory-size = 1073741824
  cache-snapshot-memory-size = 26214400
  cache-snapshot-write-cold-duration = "10m0s"
  compact-full-write-cold-duration = "4h0m0s"
  compact-throughput = 50331648
  compact-throughput-burst = 50331648
  max-series-per-database = 1000000
  max-values-per-tag = 100000
  max-concurrent-compactions = 0
  max-index-log-file-size = 1048576
  trace-logging-enabled = false
  tsm-use-madv-willneed = false

[coordinator]
  write-timeout = "10s"
  max-concurrent-queries = 0
  query-timeout = "0s"
  log-queries-after = "0s"
  max-select-point = 0
  max-select-series = 0
  max-select-buckets = 0

[retention]
  enabled = true
  check-interval = "30m0s"

[shard-precreation]
  enabled = true
  check-interval = "10m0s"
  advance-period = "30m0s"

[monitor]
  store-enabled = true
  store-database = "_internal"
  store-interval =
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值