banner
NEWS LETTER

嵌入式 Linux 系列 23:远程诊断、日志导出和现场维护

Scroll down

设备部署到现场后,研发很少能直接接触实物。远程诊断能力决定了问题能不能快速闭环。最基本的远程诊断不是远程 shell,而是能安全地导出状态、日志和配置快照。

一、远程诊断要收集什么

建议收集:

  • 固件版本。
  • 启动时间。
  • 最近重启原因。
  • 网络状态。
  • MQTT 状态。
  • 磁盘使用。
  • 内存和进程。
  • 内核日志。
  • 应用日志。
  • 当前配置。

这些信息能覆盖大部分现场问题。

二、support bundle

提供脚本:

1
/usr/bin/collect_support_bundle

输出:

1
/tmp/support_bundle.tar.gz

内容:

1
2
3
4
5
6
7
system.txt
dmesg.txt
process.txt
network.txt
config/
log/
version.txt

打包前要过滤敏感信息,例如密码、token、私钥。

三、通过 MQTT 触发

可以设计命令:

1
2
3
4
{
"cmd": "collect_support_bundle",
"request_id": "diag-001"
}

设备执行后返回:

1
2
3
4
5
6
{
"cmd": "collect_support_bundle_ack",
"request_id": "diag-001",
"result": "ok",
"path": "/tmp/support_bundle.tar.gz"
}

真正上传可以走 HTTP、对象存储或内网服务。

四、远程操作要有限制

远程诊断不能变成任意命令执行。

建议:

  • 命令白名单。
  • 参数白名单。
  • 操作审计日志。
  • 限制调用频率。
  • 需要授权 token。
  • 不返回敏感文件。

生产环境不要直接开放远程 shell 作为常规诊断手段。

五、现场维护模式

可以设计维护模式:

  • 默认关闭 SSH。
  • 通过授权命令临时开启。
  • 超时自动关闭。
  • 开启和关闭都记录日志。

这样兼顾安全和维护效率。

六、诊断验收

一台设备异常时,远程应该能拿到:

1
2
3
4
5
6
7
版本
配置
日志
网络
进程
磁盘
内核错误

如果这些都拿不到,问题定位会非常依赖现场人员口述。

其他文章
目录导航 置顶
  1. 1. 一、远程诊断要收集什么
  2. 2. 二、support bundle
  3. 3. 三、通过 MQTT 触发
  4. 4. 四、远程操作要有限制
  5. 5. 五、现场维护模式
  6. 6. 六、诊断验收
请输入关键词进行搜索