ThingsBoard 日志管理指南5 个关键配置告别半夜磁盘告警【免费下载链接】thingsboardAll-in-one IoT Platform - Device management, data collection, processing and visualization.项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard凌晨磁盘 100% 告警SSH 上去一看把盘塞满的是日志目录——这是最经典的现场。这篇按运维视角把 ThingsBoard 日志管理讲透日志落在哪、内置轮转的上限在哪、容器日志为什么最容易失控、巡检怎么做适合刚部署或已经被磁盘告警吵醒过的同学。先给结论文件日志的轮转 ThingsBoard 已经内置总量封顶不用你手写真正的失控点通常只有一个——Docker 部署时的容器 stdout 日志。摸清日志在磁盘上的落点安装部署各服务统一写向 /var/log/thingsboard根 pom.xml 里写死了pkg.unixLogFolder/var/log/${pkg.name}打包时注入各服务 conf。所以安装部署下主服务日志/var/log/thingsboard/thingsboard.logLicense 日志/var/log/thingsboard/tb-license.logGC 日志/var/log/thingsboard/gc.logJVM 参数直接写自带切分各传输微服务同理比如transport/mqtt/src/main/conf/logback.xml会把tb-mqtt-transport.log写进同一个目录。排查前先确认自己属于哪种部署形态目录完全不同。Docker 部署日志不落文件走 stdout容器镜像里的 msa/tb-node/docker/logback.xml 只配了 console appender所有日志打到 stdout由宿主机 Docker 的 json-file 驱动接管。这决定了 Docker 部署的日志治理必须在宿主机侧做去 /var/log 下找 .log 文件是找不到的。看懂内置的轮转规则logback 的三个硬限制application/src/main/conf/logback.xml 里的文件 appender 是这样配的rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern${pkg.logFolder}/${pkg.name}.%d{yyyy-MM-dd}.%i.log/fileNamePattern maxFileSize100MB/maxFileSize maxHistory30/maxHistory totalSizeCap3GB/totalSizeCap /rollingPolicy这段的含义按天或单文件到 100MB 就切新文件最多保留 30 天整个日志目录总量硬封顶 3GB——最后一道保险。参数默认值作用 / 建议maxFileSize100MB单文件切分上限小磁盘可压到 50MBmaxHistory30保留天数审计要求高就调大磁盘紧张调到 7totalSizeCap3GB目录总量硬顶按剩余磁盘空间反推别再叠加一层 logrotatelogback 已经在轮转再写一份/etc/logrotate.d/thingsboard去管同一个目录两套机制会抢文件句柄典型后果是删了文件空间却不释放。安装部署下的文件日志零额外配置就是正确配置。给容器 stdout 日志上保险json-file 驱动默认无大小限制、无限追加设备常年在线的 TB 平台一个月写出几十 GB 很常见。改法在 compose 文件里给容器加 logging 块services: tb-node: image: your-tb-image logging: driver: json-file options: max-size: 50m max-file: 5每容器最多 5 个文件、每个 50m合计 250MB排障够用且永不撑爆磁盘。已经跑了一段时间的先用docker system df -v看容器日志占了多少再动手。压低日志噪音改日志级别不用重启application/src/main/conf/logback.xml 头部带scantrue scanPeriod10 seconds改完文件约 10 秒自动生效。生产排障时临时加一行logger nameorg.thingsboard.server.dao levelDEBUG /排查完删掉这行10 秒后自动回到 INFO。比改配置重启服务安全得多是标准的免停机排障动作。GC 日志与 .out 文件application/src/main/conf/thingsboard.conf 里给 JVM 加了-Xlog:gc...filecount10,filesize10MGC 日志固定 10 个文件 × 10M 封顶无需处理thingsboard.out收进程标准输出体量通常不大排障时 tail 即可。建立巡检与告警闭环一行命令的磁盘体检df -h / | awk NR2{print $5 used} du -h --max-depth1 /var/log/thingsboard | sort -rh | head -5前者看整盘水位后者把日志目录按大小排序取前 510 秒完成体检。挂进 crontab 每天跑、超阈值才落告警文件10 3 * * * df -h / | awk NR2{gsub(%,,$5); if($585) print disk $5% used} /var/log/disk-alert.log让 ThingsBoard 自己监督自己更完整的闭环把宿主机磁盘水位作为遥测点接入 TB配一条告警规则超阈值直接推邮件/短信不用等磁盘写满才发现。告警列表还能直接上仪表盘仓库自带的 monitoring/ 模块则是 TB 对自身进程 CPU、内存的监控服务可与上面的磁盘告警组合成两层监控。常见坑自查清单删了文件空间没回来进程还持有旧句柄用lsof L1确认logback 场景根本不该手删文件。Docker 部署套用安装部署的路径/var/log/thingsboard 下没有 .log日志实际在/var/lib/docker/containers/里。DEBUG 开着忘了关dao 层 DEBUG 是泼水式输出上线前确认 root 回到 INFO。logback 上叠 logrotate双重轮转句柄竞争和空间不释放大多源于此。【免费下载链接】thingsboardAll-in-one IoT Platform - Device management, data collection, processing and visualization.项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考