-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonitoring.sh
More file actions
84 lines (72 loc) · 1.9 KB
/
monitoring.sh
File metadata and controls
84 lines (72 loc) · 1.9 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
#!/bin/bash
echo "************ Server Performance Stats ************"
echo
# Total CPU usage
echo "Total CPU Usage:"
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \
awk '{usage=100 - $1} END {print usage"%"}')
echo "CPU Usage: $CPU_USAGE"
echo
# Total memory usage
echo "Total Memory Usage:"
MEM_TOTAL=$(free -m | awk '/^Mem:/ {print $2}')
MEM_USED=$(free -m | awk '/^Mem:/ {print $3}')
MEM_FREE=$(free -m | awk '/^Mem:/ {print $4}')
MEM_PERCENT=$(awk "BEGIN {printf \"%.2f\",(${MEM_USED}/${MEM_TOTAL})*100}")
echo "Total: ${MEM_TOTAL}MB"
echo "Used: ${MEM_USED}MB"
echo "Free: ${MEM_FREE}MB"
echo "Memory Usage: ${MEM_PERCENT}%"
echo
# Total disk usage
echo "Total Disk Usage:"
DISK_TOTAL=$(df -h --total | grep 'total' | awk '{print $2}')
DISK_USED=$(df -h --total | grep 'total' | awk '{print $3}')
DISK_FREE=$(df -h --total | grep 'total' | awk '{print $4}')
DISK_PERCENT=$(df -h --total | grep 'total' | awk '{print $5}')
echo "Total: $DISK_TOTAL"
echo "Used: $DISK_USED"
echo "Free: $DISK_FREE"
echo "Disk Usage: $DISK_PERCENT"
echo
# Top 5 processes by CPU usage
echo "Top 5 Processes by CPU Usage:"
ps aux --sort=-%cpu | sed 1d | head -n 5
echo
# Top 5 processes by Memory usage
echo "Top 5 Processes by Memory Usage:"
ps aux --sort=-%mem | sed 1d | head -n 5
echo
# Stretch goals
echo "************ Additional Stats ************"
echo
# OS version
echo "Operating System Version:"
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "$NAME $VERSION"
else
uname -a
fi
echo
# Uptime
echo "System Uptime:"
uptime -p
echo
# Load average
echo "Load Average:"
uptime | awk -F'load average:' '{ print $2 }'
echo
# Logged in users
echo "Logged in Users:"
who
echo
# Failed login attempts
echo "Failed Login Attempts (Last 5):"
if [ -f /var/log/btmp ]; then
lastb | head -n 5
else
echo "No failed login attempts found or /var/log/btmp not available."
fi
echo