目 录CONTENT

文章目录

开源工业物联网系列教程-3.边缘端设置

胡彬
2022-07-28 / 0 评论 / 0 点赞 / 1,480 阅读 / 1,901 字

本文将介绍边缘端安装配置的全过程

一、前期准备

1、边缘IOT网关

品牌联想,型号ECG-AR70E,采用Ubuntu18.04操作系统
其他品牌IOT网关亦可,具体操作系统,能够安装边缘侧软件即可。

1.1 联想默认账号密码

操作系统root/lenovo,使用xshell等工具登录
远程桌面iotmusic,使用vnc viewer登录

1.2 登录系统配置网络

该网关具有两个有线网卡和wifi模块,可以连接有线和无线网络。
配置网络后,获取系统IP地址,便于后续登录调试
安装ping和telnet命令<非必须>

sudo apt update
sudo apt install iputils-ping telnet vim

将LAN2口<Ethernet connection 1>IP地址配置成:192.168.5.201,方便笔记本直连调试

1.3 修改主机名

hostnamectl set-hostname CY04

1.4 时间同步

如无法访问外网且无时间服务器,暂无需配置

1、以下操作在root用户下执行
sudo su
2、检查是否安装ntpdate时间同步客户端,查看完整路径
whereis ntpdate
如路径为:/usr/sbin/ntpdate
如没有安装使用 apt install -y ntpdate 进行安装
3、手动同步时间
10.89.17.12为内部时间服务器
/usr/sbin/ntpdate 10.89.17.12
4、定时同步时间<每小时第1分钟开始同步,并记录日志>
crontab -e
1 * * * * /usr/sbin/ntpdate 10.89.17.12 >> /var/log/date.log

5、查看执行日志
cat /var/log/date.log

1.5 去除开机登录页面

vim /usr/share/lightdm/lightdm.conf.d/60-xubuntu.conf
去除#修改:autologin-user=root

2、工具准备

本例为了方便安装部署,使用docker容器及docker-compose工具进行软件部署安装,安装过程需要能够访问互联网。

2.1 docker安装

推荐使用安装脚本一键安装,视网络情况,过程时间较长,请耐心等待

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable docker && systemctl start docker

查看版本:docker -v

2.2 docker-compose安装

离线安装方法

scp root@10.89.25.67:/home/data/share/docker-compose /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

或者在线下载,运行以下命令安装

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

查看版本:docker-compose -v

2.3 离线加载docker镜像

mkdir /opt/share
cd /opt/share
scp root@10.89.25.67:/home/data/share/postgres.tar ./
scp root@10.89.25.67:/home/data/share/tb_edge.tar ./
scp root@10.89.25.67:/home/data/share/nodered.tar ./
scp root@10.89.25.67:/home/data/share/ekuiper.tar ./
docker load -i ./postgres.tar
docker load -i ./tb_edge.tar
docker load -i ./nodered.tar
docker load -i ./ekuiper.tar

二、部署安装thingsboard-edge

1、创建文件夹

mkdir /opt/thingsboard
cd /opt/thingsboard
mkdir -p ./data && sudo chown -R 799:799 ./data
mkdir -p ./logs && sudo chown -R 799:799 ./logs
mkdir -p ./db && sudo chown -R 799:799 ./db

务必要给文件夹分配权限,不然后面启动会报错。

2、准备安装文件

apt install nano -y
nano docker-compose.yml
保存时ctrl+o回车,ctrl+x退出

输入以下内容
CLOUD_ROUTING_KEY: 云端的key
CLOUD_ROUTING_SECRET: 云端的secret
CLOUD_RPC_HOST: 云端IP
CLOUD_RPC_PORT: 云端RPC端口,默认7070

version: '2.2'
services:
  thingsboard:
    restart: always
    image: "thingsboard/tb-edge:3.4.0EDGE"
    ports:
      - "8080:8080"
      - "1883:1883"
      - "5683-5688:5683-5688/udp"
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/tb-edge
      SPRING_DATASOURCE_USERNAME: thingsboard
      SPRING_DATASOURCE_PASSWORD: thingsboard
      CLOUD_ROUTING_KEY: 314de457-8d82-8933-0e31-2b847xxxxxx
      CLOUD_ROUTING_SECRET: yant3wwmp6vrxikxxxxx
      CLOUD_RPC_HOST: 10.89.25.65
      CLOUD_RPC_PORT: 7070
    volumes:
      - ./data:/data
      - ./logs:/var/log/tb-edge
  postgres:
    restart: always
    image: "postgres:12"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: tb-edge
      POSTGRES_USER: thingsboard
      POSTGRES_PASSWORD: thingsboard
    volumes:
      - ./db:/var/lib/postgresql/data

