-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonitor.sh
More file actions
executable file
·137 lines (101 loc) · 3.21 KB
/
monitor.sh
File metadata and controls
executable file
·137 lines (101 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
mkdir -p logs
USER=$(whoami)
HOST=$(hostname)
DATE=$(date "+%Y-%m-%d_%H-%M-%S")
LOG="logs/report_$DATE.txt"
echo "===== System Monitoring Report =====" > $LOG
echo "Generated by: $USER@$HOST on $(date)" >> $LOG
echo "" >> $LOG
# CPU PERFORMANCE
echo ">> CPU Performance (mpstat):" >> $LOG
mpstat 1 3 >> $LOG
echo "" >> $LOG
# CPU TEMPERATURE
# echo ">> CPU Temperature (sensors):"
# if command -v sensors &> /dev/null; then
# sensors 2>/dev/null || echo " [CPU temperature data not available in this environment]"
# else
# echo " [sensors command not found]"
# fi
# GPU UTILIZATION AND HEALTH
echo ">> GPU Info (nvidia-smi):" >> $LOG
if command -v nvidia-smi &> /dev/null
then
nvidia-smi >> $LOG
else
echo "No NVIDIA GPU detected or 'nvidia-smi' not available." >> $LOG
fi
echo "" >> $LOG
# DISK USAGE
echo ">> Disk Usage (df -h):" >> $LOG
df -h >> $LOG
echo "" >> $LOG
# DISK SMART STATUS
echo ">> Disk SMART Status (smartctl):" >> $LOG
if command -v smartctl &> /dev/null
then
sudo smartctl -H /dev/sda >> $LOG 2>> $LOG || echo "SMART data not available (may be running under WSL or no disk access)" >> $LOG
else
echo "Command 'smartctl' not found." >> $LOG
fi
echo "" >> $LOG
# MEMORY CONSUMPTION
echo ">> Memory Consumption (free -h):" >> $LOG
free -h >> $LOG
echo "" >> $LOG
# NETWORK INTERFACE STATISTICS
echo ">> Network Interfaces (ip -s link):" >> $LOG
ip -s link >> $LOG
echo "" >> $LOG
echo ">> Active Network Interfaces:" >> $LOG
ip addr show up | grep -E "^[0-9]+:|inet " >> $LOG
echo "" >> $LOG
# ALERT SYSTEM
echo ">> ALERTS:" >> $LOG
# CPU Alert
CPU_IDLE=$(mpstat 1 1 | awk '/Average/ && $12 ~ /[0-9.]+/ { print $12 }')
CPU_USAGE=$(echo "100 - $CPU_IDLE" | bc)
if (( $(echo "$CPU_USAGE > 80" | bc -l) )); then
echo "⚠️ High CPU Usage: $CPU_USAGE%" >> $LOG
else
echo "✅ CPU Usage Normal: $CPU_USAGE%" >> $LOG
fi
# RAM Alert
USED_MEM=$(free | awk '/Mem:/ { print $3 }')
TOTAL_MEM=$(free | awk '/Mem:/ { print $2 }')
RAM_PERCENT=$(echo "$USED_MEM / $TOTAL_MEM * 100" | bc -l)
if (( $(echo "$RAM_PERCENT > 90" | bc -l) )); then
echo "⚠️ High RAM Usage: ${RAM_PERCENT}%" >> $LOG
else
echo "✅ RAM Usage Normal: ${RAM_PERCENT}%" >> $LOG
fi
echo "" >> $LOG
disk_usage=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
if (( disk_usage > 90 )); then
echo "⚠️ ALERT: High Disk Usage: ${disk_usage}%"
fi
if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
temp_raw=$(cat /sys/class/thermal/thermal_zone0/temp)
temp_c=$(echo "scale=1; $temp_raw / 1000" | bc)
echo ">> CPU Temperature (thermal_zone0): $temp_c °C"
if (( $(echo "$temp_c > 70" | bc -l) )); then
echo "🔥 ALERT: CPU Temperature is high: ${temp_c}°C"
fi
else
echo "⚠️ Temperature info not available on this system."
fi
INFLUX_URL="http://localhost:8086/write?db=system_monitoring"
DATA="USED_MEM value=$USED_MEM"
curl -i -X POST "$INFLUX_URL" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-binary "$DATA"
# -------------------------------
# SYSTEM LOAD METRICS
# -------------------------------
echo ">> System Load (uptime):" >> $LOG
uptime >> $LOG
echo "" >> $LOG
echo ">> Load Averages (/proc/loadavg):" >> $LOG
cat /proc/loadavg >> $LOG
echo "" >> $LOG