Troubleshooting Playbooks
The point of a playbook is to reduce flailing. Start with the shortest checks that rule out the biggest failure classes.
Service is down
Section titled “Service is down”systemctl status <service-name>journalctl -u <service-name> -n 50 --no-pagersystemctl cat <service-name>ss -ltnp | grep <port>Check whether the process failed to start, failed after start, or is running but not listening.
Host is full
Section titled “Host is full”df -hdf -idu -sh /var/* | sort -hLook for log growth, temp file buildup, or app data growth.
Cannot connect to a service
Section titled “Cannot connect to a service”ss -ltnp | grep <port>ip addrip routedig <hostname>curl -v http://<host>:<port>Separate local process issues from DNS or path issues.
Permission denied
Section titled “Permission denied”ls -l <path>idsystemctl cat <service-name>sudo -u <user> <command>Confirm which user is failing and which path is blocked.
A good default order
Section titled “A good default order”- Confirm the symptom.
- Narrow to one service, one host, one port, or one path.
- Check status and recent logs.
- Check the exact runtime user, binary, config path, and listener.
- Change one thing at a time.
Common mistake
Section titled “Common mistake”Do not restart first and investigate second. A restart can destroy the evidence you needed.