3、下载镜像

上面如果离线load过镜像,docker-compose pull,此步骤跳过

4、部署并启动

docker-compose up -d

停止、启动、查看日志
docker-compose stop
docker-compose start
docker-compose logs -f thingsboard
卸载使用如下命令
docker-compose down
rm -rf ./db ./logs ./data

三、部署安装node-red

mkdir /opt/nodered
cd /opt/nodered

sudo docker run -it -d --name=nodered --restart=always --user=root --net=host --privileged=true  -v /opt/nodered:/data -v /dev:/dev:ro -e TZ=Asia/Shanghai nodered/node-red:3.0.1

离线安装节点

scp root@10.89.25.67:/home/data/share/nodered-data.tar /opt
#停止容器
docker stop nodered
cd /opt
rm -rf nodered/
#解压文件
tar -zxvf nodered-data.tar
#启动容器
docker start nodered

四、部署安装kuiper

mkdir /opt/kuiper
cd /opt/kuiper

sudo docker run -p 9081:9081 -d --restart=always --name kuiper -e MQTT_SOURCE__DEFAULT__SERVER="tcp://172.17.0.1:1883" lfedge/ekuiper:1.6.1-slim

五、使用教程

访问:http://ip:8080,进入thingsboard边缘端管理页面
thingsboard默认用户名密码:
租户管理员: tenant@thingsboard.org / tenant
边缘端空间有限,安装完成后,删除/opt/share目录下的文件

rm -rf /opt/share

六、边缘盒子空间清理

运行一段时间后,盒子磁盘空间告急
查看磁盘空间的命令:

# 查看整体磁盘空间
df -h
# 查看目录下所有文件夹及文件占用空间
du -sh * | sort -hr

1、检查安装文件,删除安装目录

rm -rf /opt/share/

2、清理日志文件
/var/log下保留了日志文件,可以清理
journalctl日志占用1G,通过命令设置仅保留1个月的日志

journalctl --vacuum-time=1m

3、容器日志文件清理
/opt 为容器数据目录
/var/lib/docker 为容器缓存目录
结合命令查看各子目录占用

du -sh * | sort -hr

例如该目录下占用6.2G
image
docker ps查看为node-red目录
image-1671282768408
进入该目录,为日志文件占用空间
image-1671282995264
①手动清空文件内容
定义脚本文件truncate_docker_logs.sh

cd /opt
vim truncate_docker_logs.sh

输入以下内容:

#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
truncate -s 0 $log
done
echo "======== end clean docker containers logs ========"

手动执行命令

/bin/sh /opt/truncate_docker_logs.sh >> /var/log/truncate_logs.log
cat /var/log/truncate_logs.log

②定期清理文件内容
设置定时任务

crontab -e

输入以下内容

0 1 * * * /bin/sh /opt/truncate_docker_logs.sh >> /var/log/truncate_logs.log

ctrl+o 回车保存,ctrl+x退出
③使用docker本身机制限制文件大小(该方法仅对后续新增容器起作用)

vim /etc/docker/daemon.json

增加内容

{
"log-driver":"json-file",
"log-opts":{ "max-size" :"50m","max-file":"1"}
}

重启容器

systemctl daemon-reload
systemctl restart docker

七、边缘盒子调整

1、修改遥测数据上传

将nodered中遥测数据上传的mqtt服务器修改成:10.89.25.65
image

2、卸载thingsboard边缘端

cd /opt/thingsboard
docker-compose down
rm -rf ./db ./logs ./data

3、安装mqtt服务端mosquitto

scp root@10.89.25.67:/home/data/share/mosquitto.tar /opt/
cd /opt
tar -zxvf mosquitto.tar
cd mosquitto
dpkg -i *.deb
systemctl enable mosquitto.service

4、重装kuiper

scp root@10.89.25.67:/home/data/share/kuiper.tar /opt/
cd /opt
docker load -i kuiper.tar
docker stop kuiper
docker rm kuiper
sudo docker run -p 9081:9081 -d --restart=always --name kuiper -e MQTT_SOURCE__DEFAULT__SERVER="tcp://172.17.0.1:1883" lfedge/ekuiper:1.8.0-beta.1

5 修改主机名

主机名以后统一使用设备编号:HJ05\CY04

hostnamectl set-hostname CY04
0

评论区