ThingsKit服务器配置和系统要求?
❓ ThingsKit物联网平台的最低服务器配置和系统要求是多少?
答案
以下是ThingsKit物联网平台部署的最低服务器配置要求,如果是生产环境部署,建议联系客服为您评估服务器配置是否合理。
|
序号 |
配置项 |
参数 |
|
1 |
CPU |
4核 |
|
2 |
内存 |
8GB |
|
3 |
带宽 |
5MB |
|
4 |
系统盘 |
SSD 150GB |
|
5 |
数据盘 |
SSD 200GB |
|
6 |
操作系统 |
🥇Ubuntu20.04及以上 (推荐) 🥈CentOS7.9及以上 |
生产环境建议配置:
|
序号 |
配置项 |
参数 |
|
1 |
CPU |
8核 |
|
2 |
内存 |
16GB |
|
3 |
带宽 |
10MB |
|
4 |
系统盘 |
SSD 200GB |
|
5 |
数据盘 |
SSD 1TB |
|
6 |
操作系统 |
🥇Ubuntu20.04及以上 (推荐) 🥈CentOS7.9及以上 |
场景举例一:5万台设备,大部分是烟感,有一些闸机和一些工业网关,全部走MQTT协议,要求:2000tps,假如平均每条消息包含3个数据点,需要的服务器资源如下:
|
序号 |
配置项 |
参数 |
|
1 |
CPU |
16核 |
|
2 |
内存 |
32GB |
|
以上配置需要5台,做高可用集群 |
||
|
3 |
带宽 |
建议不低于20M |
|
4 |
磁盘 |
请根据实际存储时长情况换算 |
|
5 |
操作系统 |
🥇Ubuntu20.04及以上 (推荐) 🥈CentOS7.9及以上 |
场景举例二:1万台在线设备,支持10万台设备注册,全部走MQTT协议,要求:1000tps,假如平均每条消息包含3个数据点,需要的服务器资源如下:
|
序号 |
配置项 |
参数 |
|
1 |
CPU |
16核 |
|
2 |
内存 |
32GB |
|
以上配置需要5台,做高可用集群 |
||
|
4 |
带宽 |
建议不低于20M |
|
5 |
磁盘 |
请根据实际情况换算 |
|
6 |
操作系统 |
🥇Ubuntu20.04及以上 (推荐) 🥈CentOS7.9及以上 |
ThingsKit高可用部署会做哪些工作?
❓ ThingsKit高可用部署会做哪些工作?为什么会单独收费?
答案
如果由我司技术团队,协助贵公司做高可用部署,大概会产生30~60天的调优工作量,所以需要额外收费,具体部署工作如下:
1、高可用环境部署(5台服务器节点部署);
2、每天观察服务器运行情况,做平台性能优化(包含并发量参数调整、数据时效性优化)、数据库优化(IO性能优化、并发量参数调整)、服务器性能优化(CPU优化、内存优化、磁盘IO优化、网络优化);
3、输出性能测试报告、输出高可用报告。
ThingsKit默认端口?
❓ ThingsKit物联网平台的默认端口号是多少?
答案
JDK版本?
❓ ThingsKit物联网平台支持的JDK版本是多少?
答案
JDK 17.0.15
如何查看部署平台的版本号?
❓ 如何查看已经部署的ThingsKit物联网平台的当前版本号?
答案
方案1:使用压缩工具打开部署包,查看配置文件中的版本号。

在配置文件中搜索关键字SWAGGER_VERSION查看版本。

方案2:使用接口文档地址查看版本号。
http://部署ThingsKit物联网平台的IP:8080/swagger-ui/

方案3:使用浏览器查看当前前端版本号。
💡提示
使用f12调用浏览器开发者工具,刷新页面后查看_app.config.js开头文件。
如图:

程序包org.thingsboard.server.common.msg.gen不存在
❓ 所有插件安装完成后,运行ThingsboardInstallApplication提示gen不存在

答案
安装完插件包后,需要install一下

创建租户失败
❓ 创建租户时,提示包含“application module diectory or specify valid "install.data_dir" ENV variable to avoid automatic data diectory lookup!”
使用浏览器控制台查看API接口返回内容如下:

答案
为租户创建默认规则链的文件不存在。有2种解决方案。
方案1:将data(文件夹)放到服务器的目录/application/src/main下。
方案2:在java命令中增加参数-Dinstall.data_dir=data(文件夹)的路径。
data目录结构

图片上传失败,存储桶不符合命名规范?
❓ ThingsKit物联网平台上传头像、产品等图片失败是怎么回事?
答案
检查 minioName 和 minioPass 是否正确,如果正确再检查 bucketName 的命名是否满足以下规范:
- 存储桶名称的长度必须介于 3(最小)到 63(最大)个字符之间。
- 桶名称只能由小写字母、数字、点(.)和连字符(-)组成。
- 存储桶名称必须以字母或数字开头和结尾。
- 存储桶名称不得包含两个相邻的句点。
- 存储桶名称不得采用 IP 地址格式(例如 192.168.5.4)。
- 存储桶名称不得以前缀 开头xn--。
更详细命名规则请参考
函数 time_bucket(bigint,bigint,bigint)不存在?

