【FFmpeg 智慧园区场景应用】6.智慧园区 FFmpeg 自动化运维体系 - 完整部署清单与运维巡检手册
·
智慧园区 FFmpeg 自动化运维体系 - 完整部署清单与运维巡检手册
本手册涵盖环境准备、脚本部署、定时任务配置、日常巡检、故障排查全流程,可直接用于园区项目落地与长期运维,确保音视频处理系统稳定运行。
一、 部署清单(分步执行,确保零遗漏)
1. 服务器环境准备(Linux 系统,Ubuntu/CentOS 通用)
| 步骤 | 操作内容 | 命令/说明 |
|---|---|---|
| 1.1 | 安装 FFmpeg(完整版) | Ubuntu/Debian:sudo apt update && sudo apt install ffmpeg -yCentOS: sudo yum install epel-release -y && sudo yum install ffmpeg -y |
| 1.2 | 验证 FFmpeg 安装 | ffmpeg -version(显示版本信息即成功) |
| 1.3 | 安装依赖工具 | sudo apt install curl cron logrotate -y(curl 用于告警,cron 用于定时任务,logrotate 用于日志轮转) |
| 1.4 | 创建专用运维用户(可选,提升安全性) | sudo useradd -m park_ops && sudo passwd park_ops赋予 sudo 权限: sudo usermod -aG sudo park_ops |
| 1.5 | 创建目录结构(核心) | bash<br>sudo mkdir -p /data/park/{record,ai_input,scripts,logs}<br>sudo chown -R park_ops:park_ops /data/park<br> |
2. 脚本部署(上传至 /data/park/scripts 目录)
| 脚本名称 | 功能 | 部署操作 |
|---|---|---|
camera_record.sh |
摄像头 24h 录制 + 故障自动重启 | 1. 上传脚本至 /data/park/scripts2. 修改配置: RTSP_URL/CAMERA_ID/SAVE_DIR3. 赋予权限: chmod +x camera_record.sh |
batch_ai_preprocess.sh |
录像批量 AI 预处理(分辨率/帧率调整) | 1. 上传脚本,修改 INPUT_DIR/OUTPUT_DIR2. 增加磁盘预检(参考之前的改造方案) 3. 赋予权限: chmod +x batch_ai_preprocess.sh |
history_record_compress.sh |
历史录像 H.265 压缩(节省 50% 存储) | 1. 上传脚本,修改 RECORD_DIR/KEEP_DAYS2. 增加磁盘预检 3. 赋予权限: chmod +x history_record_compress.sh |
disk_monitor_alert.sh |
磁盘监控 + 企微/钉钉告警 + 静默/恢复通知 | 1. 上传脚本,配置 ALERT_CHANNEL/WEBHOOK2. 调整 ALERT_THRESHOLD/SILENT_PERIOD3. 赋予权限: chmod +x disk_monitor_alert.sh |
3. 定时任务配置(crontab)
以 park_ops 用户配置,避免 root 权限风险
- 编辑定时任务:
crontab -e - 添加以下内容(根据园区需求调整执行频率)
# 1. 磁盘监控:每30分钟执行一次 */30 * * * * /data/park/scripts/disk_monitor_alert.sh # 2. 历史录像压缩:每周日凌晨2点执行(低峰期) 0 2 * * 0 /data/park/scripts/history_record_compress.sh # 3. 批量AI预处理:每天凌晨3点执行(低峰期) 0 3 * * * /data/park/scripts/batch_ai_preprocess.sh # 4. 日志轮转:每天凌晨4点执行(系统自带logrotate可省略,此处为冗余配置) 0 4 * * * /usr/sbin/logrotate /etc/logrotate.d/park_ffmpeg - 重启 cron 服务:
sudo systemctl restart cron - 验证定时任务:
crontab -l(显示配置内容即成功)
4. 日志轮转配置(避免日志占满磁盘)
- 创建 logrotate 配置文件:
sudo vi /etc/logrotate.d/park_ffmpeg - 写入以下内容
/data/park/logs/*.log { daily # 每天轮转一次 rotate 30 # 保留30天日志 compress # 压缩历史日志 missingok # 日志文件不存在时忽略 notifempty # 空日志不轮转 create 0644 park_ops park_ops # 新建日志文件权限 postrotate # 轮转后无需重启服务 /bin/true endscript } - 测试日志轮转:
sudo logrotate -f /etc/logrotate.d/park_ffmpeg
5. 后台启动摄像头录制脚本
# 切换到脚本目录
cd /data/park/scripts
# 后台启动(nohup 确保终端关闭后继续运行)
nohup ./camera_record.sh &
# 查看进程是否运行
ps -ef | grep camera_record.sh | grep -v grep
二、 日常运维巡检手册(每日/每周/每月)
1. 每日巡检(5分钟快速检查)
| 检查项 | 操作命令 | 正常状态 | 异常处理 |
|---|---|---|---|
| 录制进程是否存活 | `ps -ef | grep camera_record.sh` | 显示进程 ID |
| 磁盘使用率是否正常 | df -h /data/park |
使用率 < 告警阈值(默认85%) | 手动执行压缩脚本,清理过期录像 |
| 告警脚本是否运行 | grep "磁盘分区" /data/park/logs/disk_monitor.log |
每30分钟有日志记录 | 检查 crontab 定时任务是否生效 |
| 录像文件是否生成 | `ls -lh /data/park/record | grep $(date +%Y%m%d)` | 有当日命名的 MP4 文件 |
2. 每周巡检(深度检查,建议周日执行)
| 检查项 | 操作命令 | 正常状态 | 异常处理 |
|---|---|---|---|
| 历史录像压缩是否成功 | grep "压缩完成" /data/park/logs/history_record_compress.log |
显示压缩后的文件大小 | 检查 FFmpeg 是否支持 libx265 编码器 |
| AI 预处理是否完成 | `ls -lh /data/park/ai_input | grep _ai_pre.mp4` | 有预处理后的文件 |
| 日志文件是否轮转 | `ls -lh /data/park/logs | grep .log.gz` | 存在压缩的历史日志 |
| 静默周期是否生效 | grep "静默" /data/park/logs/disk_monitor.log |
磁盘超标时1小时内仅告警1次 | 检查 ALERT_FLAG_FILE 标记文件是否生成 |
3. 每月巡检(系统优化,建议月底执行)
- 清理过期录像:根据园区录像保留政策,删除超过期限的文件(如保留30天)
find /data/park/record -name "*.mp4" -mtime +30 -delete - 检查服务器资源:使用
top/htop查看 CPU/内存占用,避免 FFmpeg 进程占用过高资源 - 更新 FFmpeg:修复已知漏洞,提升性能
sudo apt update && sudo apt upgrade ffmpeg -y - 备份配置文件:将
/data/park/scripts目录下的脚本备份至远程服务器,避免意外丢失
三、 常见故障排查指南
| 故障现象 | 可能原因 | 排查步骤 | 解决方案 |
|---|---|---|---|
| 录制脚本启动后立即退出 | 1. RTSP 地址错误 2. 摄像头离线 3. 权限不足 |
1. 查看录制日志:tail -f /data/park/logs/cam001_record.log2. 测试 RTSP 连通性: ffmpeg -i rtsp://xxx |
1. 核对摄像头账号密码和流地址 2. 检查园区网络是否可达摄像头 3. 赋予脚本执行权限 |
| 磁盘告警但未收到群消息 | 1. Webhook 地址错误 2. 服务器无外网权限 3. 钉钉关键词不匹配 |
1. 测试 Webhook:curl -I 企微/钉钉Webhook2. 查看告警日志: grep "告警已发送" /data/park/logs/disk_monitor.log |
1. 重新复制机器人 Webhook 地址 2. 配置服务器防火墙允许访问企微/钉钉API 3. 确保钉钉消息包含安全关键词 |
| 录像文件体积过大 | 1. 未启用 H.265 压缩 2. 码率设置过高 |
1. 检查压缩脚本配置 2. 查看录像编码格式: ffmpeg -i 录像文件.mp4 |
1. 确保压缩脚本使用 -c:v libx2652. 调整 -crf 参数(值越大压缩率越高) |
| AI 预处理速度慢 | 1. 服务器 CPU 性能不足 2. 未启用 -preset fast |
1. 使用 top 查看 CPU 占用2. 检查预处理脚本参数 |
1. 升级服务器 CPU 或增加核心数 2. 确保脚本中添加 -preset fast 参数 |
四、 应急响应流程(存储溢出/录制中断)
1. 存储溢出应急处理
- 紧急停止非核心进程:暂停 AI 预处理和压缩脚本,优先保证录制不中断
- 手动清理过期录像:执行
find /data/park/record -mtime +7 -delete(删除7天前的录像) - 临时降低告警阈值:修改
disk_monitor_alert.sh中ALERT_THRESHOLD=80,提前预警 - 扩容磁盘:联系运维团队扩展
/data/park所在磁盘容量
2. 全量录制中断应急处理
- 检查摄像头集群状态:确认是否为园区摄像头批量离线
- 检查网络连通性:ping 摄像头 IP,排查交换机/路由器故障
- 重启录制脚本:批量重启所有摄像头录制进程
ps -ef | grep camera_record.sh | grep -v grep | awk '{print $2}' | xargs kill -9 nohup ./camera_record_cam001.sh & nohup ./camera_record_cam002.sh & - 启用备用存储:将录像临时保存至服务器其他磁盘分区
更多推荐

所有评论(0)