-
Notifications
You must be signed in to change notification settings - Fork 0
/
memory_check.sh
76 lines (51 loc) · 1.72 KB
/
memory_check.sh
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
#!/bin/bash
TOTAL_MEMORY=$(free -m | grep Mem: | awk '{print $2}')
USED_MEMORY=$(free -m | grep Mem: | awk '{print $3}')
FREE_MEMORY=$(free -m | grep Mem: | awk '{print $4}')
BUFFERS_MEMORY=$(free -m | grep Mem: | awk '{print $6}')
CACHED_MEMORY=$(free -m | grep Mem: | awk '{print $7}')
#COMPUTATION
REAL_MEM_USED="$(($TOTAL_MEMORY-$FREE_MEMORY-BUFFERS_MEMORY-CACHED_MEMORY))"
MEM_PERCENTAGE="$(($REAL_MEM_USED*100/$TOTAL_MEMORY))"
details="Memory Usage: USED Memory $REAL_MEM_USED MB - TOTAL Memory $TOTAL_MEMORY MB ($MEM_PERCENTAGE%)"
function usage()
{
echo $0 " [-w <warning range between 60 to 90>] [-c <critical range between 90 to 100>] [-e <emailaddress>]"; exit 1;
}
while getopts w:c:e: code; do
case $code in
w) w="$OPTARG";;
c) c="$OPTARG";;
e) email="$OPTARG";;
*)usage;;
esac
done
shift $((OPTIND-1))
if [ -z "${w}" ] || [ -z "${c}" ] || [ -z "${email}" ] ; then usage
fi
#===================== CRITICAL STATE ====================
if [ $MEM_PERCENTAGE -ge 90 ]
then
echo "$details- CRITICAL STATUS"
#==============EMAIL====================
TO_ADDRESS="$email"
FROM_ADDRESS="Mark.Quilates"
SUBJECT="$(date +"%Y-%m-%d-%H:%M---")Memory_Check-CRITICAL"
BODY=$(ps aux --sort -rss | head -10)
echo ${BODY}| mail -s ${SUBJECT} ${TO_ADDRESS} -- -r ${FROM_ADDRESS}
exit 2
#===================== WARNING STATE ====================
elif [ $MEM_PERCENTAGE -ge 60 ] && [ $MEM_PERCENTAGE -lt 90 ]
then
echo "$details- WARNING STATUS"
#==============EMAIL====================
TO_ADDRESS="$email"
FROM_ADDRESS="Mark.Quilates"
SUBJECT="$(date +"%Y-%m-%d-%H:%M---")Memory_Check-WARNING"
BODY=$(ps aux --sort -rss | head -10)
echo ${BODY}| mail -s ${SUBJECT} ${TO_ADDRESS} -- -r ${FROM_ADDRESS}
exit 1
else
echo "$details- OK"
exit 0
fi