答案
请检查thingsboard.yml里面的环境变量 DATABASE_TS_TYPE 和 DATABASE_TS_LATEST_TYPE 在初始化数据库时,是否和运行时的配置一致。
select * from pg_extension where extname = 'timescaledb';
查询结果

ThingKit是否支持割接升级?
答案
集群模式下支持割接升级,升级的微服务组件的节点不能少于2个。在升级过程中只要保证整个业务的微服务组件完整就不会影响正常业务。
停服割接
是指在割接过程中,所属的业务服务需要停止对外服务,所以会影响业务或客户端的正常访问。
不停服切割
是指在切割过程中,所属的业务服务需要几乎完全正常对外服务,很难对客户的访问和数据产生影响,但不是完全不会有影响。
集群模式下 是怎么维持设备链接的?
答案
集群模式下,设备直接与负载均衡软件连接,再由负载均衡软件根据算法分配一个有效的设备接入服务的节点给设备。
如果设备连接的设备接入服务的节点离线,设备会重新连接和鉴权。
怎么保证多服务器的链接平衡?
答案
设备接入服务和核心服务的API根据负载均衡软件中配置的负载均衡算法确定。
前端的默认图片如何修改?
答案
进入前端部署解压后的目录(thingskit/_image/web_ui)。用自己的图片替换掉对应目录下的图片即可。
图片文件和目录清单如下:
- resource/img/logo.png
- assets/logo.2813b619.png
- favicon.ico
Kafka异常提示:org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1195725856 larger than 104857600)
kafka节点为了防止内存溢出,将参数socket.request.max.bytes的默认值设置为104857600(100M)。
答案
在kafka的配置文件(server.properties)中对参数socket.request.max.bytes进行调整。
消息中间件异常(Kafka): Allocating buffer of size 57672199 for source 1
o.a.kafka.common.network.NetworkReceive : Allocating buffer of size 57672199 for source 1
答案
这个异常信息来自重写的Kafka实现类NetworkReceive中。当Kafka的消费者poll的数据大于10M就会弹出这个问题。

