Moonfire NVR 监控系统故障排查指南

Moonfire NVR 监控系统故障排查指南

【免费下载链接】moonfire-nvr Moonfire NVR, a security camera network video recorder 【免费下载链接】moonfire-nvr 项目地址: https://gitcode.com/gh_mirrors/mo/moonfire-nvr

概述

Moonfire NVR 是一款开源的网络视频录像系统,用于管理和存储IP摄像头的监控视频。本文将详细介绍如何排查Moonfire NVR运行中的常见问题,包括日志查看方法、各类错误分析以及解决方案。

日志查看方法

Moonfire NVR运行时会将日志输出到标准错误(stderr),查看方式取决于运行环境:

配置界面运行时

建议将stderr重定向到文本文件:

moonfire-nvr config 2>debug-log

日志将保存在debug-log文件中。

通过systemd运行时

日志会被重定向到journal,使用以下命令查看:

sudo journalctl --unit moonfire-nvr

建议设置MOONFIRE_FORMAT=systemd环境变量以获得更好的日志格式。

日志格式解析

Moonfire NVR的日志格式包含以下关键信息:

  • 时间戳(本地时区)
  • 日志级别(TRACE/DEBUG/INFO/WARN/ERROR)
  • 线程名称
  • 上下文信息(spans)
  • 目标模块
  • 日志消息
  • 事件字段

典型日志示例:

2023-02-15T22:45:06.999329 INFO s-courtyard-sub streamer{stream="courtyard-sub"}: moonfire_nvr::streamer: opening input url=rtsp://192.168.5.112/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=Onvif

关键线程说明

Moonfire NVR使用多线程架构,主要线程类型包括:

  • main:主线程,负责初始化和协调
  • s-CAMERA-TYPE:视频流处理线程(每个摄像头一个)
  • sync-DIR_ID:数据同步线程(每个存储目录一个)
  • r-DIR_ID:视频读取线程(每个存储目录一个)
  • tokio-runtime-worker:HTTP请求和RTSP流处理线程

常见日志分析

数据刷新日志

系统定期将数据刷新到SQLite数据库时会记录详细信息,包括:

  • 刷新原因
  • 新增/删除的录像文件
  • 各存储目录的空间变化

示例:

2021-03-08T23:14:18.388000 sync-2 syncer{path=/media/14tb/sample}:flush{...}: moonfire_db::db: flush complete:
/media/6tb/sample: added 98M 864K 842B in 8 recordings...

严重错误(Panic)

表明系统遇到无法恢复的错误,需要重启服务。建议设置RUST_BACKTRACE=1获取详细堆栈信息。

操作延迟警告

当操作耗时超过1秒时会记录警告,频繁出现可能表明性能问题。

摄像头流错误

摄像头连接中断时会记录错误并尝试重连,常见原因包括:

  • 摄像头重启
  • 网络问题
  • 系统处理速度不足

常见问题解决方案

Docker环境问题

配置文件目录错误

错误信息:"/etc/moonfire-nvr.toml" is a directory 解决方案:删除错误创建的目录,创建正确的配置文件。

用户权限问题

错误信息:unable to find user UID: no matching entries in passwd file 解决方案:确保在Docker compose中正确配置用户UID和GID。

时间获取失败

错误信息:clock_gettime(CLOCK_MONOTONIC) failed: EPERM 解决方案:在Docker compose中取消seccomp: unconfined的注释。

临时文件问题

错误信息:VFS is unable to determine a suitable directory for temporary files 解决方案:在Docker compose中将/var/tmp挂载到容器中。

服务器错误

时区配置错误

错误信息:unable to get IANA time zone name 解决方案:检查系统时区配置(/etc/localtime$TZ环境变量)。

视频帧问题

错误信息:pts not monotonically increasing 可能原因:摄像头输出包含B帧,建议在摄像头设置中禁用B帧。

磁盘空间不足

错误信息:No space left on device 解决方案:

  1. 清理其他占用空间的文件
  2. 或重新配置Moonfire NVR使用更少空间
数据库/文件系统损坏

排查步骤:

  1. 检查内核日志
  2. 使用smartctl检查磁盘健康状态
  3. 运行fsck检查文件系统
  4. 停止服务后运行moonfire-nvr check检查完整性
时间戳错误

原因:系统时间被调整后,正在进行的录像仍使用旧时间戳。 解决方案:确保系统时钟准确,特别是无RTC的设备(如树莓派)应考虑使用NTP服务。

内核日志问题

UAS错误

可能与USB存储设备兼容性有关,建议尝试禁用UAS模式。

文件系统错误

表明存储设备可能存在问题,建议检查磁盘健康状况并考虑更换。

总结

本文详细介绍了Moonfire NVR的日志系统、常见错误及其解决方案。通过合理配置和定期监控,可以确保监控系统稳定运行。遇到无法解决的问题时,建议收集完整的日志信息寻求进一步帮助。

【免费下载链接】moonfire-nvr Moonfire NVR, a security camera network video recorder 【免费下载链接】moonfire-nvr 项目地址: https://gitcode.com/gh_mirrors/mo/moonfire-nvr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值