运行时依赖
安装命令
点击复制技能文档
服务器监控守护进程(Server Watchdog) 通过 SSH 监控和自动修复远程服务器。检查服务、数据库、磁盘、内存 — 重启故障服务,报警异常情况。
前置条件 目标服务器具有 SSH 访问权限(密码或密钥认证) expect 命令可用(用于密码认证的 SSH) 目标服务器运行 PM2、systemd 或 Docker 进行服务管理
快速参考 检查 PM2 服务 ssh 用户@主机 "pm2 list" ssh 用户@主机 "pm2 logs --lines 20 --nostream" 检查 MongoDB # Windows ssh 用户@主机 "net start | findstr MongoDB" ssh 用户@主机 "powershell -Command \"(Test-NetConnection -ComputerName 127.0.0.1 -Port 27017).TcpTestSucceeded\"" # Linux ssh 用户@主机 "systemctl status mongod" ssh 用户@主机 "mongosh --eval 'db.runCommand({ping:1})' --quiet" 检查磁盘和内存 # Linux ssh 用户@主机 "df -h && free -h" # Windows ssh 用户@主机 "powershell -Command \"Get-PSDrive -PSProvider FileSystem | Select Root,Used,Free; \$os=Get-CimInstance Win32_OperatingSystem; Write-Output ('RAM: '+[math]::Round((\$os.TotalVisibleMemorySize-\$os.FreePhysicalMemory)/1MB,1)+'GB / '+[math]::Round(\$os.TotalVisibleMemorySize/1MB,1)+'GB')\""
工作流程 诊断 — 通过 SSH 登录,检查服务状态、日志、磁盘、内存 识别 — 解析日志以查找错误、崩溃、OOM 或不干净的关闭 修复 — 重启故障服务(pm2 restart、net start、systemctl restart) 验证 — 确认服务已恢复并响应 报警 — 通过消息通知用户并附上摘要
崩溃分析 当服务故障时,按以下顺序检查: 服务日志 — pm2 logs、journalctl -u service、Windows 事件日志 应用程序日志 — 检查配置路径下的日志文件 系统事件 — OOM 杀手、意外关闭、磁盘满 数据库日志 — MongoDB:检查 mongod.log 中的 Fatal ("s":"F") 条目 MongoDB 崩溃模式 "s":"F" — 致命错误(崩溃) "Unhandled exception" — 内部 bug(通常与 FTDC 相关) "Detected unclean shutdown" — 进程在未正常关闭的情况下被杀死 "WiredTiger error" — 存储引擎损坏
自动修复配方 PM2 服务重启 pm2 restart <服务名称> pm2 save # 持久化重启 MongoDB(Windows) net stop MongoDB timeout /t 5 net start MongoDB MongoDB(Linux) sudo systemctl restart mongod
部署监控守护进程 为了实现持续监控,部署包含的监控脚本: 将 scripts/mongodb-watchdog.js 复制到目标服务器 安装:npm init -y && npm install mongodb 启动:pm2 start mongodb-watchdog.js --name mongodb-watchdog 保存:pm2 save
使用密码的 SSH(通过 expect) 当密钥认证不可用时: expect -c 'set timeout 20 spawn ssh -o StrictHostKeyChecking=no 用户@主机 "COMMAND" expect { "password:" { send "PASSWORD\r"; exp_continue } eof } '
报警模板 🚨 服务器报警 — [主机名] ⏰ 时间:[时间戳] ❌ 问题:[服务] 已故障 📋 原因:[崩溃原因从日志中获取] 🔄 操作:自动重启 [服务] ✅ 状态:[服务] 已恢复在线 📊 系统健康状况: • 内存:X GB / Y GB • 磁盘:Z% 已使用 • 服务:N/N 在线