消息中间件(Kafka): Error sending fetch request (sessionId=INVALID, epoch=INITIAL)
o.a.kafka.clients.FetchSessionHandler : [Consumer clientId=tb-core-consumer-64424a4d0c7c, groupId=tb-core-node] Error sending fetch request (sessionId=INVALID, epoch=INITIAL) to node 1
答案
调整下面两个环境变量的值。延长kafka客户端和kafka服务端之间通信的有效时间。
TB_QUEUE_KAFKA_REQUEST_TIMEOUT_MS=30000 #client在配置时间内为收到broker响应,判定请求超时。
TB_QUEUE_KAFKA_SESSION_TIMEOUT_MS=10000 #broker在配置时间内为收到client心跳包,判定client无效
数据库(Cassandra): Unexpected error while creating connection. Since you provided explicit contact points. Current contact points are: Node(endPoint=123.60.37.18/<unresolved>:9042
Unexpected error while creating connection. Since you provided explicit contact points, the local DC must be explicitly set (see basic.load-balancing-policy.local-datacenter in the config, or set it programmatically with SessionBuilder.withLocalDatacenter). Current contact points are: Node(endPoint=123.60.37.18/<unresolved>:9042, hostId=207e64ee-7837-4696-918f-8ef6d45f5e8a, hashCode=7c11d1b8)=thingskit. Current DCs in this cluster are: thingskit.
org.apache.cassandra.transport.ProtocolException: Invalid or unsupported protocol version (22); supported versions are (3/v3, 4/v4, 5/v5, 6/v6-beta)
答案
客服端使用的驱动版本,不在服务端支持的版本清单内。需要降低或提高客户端使用的驱动版本号。

用nginx部署的管理业务访问时,返回403(无访问权限)?
取现这种现象是因为启动nginx服务的用户和部署包文件的所有者不一致,没问访问权限。需要修改nginx的配置文件nginx.conf。
答案
在nginx的配置文件nginx.conf中,指定启动nginx的用户名。
#user nobody; #取消注释,将nobody改为部署包所有者的名字,例如:root
worker_processes 1;
#error_log logs/error.log;
#user nobody; #取消注释,将nobody改为部署包所有者的名字,例如:root
worker_processes 1;
#error_log logs/error.log;
部署过程中查看日志报错找不到服务ID,应该如何解决?

答案
平台运行时无法获取具体的主机名而报错,有三种解决方式:
方式一 直接修改配置主机名:
hostname //输出当前主机名
vi /_makeFile/thingskit/docker-compose.yml //修改容器服务器名称为当前主机名
cd /_makeFile/thingskit/
docker-compose up -d #更新容器配置并重启

方式二 注释配置 让平台自动获取主机名:
vi /_makeFile/thingskit/docker-compose.yml //修改容器服务器名称为当前主机名
cd /_makeFile/thingskit/
docker-compose up -d #更新容器配置并重启

方式三 结合方式一 让平台能够确定主机名:
hostname //输出当前主机名
vi /_makeFile/thingskit/docker-compose.yml //修改容器服务器名称为当前主机名
ip a #获取当前服务器ip
vi /etc/hosts #修改hosts文件 添加主机名和本机ip映射关系
cd /_makeFile/thingskit/
docker-compose up -d #更新容器配置并重启
获取当前服务器ip:

修改hosts文件(图示主机名为cl):

部署环境后无法使用图片上传功能
答案
部署后无法上传图片为minio服务出现问题,一般遇到这种情况是因为minio默认端口被占用,需要更换其他监听端口。
💡 提示
minio服务的默认端口为9000和9001。
cd /_makeFile/thingskit/_image/
//第一个调整的端口号为minio服务登录端口默认9001,第二个调整的端口号为minio服务监听端口默认9000
vi java-start.sh
💡 提示
将java-start.sh中第66行内容改为需要调整的端口
nohup /opt/minio/minio server –console-address ‘:minio服务登录端口’ –address ‘:minio服务监听端口’ /opt/minio/datas >/opt/minio/minio.log 2>&1 &
💡 注意
修改了minio服务监听端口后需要将修改monolith.env内minio相关配置。

最后需要重构容器:
cd /_makeFile/thingskit/
docker-compose up -d
nginx异常提示:nginx: [emerg] the shared memory zone "thingskit" is already declared for a different use in/etc/nginx/nginx.conf:61
答案
导致这个问题出现是因为nginx的缓存中域的名称重复,修改nginx.conf即可。

💡 提示
修改后需要重启容器,nginx.conf路径为/_makeFile/thingskit/_image。
docker restart monolith
启动平台服务时显示编码错误怎么办?
答案
在平台服务的docker-compose.yml内添加环境变量:
environment:
LANG: C.UTF-8
LC_ALL: C.UTF-8
启动平台后访问不了组态怎么办?
访问组态时出现一个或多个文件报错403

答案
需要将服务器对应路径下文件添加权限
cd /_makeFile/thingskit/_image/scada/webapp/js/ #用图中文件示例
chmod 755 app.min.js
权限增加后重新加载即可
设备详情中,物模型页面的数据无法展示?
❓ 这是由于表关联查询造成数据库表ts_kv_dictionary锁表,从而出现字段key的值重复。
答案
清空ts_kv_dictionary表的数据。
设备数据无法接入平台问题定位?
❓ 平台正常部署后,设备无法接入。
答案
首次部署后发现数据库没有正常初始化怎么办?
答案
按照以下步骤执行即可初始化数据库:(单机部署且没有更改默认路径配置)
rm -rf /var/_datas/pgsql #删除数据库挂载目录
cd /_makeFile/thingskit/
docker-compose down #销毁容器
docker-compose up -d #启动容器并使新配置生效 会重新创建/var/_datas/pgsql并初始化数据库
docker-compose logs -f #服务启动日志
修改邮箱后缀需要注意些什么?
邮箱后缀默认为thingskit.com,可以通过环境变量ACCOUNT_EMAIL_SUFFIX配置。
答案
第1/3步:修改环境变量。
💡 提示
命令中的关键字邮箱后缀,需要替换为真实的邮箱后缀,例如:thingskit.com
sed -i "/ACCOUNT_EMAIL_SUFFIX/cACCOUNT_EMAIL_SUFFIX=邮箱后缀" monolith.env
sed -i "/ACCOUNT_EMAIL_SUFFIX/cACCOUNT_EMAIL_SUFFIX=邮箱后缀" miscroservice_app_application.env
第2/3步:刷新环境变量到容器
docker-compose up -d
第3/3步:刷新数据库用户表数据
UPDATE tb_user SET REPLACE(email, 'thingskit.com', '邮箱后缀');
zookeeper异常:Unable to read additional data from client
zookeeper连接异常日志。
org.apache.zookeeper.server.ServerCnxn$EndOfStreamException: Unable to read additional data from client, it probably closed the socket: address = /192.168.1.1:51910, session = 0x0
at org.apache.zookeeper.server.NIOServerCnxn.handleFailedRead(NIOServerCnxn.java:170)
at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:333)
at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:508)
at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:153)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
微服务模式下,平台连接zookeeper的session超时。
答案
💡 提示
通过环境变量【ZOOKEEPER_SESSION_TIMEOUT_MS】调整会话超时时间,默认值:3000(3秒)。
postgresql异常:could not resize shared memory segment
数据库异常,提示共享内存不足。
could not open shared memory segment "/PostgreSQL.7038700": No such file or directory

查看数据库配置
💡 提示
进入postgresql的数据目录,执行命令。例如:/app/postgresql-15.2/data
cat postgresql.conf | grep shared_buffers
答案
第1/4步:检查系统共享内存
ipcs -lm
第2/4步:修改数据库配置文件
💡 提示
进入postgresql的数据目录,执行命令。例如:/app/postgresql-15.2/data
⚠️ 警告
effective_cache_size和shared_buffers配置保持一致。结合具体情况调整。
推荐值:物理内存的25%~40%。
tee -a postgresql.conf <<-'EOF'
effective_cache_size = 4GB
shared_buffers = 4GB
EOF
第3/4步:重启数据库
//单机部署
cd /_makeFile/thingskit/
docker-compose restart
//微服务部署
cd /_makeFile/postgresql/
docker-compose restart
第4/4步:分析&优化SQL语句性能
EXPLAIN SQL语句
启动服务是报错无法执行java-start.sh脚本,应该如何解决?
答案
chmod +x /_makeFile/thingskit/_image/java-start.sh #单机
chmod +x /_makeFile/services/_image/java-start.sh #微服务
//修改权限后 启动容器
如何修改数据库端口?
答案
单机部署:
💡提示
数据库默认端口为5432。
vi /var/_datas/pgsql/db/postgresql.conf #修改
cd /_makeFile/thingskit/
docker-compose restart #修改后需要重启monolith容器

