Monitor remote servers via SSH — check service health (PM2, systemd, Docker), database status (MongoDB, MySQL, PostgreSQL), disk space, memory, and auto-restart crashed services. Sends alerts via messaging. Use when asked to check server status, monitor services, restart crashed processes, or set up server health checks.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add Lord1Egypt/awesome-skill-forge --skill ssh-server-watchdog --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ssh Server Watchdog?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lord1egypt-ssh-server-watchdog)More formats (shields.io, HTML) on the badges page.
---
name: server-watchdog
description: Monitor remote servers via SSH — check service health (PM2, systemd, Docker), database status (MongoDB, MySQL, PostgreSQL), disk space, memory, and auto-restart crashed services. Sends alerts via messaging. Use when asked to check server status, monitor services, restart crashed processes, or set up server health checks.
---
# Server Watchdog
Monitor and auto-heal remote servers via SSH. Check services, databases, disk, memory — restart what's down, alert what's wrong.
## Prerequisites
- SSH access to target server (password or key-based)
- `expect` available locally (for password-based SSH)
- Target server runs PM2, systemd, or Docker for service management
## Quick Reference
### Check PM2 services
```bash
ssh user@host "pm2 list"
ssh user@host "pm2 logs --lines 20 --nostream"
```
### Check MongoDB
```bash
# Windows
ssh user@host "net start | findstr MongoDB"
ssh user@host "powershell -Command \"(Test-NetConnection -ComputerName 127.0.0.1 -Port 27017).TcpTestSucceeded\""
# Linux
ssh user@host "systemctl status mongod"
ssh user@host "mongosh --eval 'db.runCommand({ping:1})' --quiet"
```
### Check disk & memory
```bash
# Linux
ssh user@host "df -h && free -h"
# Windows
ssh user@host "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')\""
```
## Workflow
1. **Diagnose** — SSH in, check service status, logs, disk, memory
2. **Identify** — Parse logs for errors, crashes, OOM, or unclean shutdowns
3. **Fix** — Restart crashed services (`pm2 restart`, `net start`, `systemctl restart`)
4. **Verify** — Confirm service is back up and responding
5. **Alert** — Notify user via messaging with summary
## Crash Analysis
When a service is down, check these in order:
1. **Service logs** — `pm2 logs`, `journalctl -u service`, Windows Event Log
2. **Application logs** — Check log files at configured paths
3. **System events** — OOM killer, unexpected shutdowns, disk full
4. **Database logs** — MongoDB: check `mongod.log` for Fatal (`"s":"F"`) entries
### MongoDB crash patterns
```
"s":"F" — Fatal error (crash)
"Unhandled exception" — Internal bug (often FTDC related)
"Detected unclean shutdown" — Process killed without graceful shutdown
"WiredTiger error" — Storage engine corruption
```
## Auto-Heal Recipes
### PM2 service restart
```bash
pm2 restart <service-name>
pm2 save # persist across reboots
```
### MongoDB (Windows)
```bash
net stop MongoDB
timeout /t 5
net start MongoDB
```
### MongoDB (Linux)
```bash
sudo systemctl restart mongod
```
### Deploy watchdog service
For persistent monitoring, deploy the included watchdog script:
1. Copy `scripts/mongodb-watchdog.js` to target server
2. Install: `npm init -y && npm install mongodb`
3. Start: `pm2 start mongodb-watchdog.js --name mongodb-watchdog`
4. Save: `pm2 save`
## SSH with password (via expect)
When key-based auth isn't available:
```bash
expect -c 'set timeout 20
spawn ssh -o StrictHostKeyChecking=no user@host "COMMAND"
expect {
"password:" { send "PASSWORD\r"; exp_continue }
eof
}
'
```
## Alert Template
```
🚨 Server Alert — [hostname]
⏰ Time: [timestamp]
❌ Issue: [service] is DOWN
📋 Cause: [crash reason from logs]
🔄 Action: Auto-restarted [service]
✅ Status: [service] is back online
📊 System Health:
• Memory: X GB / Y GB
• Disk: Z% used
• Services: N/N online
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!