π§ͺ Log Analysis & System Debugging Lab
π Objective
- Read system logs like real incidents
- Identify root causes
- Debug common system failures
βοΈ Environment
- OS: Ubuntu
- Tools: journalctl, df, du, dmesg
π¨ Scenario 1: Service Crash Investigation
Step 1 - Break the service
sudo nano /etc/nginx/nginx.conf
Add invalid line:
invalid_directive;
Restart:
sudo systemctl restart nginx
Step 2 - Investigate
Check status:
systemctl status nginx


Check logs:
sudo journalctl -u nginx -n 50 --no-pager

Switch to application-level debugging:
sudo nginx -t

Step 3 - Fix conf
Remove bad line “invalid_directive”
Step 4 - Verify
sudo nginx -t
sudo systemctl restart nginx

π¨ Scenario 2: Disk Full Incident
Step 1 - Fill disk
sudo fallocate -l 16G /bigfile
Step 2 - Trigger failiure
echo "hello" > file.txt
π Expected Result: No space left on device
Step 3 - Investigate
df -h

Check system messages:
dmesg | grep -i space

Check logs (may be unreliable):
sudo systemctl -xe

Find what filled the disk:
du -sh /* 2>/dev/null

Step 4 - Fix the issue:
sudo rm /bigfile
df -h

Step 5 - Verify recovery:
echo "test" > file.txt

π§ Key Takeaways
- Disk issues often look like unrelated failures
- Logs may fail or be incomplete
- Always check disk first
- Must verify fixes, not assume