修改数据库后还需要修改平台访问数据库方式:
💡提示
修改后还需要更新容器配置并重启容器。
cd /_makeFile/thingskit/
docker-compose up -d
微服务部署:
cd /_makeFile/storage/
vi docker-compose.yml #修改
docker-compose up -d #修改后更新容器配置

修改数据库后还需要修改平台访问数据库方式:
💡提示
修改后还需要更新容器配置并重启容器。
cd /_makeFile/services/core
docker-compose up -d
如何替换证书?
💡 提示
当前环境提示证书已失效,请联系管理员重新授权,获取新证书后,如何自己替换?(文档内为默认路径)
答案
linux:

替换后需要重启容器:
//单机
docker restart monolith
//微服务
docker restart core
windows:

替换后需要重新启动(关闭cmd,双击window.bat)。
如何修改遥测数据保存时间?
答案
linux单机部署:
vi /_makeFile/monolith.env //一个月为2592000秒
#需要修改的参数SQL_TTL_TS_TS_KEY_VALUE_TTL

cd /_makeFile/thingskit/ #切换当前目录
docker-compose up -d #更新服务 重启容器
linux微服务部署:
vi /_makeFile/miscroservice_app_application_storage.env //一个月为2592000秒
#需要修改的参数SQL_TTL_TS_TS_KEY_VALUE_TTL

cd /_makeFile/services/core #切换当前目录
docker-compose up -d #更新服务 重启容器
如何关闭流媒体服务的默认访问页?
答案
cd /_makeFile/media/conf/
sed -i 's/dirMenu=0/dirMenu=1/' zlmediakit.ini
docker restart zlm #重启流媒体服务
为什么自己的设备分布地图是空白?
答案
‼️ 提示
平台版本为1.5.2即以前版本,需要更换百度地址key并重新打包,详情请咨询平台相关人员。
💡 注意
平台不提供地图接口配置,需要自行配置高德地图api接口配置。
💡 提示
登录高德地图开放平台后,注册并申请个人应用。
申请流程:





更换方式:
💡 提示
获取高德地图的key和安全密钥后执行下列步骤。
#linux环境
/_makeFile/_workspace/web_ui/_app.config.js #修改文件
//需要更换的配置
"VITE_GLOB_A_MAP_KEY":"xxx" #对应申请的key
"VITE_GLOB_A_MAP_SECURITY_JS_CODE":"xxx" #对应申请的安全密钥
//重启服务
docker restart monolith #单机部署 重启后建议清空浏览器缓存
#windows环境
D:nginxweb_ui_app.config.js #具体路径请根据nginx部署目录修改
//需要更换的配置
"VITE_GLOB_A_MAP_KEY":"xxx" #对应申请的key
"VITE_GLOB_A_MAP_SECURITY_JS_CODE":"xxx" #对应申请的安全密钥
//修改后重启nginx服务
‼️特别注意
修改后请清空浏览器缓存后重新登录访问。
如何在thingskit2.x版本修改部分环境变量?
答案
💡提示
平台2.x版本已将服务器ip等主要信息通过脚本获取,如果需要手动修改,可以在执行脚本时修改。也可以直接修改thingskit2.0.sh。
如果是执行脚本后,thingskit2.0.sh文件会放在/etc/profile,修改后需要执行source /etc/profile使修改生效。
如图:

thingskit2.0.sh相关流程:
如何确定当前环境数据库相关信息,如密码、用户名、端口等?
答案
💡提示
数据库密码是由部署时脚本随机生成,且数据库相关信息都可以通过命令查询输出。
docker inspect monolith|grep SPRING

如何设置windows部署平台开机自启动?
答案
💡提示
由于windows部署后,平台不会自动开机启动,需要手动配置。
首先在运行界面上执行命令打开启动文件夹(运行界面可用win+r呼出):

shell:startup
打开启动文件夹后,将nginx执行文件和window.bat脚本的2个快捷方式复制到该目录(如果启动了nodered、流媒体需要创建相应的快捷方式复制),重启电脑后即可自动启动平台:

如何修改平台默认端口为自己想要的端口(单机部署)?
答案
💡提示
当部署环境当前使用端口与平台默认端口冲突时,如何修改端口?
这里列举一些常用容易冲突的端口(默认配置):
8080 后端端口/http协议端口
1883 mqtt协议端口
将对应配置添加至monolith.env后执行对应命令生效,配置如:

其余配置可参考:
vi /_makeFile/monolith.env #修改环境变量文件
cd /_makeFile/thingskit #进入对应目录
docker-compose up -d #使修改生效并重启容器
💡注意
修改后端端口8080后,需要修改nginx配置才能正常访问平台。
vi /_makeFile/thingskit/_image/nginx.conf #修改nginx配置文件的路径
修改位置:

