41 lines
1000 B
Bash
Executable File
41 lines
1000 B
Bash
Executable File
#!/bin/bash
|
|
# System Health Diagnostic Script
|
|
# Part of the troupe stack - reports key system metrics
|
|
|
|
echo "=== System Health Report ==="
|
|
echo "Timestamp: $(date -Iseconds)"
|
|
echo ""
|
|
|
|
# CPU Load
|
|
echo "CPU Load Average:"
|
|
cat /proc/loadavg | awk '{print " 1-min: " $1 ", 5-min: " $2 ", 15-min: " $3}'
|
|
echo " Cores: $(nproc)"
|
|
echo ""
|
|
|
|
# Memory Usage
|
|
echo "Memory Usage (MB):"
|
|
free -m | awk 'NR==2{printf " Used: %d / Total: %d / Available: %d\n", $3, $2, $7}'
|
|
echo ""
|
|
|
|
# Disk Usage
|
|
echo "Disk Usage (%):"
|
|
df -h / | awk 'NR==2{print " Used: " $5 " of " $2 " (Available: " $4 ")"}'
|
|
echo ""
|
|
|
|
# Uptime
|
|
echo "System Uptime:"
|
|
uptime | awk -F'up ' '{print " " $3}' | sed 's/,.*//'
|
|
echo ""
|
|
|
|
# Health Status
|
|
used_pct=$(df / | awk 'NR==2{print $5}' | tr -d '%')
|
|
if [ "$used_pct" -lt 80 ]; then
|
|
echo "STATUS: HEALTHY"
|
|
exit 0
|
|
elif [ "$used_pct" -lt 90 ]; then
|
|
echo "STATUS: WARNING - Disk usage at ${used_pct}%"
|
|
exit 1
|
|
else
|
|
echo "STATUS: CRITICAL - Disk usage at ${used_pct}%"
|
|
exit 2
|
|
fi |