如何修改平台默认端口为自己想要的端口(微服务部署)?
答案
💡提示
当部署环境当前使用端口与平台默认端口冲突时,如何修改端口?
这里列举一些常用容易冲突的端口(默认配置):
5432 pg数据库端口
💡提示
由于微服务部署许多的服务都是用bridge网络模式docker容器部署,所以可以直接修改映射端口。
vi /etc/profile.d/thingskit2.0.sh #修改全局环境配置文件
source /etc/profile #修改后执行该命令使修改在当前远程会话生效
cd /_makeFile/postgresql/ #切换至对应配置文件路径 此为数据库
docker-compose up -d #修改后重启容器生效
//还需要重启core容器
修改位置(可以按照注释修改其他配置):
如何添加自己想要的物模型属性单位?
答案
💡提示
在平台使用中可能会发现自己创建物模型属性时没有找到自己需要的计量单位,可以通过登录超级管理员账号-系统管理-字典管理内添加。

如何进行arm架构服务器的平台部署?
答案
💡提示
平台默认部署服务器为x86(amd64)架构,如果需要在arm(aarch64)架构服务部署平台服务,请咨询相关人员,需要更换容器镜像以及一些配置项。
如何添加日志文件和云端录像自动清除?
答案
💡提示
在平台运行过程中必然会产生各种日志文件,平台默认对日志文件永久保留,如果需要按照时间清除则可以参考当前文档在配置文件中取消注释或添加,也可以按照需求修改对应参数,默认保存时间为一周,单位为秒。2.1.0版本开始生效。
//单机部署
vi /_makeFile/monolith.env #修改环境变量
SQL_TTL_AUDIT_LOGS_SECS #操作日志留存策略
SQL_TTL_JOB_LOGS_SECS #定时任务日志留存策略
SQL_TTL_OPEN_API_INVOKE_LOGS_SECS #OpenApi调用记录留存策略
SQL_TTL_GBT28181_PLAN_RECORDE_SECS #录像计划执行记录留存策略
SQL_TTL_GBT28181_RECORDE_SECS #云端录像留存策略
cd /_makeFile/thingskit/
docker-compose up -d #更新配置 重启容器生效
//微服务部署
vi /_makeFile/miscroservice_app_application_storage.env #修改环境变量
SQL_TTL_AUDIT_LOGS_SECS #操作日志留存策略
SQL_TTL_JOB_LOGS_SECS #定时任务日志留存策略
SQL_TTL_OPEN_API_INVOKE_LOGS_SECS #OpenApi调用记录留存策略
SQL_TTL_GBT28181_PLAN_RECORDE_SECS #录像计划执行记录留存策略
SQL_TTL_GBT28181_RECORDE_SECS #云端录像留存策略
cd /_makeFile/services/core
docker-compose up -d #更新配置 重启容器生效
cd /_makeFile/services/rule
docker-compose up -d #更新配置 重启容器生效
如何访问平台ThingsBoard界面?
答案
💡提示
thingskit平台基于thingsboard开发,平台部署后,可以直接访问thingsboard界面。
//单机部署
平台访问ip:8080 #默认使用8080端口访问 如果修改了后台接口端口 请自行调整
//微服务部署
平台访问ip:18080

//使用超级管理员账号登录 也可以使用租户账号登录 账号加邮箱后缀(@thingskit.com)即可
默认:
sysadmin@thingskit.com
Sysadmin@123
如何修改平台产品处理队列的高优先级策略?
答案
💡提示
用户在产品可以进行处理队列设置,默认为主要。当使用了高优先级时,可能会产生消息阻塞(高优先级消息队列会无限重试失败和超时消息),可以做一定修改。需要登录ThingsBoard操作。
登录ThingsBoard方式:

💡提示
可以调整具体的策略,默认值0(没有限制)。修改后需要应用修改。

如何修改平台接入信息?
答案
💡提示
平台会默认设置连接信息,如果需要修改对应显示则需要访问数据库修改。表:admin_settings。

如何访问平台swagger(接口调试界面)?
答案
💡提示
当需要进行平台接口的调试工作时可以先参考我们的api文档,然后到swagger内调用接口调试。
//单机部署
部署ThingsKit物联网平台的IP:8080/swagger-ui/ #默认路径且需要开放8080端口访问 如果修改端口请自行适配
//微服务部署
部署ThingsKit物联网平台的IP:18080/swagger-ui/ #默认路径且需要开放18080端口访问 如果修改端口请自行适配
api文档:
如下图:

如何关闭swagger?
答案
💡提示
用户有时候不需要使用swagger调试接口,则可以直接关闭。默认开启swagger访问。
//单机部署
vi /_makeFile/monolith.env
//添加参数 SWAGGER_ENABLED=false
cd /_makeFile/thingskit
docker-compose up -d #使配置生效并重启容器

访问时显示:

如果后端日志报错mqtt协议上报数据大小超过限制,怎么修改限制?
答案
💡提示
如果接入mqtt协议设备后,后台日志内如下图报错,则可以修改环境变量调整限制解决。

单体
vi /_makeFile/monolith.env #编辑环境变量
NETTY_MAX_PAYLOAD_SIZE #将该值添加到文件内 默认64kb 单位byte
cd /_makeFile/thingskit/
docker-compose up -d #重启并更新平台配置
忘记平台超级管理员密码要怎么办?
答案
💡提示
平台超级管理员默认账号密码是固定的:
sysadmin
Sysadmin@123
💡提示
如果修改了平台超级管理员后忘记了密码,可以通过修改平台数据库的方式重置超级管理员密码。使用navicat17等支持pg16数据库的管理工具访问数据库后,执行以下sql。
UPDATE sys_user
SET password = '$2a$10$Hu6uJKpjcWwAkPbwNFfiaeuVqyJS1mN83lUIGwsOEwvg1AdcCk6oy'
WHERE real_name = '超级管理员';
UPDATE user_credentials
SET password = '$2a$10$D644W5Ro4mgmze1EJVg2Q.Q/W4PqafGs4bCZ8Lfu8af.K4y0yYYNO'
WHERE user_id IN (SELECT id FROM tb_user WHERE authority = 'SYS_ADMIN');
💡提示
设置好了之后,可以用平台超级管理员默认账号密码登录。登录后可以重新修改密码。
如果创建租户管理员想修改初始密码或者不想要首次登录重置密码应该怎么修改?
答案
💡提示
平台默认首次登录租户管理员需要输入默认初始密码123456并重置密码,都可以修改环境变量调整。
单机
vi /_makeFile/monolith.env #需要修改的环境变量文件
ACCOUNT_PASSWORD_FORCE_RESET #是否首次登录租户管理员需要重置密码 改为false取消
ACCOUNT_DEFAULT_PWD #首次创建租户管理员默认登录密码
cd /_makeFile/thingskit/ #切换至dokcer-compose.yml文件目录下
docker-compose up -d #重启平台服务并使配置生效
调用平台数据源时如果请求第三方接口但第三方不允许跨域要怎么办?
答案
💡提示
如果需要在平台数据源功能调用第三方接口,在完成鉴权的过程中发现,当前第三方平台不允许跨域(平台http方式访问),可以通过平台nginx代理的方式解决这个问题。
单机
vi /_makeFile/thingskit/_image/nginx.conf
docker restart monolith #重启平台服务生效
微服务
vi /_makeFile/webserver/nginx.template
docker restart nginx #重启nginx服务生效
添加代理示例(假设代理地址为https://www.tech.cn/):
location /tech/ {
proxy_pass https://www.tech.cn/;
proxy_connect_timeout 5s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_ssl_server_name on;
#编辑传递给代理服务器的请求头
proxy_set_header Host $http_host; #原始请求的主机名
proxy_set_header X-Real-IP $remote_addr; #调用当前代理的上级客户端的IP地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #显示代理树的全部客户端IP地址
proxy_set_header X-Forwarded-Proto $scheme; #原始请求的协议
proxy_set_header X-Forwarded-host $server_name; #原始请求的Host值
proxy_set_header X-Forwarded-Port $server_port; #原始请求的端口
}

💡提示
修改后,调用接口方式如图所示。

手动备份数据库目录后 ,重新挂载数据库目录,启动平台失败应该怎么操作?
答案
💡提示
数据库目录权限需要修改为默认权限才可以正常调用,手动备份后,需要修改一下备份数据库的权限。手动备份数据库,需要先停止平台。
cd /var/_datas/pgsql/ #默认数据库挂载目录
chown -R 100:102 db
初始化或运行平台有问题,怎么样快速判断问题?
答案
💡提示
有的情况下,在服务器首次部署或运行时发现平台无法访问,平台启动的容器始终重启,可以查看平台日志或让平台运行时直接输出日志查看第一个报错处输出为什么。
#单机
docker logs monolith --tail=200 -f #按照容器名称查看实时查看200行日志
cd /_makeFile/thingskit #进入平台启动目录 如果有修改请自行调整
docker-compose up #直接启动容器并直接输出容器的日志 随时可以使用快捷键ctrl+c关闭容器查看日志细节
已部署平台服务器网卡ip变化,应该怎么快速恢复平台服务?
答案
💡提示
如果部署了一套单机部署平台但服务器启用网卡ip有所变化,则需要执行以下步骤实现平台配置改动并重启平台服务。
cd /_makeFile/
mv /etc/profile.d/thingskit2.0.sh .
./init_all.sh #执行时直接回车就行了
mv thingskit2.0.sh /etc/profile.d/
source /etc/profile
cd thingskit
docker-compose up -d #重启平台并更新配置
如何开启/关闭云边协同功能,云边协同默认的端口又是什么?
答案
💡提示
平台部署后,云边协同功能默认未开启,如果需要开启则需要修改对应配置后重启容器。云边协同的默认端口号为7070。文档示例都为默认路径。
#单机部署
cd /_makeFile/ #切换到配置文件目录下
vi monolith.env #用vi命令编辑配置文件
EDGES_ENABLED=true #将EDGES_ENABLED改为true
cd thingskit/
docker-compose up -d #是修改配置生效且重启容器
EDGES_RPC_PORT=7070 #云边协同云端监听端口配置
#微服务部署
cd /_makeFile/ #切换到配置文件目录下
vi miscroservice_app_application.env #用vi命令编辑配置文件
EDGES_ENABLED=true #将EDGES_ENABLED改为true
cd server/core
docker-compose up -d #是修改配置生效且重启容器
EDGES_RPC_PORT=7070 #云边协同云端监听端口配置
如果在超级管理员界面操作角色管理取消了超级管理员的权限,导致下一次访问后没有页面改怎么办?
答案
💡提示
如果在误操作的情况下,将超级管理员的权限取消且保存生效后,会导致无法使用。可以参考该文档进行还原。
图示:

💡提示
还原需要操作数据库 ,可以使用navicat等pg16数据库连接工具访问,执行下面sql还原,执行后,刷新界面即可。数据库访问信息参考下面文档。
数据库访问信息查询:
https://yunteng.yuque.com/avshoi/v2xdocs/gho03tgxganir968#PBG6G
💡注意
执行过程中可能会遇到提示报错,可以选择遭遇错误时继续,直到执行完成。
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-472b-a9e6-b60cebe95714');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-473b-a9e6-b60cebe95715');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-476b-a9e6-b60cebe95718');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '8a8ed060-c22b-425c-93dc-d2bca8249e92');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '78c199d2-5a50-4db8-9217-5bbfb35fbde7');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '9a50f5cf-d1c0-4305-b336-0db1e4e32698');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a0ffa8c5-637e-472b-a9e6-b60cebe85474');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-471b-a9e6-b60cebe95713');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-474b-a9e6-b60cebe95716');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '244dd88c-d414-4c38-85a0-86104d21b172');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-472b-a9e6-b60cebe85433');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-472b-a9e6-b60cebe85434');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a8ffa8c5-637e-472b-a9e6-b60cebe85436');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'b9a65fb9-4930-49d7-94de-b25cce41aba4');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '60299f0e-1d11-484d-827d-5ad6c74af898');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '651de9b4-c3fb-4f48-b5be-001d06db2298');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'c6fe4897-c173-4b50-b2ec-5d0827223752');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a46fa894-9886-4354-9423-bea80f8ca4fd');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e72b3563-12ad-47ef-ad34-2d83765466bf');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '5622c811-7cf3-4ec2-a114-3ec92f8cf688');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e9818413-9287-48c3-8b0f-096fbfaae145');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '7f188adb-31bd-441e-8cea-2ecbe43d7701');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ff0d6153-d952-439d-afd1-3f12b947ba9e');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '710eeeb5-2466-49be-8c8f-dca18c3c6606');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '41110b0f-0f9b-468c-81a7-9ca6bd7bca98');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ca60b93b-fc8e-487b-bbff-1831ccc6e518');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '4911b704-452d-48d9-93dc-ee0b4caa9c1d');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '27e36b74-f516-4fea-bd92-c8630256758f');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '94f7795f-7ad8-43d6-bf3b-db868c993075');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '9b9dbf8d-0799-43f4-90fb-ce44d473fcf1');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '9908fc3b-c9a1-4d9a-9433-4af4d4213415');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '8a94cdcc-f882-46d4-8eb7-7fa6f0081e03');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'f93f148c-ad6b-471a-839c-38eb0763e602');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '78e220e2-d837-4852-b75d-e21e5224eaa9');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '116c38c4-3b59-4823-a74b-a04bf0dd4128');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '39b97371-fbf2-4b72-b222-531367f1f5dc');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a3989882-02a3-4c72-9a2f-3f08902ac239');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'acb6d5f9-b9b9-46d7-a345-b76dab31bed8');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '4421abb0-d334-4d55-8732-8e0e9f280cd4');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '161ab75c-a1db-4f86-a020-02fb1fa33130');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e7cef092-98d5-46f5-b59b-13875d88b22b');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a4a5521e-5087-4a13-9e01-b172d3df16a3');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '7e2b729a-1742-4093-94b3-48b1691edc7c');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '33006a83-81d4-483d-8812-dc7a94604777');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'dfd3f6aa-fbf6-49dc-bd3c-c74a4cd32497');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '0aa0f6ff-9ae1-48ff-b0c3-d4da06897148');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e3b6c283-3f02-4b7c-87c3-cde215a75b0b');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e2c0d301-e67c-46b5-a393-264b6e5a2440');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '5df31390-9797-4098-930c-368b513e21d9');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '55747af6-fac0-4450-a5c9-89daa51f8d50');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'df94d440-5abf-4b98-aeb9-73a09b22d62c');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '55b6ed5f-5a65-4099-9bc7-005b9361e0bd');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '2c45be39-5ba1-4846-8c87-961a241f9e55');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '4ce99298-d100-4479-ac61-3f6762ade2c4');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '22023bd8-2e1b-4eca-9b69-af9f1b239d64');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '2ffa3d5b-d3fd-4832-b15e-b40728cdc237');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '54e22b0a-95eb-44ff-a14f-d8dd1b7def27');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '99d0a736-02b9-4292-a69a-b31127de255a');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ccd8e1cc-6262-4fcf-a124-355caba3b9f4');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '51389d54-c854-4022-8d54-1d78ac9f58af');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'aeaf0364-8a4b-4ced-8751-a652b6173fa4');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'f0591532-07fa-4291-9da1-716bb87e9eb2');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'aaaafc46-b2fc-457b-9651-d644e5aa49ff');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '3a21edf9-92c3-4dd9-8355-1fa29c5bf20d');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'db41fac4-ec4c-4e41-986e-44baca67ac38');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '112a8167-4404-4d65-9516-75134325c837');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e13ba561-da27-4aed-8363-76c197c03070');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'b70e8a49-014f-4a4a-965f-f179ae746eee');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'c8e31d1f-81b2-4e70-9017-4a6d0c15e364');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ee6ad5dd-8417-4b68-8534-d133ce99548a');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '5e4ba462-55f3-4f25-9704-45bacb9308d3');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '8bee4b55-f5ad-4d55-b25f-33943f13c87b');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '035a88c0-55e3-4baf-96fd-9508626a60f9');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '12a853b4-c67c-49a6-8aac-0a853608ab50');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ac631965-b7b5-4913-8806-79398ef817b8');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'bd4ebf98-3bd9-4a12-881a-7185c265b42a');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '6ef9d91d-9ce0-41ca-96b7-65aa841deb2b');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a4ff42e2-cf62-461c-8acb-e9aed654b7e9');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'e3602ad3-2d82-42fd-9714-e960c8014db9');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '7fd799e9-8210-4c23-b520-0be2d5b8047a');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '2b1dde19-564b-41f7-8182-c85d51c83834');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '77d60715-31c8-442f-9f41-64dcc67aa881');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '871df761-d153-4b5e-9e9e-8de1209468f7');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'fb331d22-9938-4a69-8f98-314b57600389');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '57b8d783-ffbb-4993-88d8-bf3b8b1222b9');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '831345c8-0447-40d8-85e9-cd78364ce2de');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '0d83b781-497a-4ca1-95cb-137d5787ab97');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '8abc0f43-6284-456e-9bb7-4d912525ab89');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '780e8a93-22d4-4dc2-acaa-ec3788745fdc');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'b27b1a90-d749-45ce-bf6e-14fbd30201b2');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'b753dc7d-392e-4275-8046-7f7f447528a8');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '103f8df4-04b4-4b3c-a98f-e0a06c7b3c51');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ae1b2234-da6f-4cff-8525-163e38e9521f');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'ff0d079b-2e8d-4194-a541-81405504a0d1');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '0cac0257-0664-4d7c-8183-f54633eb06e3');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a9fe96b5-7e1c-4992-9d6a-825f964ef1eb');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a80f41f1-6f23-4eae-a49b-619bd809931b');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '64a0a44a-b2de-4ec0-af95-98ea3ec783a5');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '2245a152-1118-4a1e-a233-ab5815a5dfc5');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'd2f14e20-8c5b-4d07-a567-b581a81d3d14');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '4bc09f21-ca3a-4a2f-963c-f55e5500562f');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '5b7aefbc-4c00-455b-a22e-9b0923b367bb');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '47f9af98-f52b-474c-8fd9-a16dae1405b4');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '405aaa7c-ab57-4ba8-9ae9-dfaddc4c78be');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'a0c109c0-cf04-4626-81bd-9cff398ca1ce');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '429799aa-c1ad-46e0-9ba8-379d00b7696d');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '87ef192b-e3a8-4d15-9114-b9a698592109');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '885ef223-94b1-4b39-89a8-94584183c0be');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '2af98473-3b04-4dc3-89e8-989f55eb3bf7');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'bcb3227f-90c0-4a93-85b3-8cc686740d42');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'bf5c793d-dcf9-497b-bef9-2f3820acc289');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'c5bb0d1d-9c67-4fc9-ad43-a1771cbab605');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'f28df8b0-2fe7-4713-aa80-412043da59f3');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'c49c061a-1354-4ad1-aee0-c7ac63f80e19');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', 'd0618fe4-1ba2-48f7-a97c-85ea333e1519');
INSERT INTO "public"."sys_role_menu" VALUES ('81818181-8181-8181-8181-818181818181', '4accad7b-abdf-449f-8479-c5bec478df14');
创建nodered实例时显示“超过租户允许创建范围(0~5)”,如何操作才能允许创建更多实例?
答案
💡提示
平台默认配置每一个租户只能创建最多5个nodered实例,如果需要创建更多,则需要修改平台配置。(都为默认路径)
#单机
vi /_makeFile/monolith.env #配置文件路径
MAXIMUM_NUMBER_OF_ENTITIES_ON_USER=5 #修改项 5即表示限制为每一个租户最多创建5个
cd /_makeFile/thingskit
docker-compose up -d #重启平台并使配置生效
#微服务
vi /_makeFile/miscroservice_nodered.env #配置文件路径
MAXIMUM_NUMBER_OF_ENTITIES_ON_USER=5 #修改项 5即表示限制为每一个租户最多创建5个
cd /_makeFile/nodered
docker-compose up -d #重启nodered并使配置生效
平台出现异常,但从日志中看不出来什么问题,如何排查是否是服务器根目录存储满了?
答案
💡提示
有时候在平台上使用会出现各种问题,但查看平台后台日志没有任何的报错信息,有可能是因为平台根目录存储用尽,可以用相关命令查看。
df -h

如何查看当前部署环境的数据库挂载路径?
答案
💡提示
平台采用docker方式部署pg数据库。如果当前平台为达梦数据库适配版本,则达梦数据库为单独部署,可不参考该文档。
💡注意
通过此方式找到的路径为数据库在服务器上的真实存储路径,如果删除则数据库清空,请注意操作。如果不了解当前情况如何处理,请咨询平台相关人员。
#单机
docker inspect monolith|grep pgsql #查看数据库挂载实际目录
#微服务
docker inspect pgsql|grep pgsql #查看数据库挂载实际目录
图中平台当前使用数据库挂载目录即/_datas/pgsql/:
