High Memory threshold notification script


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers High Memory threshold notification script
# 1  
Old 12-27-2019
High Memory threshold notification script

Hello Folks,
I have created the script which use to send email notification when server memory breach the threshold limits. Script works fine, but the issue is sometimes i am receiving mail alerts for lower threshold memory also.
Please let me know why and any updates required in script?

Code:
#!/bin/bash
# Shell script to monitor or watch the high Mem-load
# It will send an email to $ADMIN, if the (memroy load is in %) percentage
# of Mem-load is >= 80%
HOSTNAME=`hostname`
LOAD=80.00
CAT=/bin/cat
MAILFILE=/tmp/mailviews
MAILER=/bin/mail
mailto="skrishna1@xxx.com"
MEM_LOAD=`free -t | awk 'FNR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'`
if [[ $MEM_LOAD > $LOAD ]];
then
PROC=`ps -eo pcpu,pid -o comm= | sort -k1 -n -r | head -1`
echo "Please check your processess on ${HOSTNAME} the value of cpu load is $CPU_LOAD % & $PROC" > $MAILFILE
echo "$(ps axo %mem,pid,euser,cmd | sort -nr | head -n 10)" > $MAILFILE
$CAT $MAILFILE | $MAILER -s "Memory Utilization is High > 80%, $MEM_LOAD % on ${HOSTNAME}" $mailto
fi


Last edited by Scrutinizer; 12-27-2019 at 07:53 AM.. Reason: Please use code tags!!
# 2  
Old 12-27-2019
I am not a bash guru, but maybe try:

Code:
if [ $MEM_LOAD -gt $LOAD ]

and at the same time, get rid of the semicolon at the end of this:

Code:
if [[ $MEM_LOAD > $LOAD ]];

There are other here much more qualified than me in bash.
# 3  
Old 12-27-2019
What Linux version are you using?
Check the difference between free memory and available memory.

With older Linux versions check the -/+ buffers/cache: line.

The buffers/cache/slab memory is memory that is used to speed up things, but that is available when an application needs it.
So consider leaving that out when reporting memory usage..

--
When used with [[ .. ]] , the < and > operators sort lexicographically using the current locale. So it is a string comparison which may lead to surprising results.

For numerical comparison use either the test utility :
Code:
if [ $MEM_LOAD -gt $LOAD ]

like Neo suggested,
or use bash' s arithmetic comparison
Code:
if (( MEM_LOAD > LOAD ))

Note: like the test utility, arithmetic comparison in bash cannot handle floating point. So you need to round down / truncate the numbers used in the comparison. So for example use LOAD=80 rather than LOAD=80.00. If you need floating point you need to use an external utility like bc.

Last edited by Scrutinizer; 12-27-2019 at 10:48 AM..
# 4  
Old 12-27-2019
Servers are running with RHEL7.6 version.
# 5  
Old 12-27-2019
Then you can disregard the stuff about older Linux versions, so check the difference between "free memory" and "available memory", plus the remarks by Neo and I about numerical comparisons..
# 6  
Old 12-27-2019
There are several further mistakes in your script:
Text message in MEM_LOAD (that you cannot compare with a numeric value),
two useless code lines about PROC and CPU_LOAD,
useless use of echo,
useless use of cat,
unnecessary and unsafe use of a /tmp/ file.
These 2 Users Gave Thanks to MadeInGermany For This Post:
# 7  
Old 12-27-2019
Tried it, landing with error.
Code:
mem.sh: line 12: [[: Current Memory Utilization is : 39.67%: syntax error in expression (error token is "Memory Utilization is : 39.67%")


Last edited by Scrutinizer; 12-27-2019 at 11:21 AM.. Reason: code tags please
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

How the free memory threshold?

If I understand your question correctly, you are asking for an explanation of Solaris memory manager. You'd better ask Oracle that question because you are talking about Solaris kernel internals. The operating system kernel has no reason to kick a process's memory set out of real memory until... (4 Replies)
Discussion started by: hicksd8
4 Replies

2. Solaris

High Memory Utilization

Hello Guys, I have one Solaris server with high memory utilization >90%. As per checking, below is the output for memory usage. bash-3.00# ps -efo pmem,uid,pid,ppid,pcpu,comm | sort -r %MEM UID PID PPID %CPU COMMAND 1.7 29496 20668 1 0.0 /opt/app/iw-home/tools/java/bin/java 1.5... (1 Reply)
Discussion started by: myrpthidesis
1 Replies

3. Solaris

[DOUBT] Memory high in idle process on Solaris 10 (Memory Utilization > 90%)

Hi Experts, Our servers running Solaris 10 with SAP Application. The memory utilization always >90%, but the process on SAP is too less even nothing. Why memory utilization on solaris always looks high? I have statement about memory on solaris, is this true: Memory in solaris is used for... (4 Replies)
Discussion started by: edydsuranta
4 Replies

4. Shell Programming and Scripting

Cron job and shell script to kill a process if memory gets to high

Hello, I'd like to set a cron job that runs a shell script every 30 minutes or so to restart a java based service if the memory gets above 80%. Any advice on how to do this? Thanks in advance! - Ryan (19 Replies)
Discussion started by: prometheon123
19 Replies

5. UNIX for Dummies Questions & Answers

Threshold for swap memory

hi guys the monitoring team is using a tool for monitoring linux boxes and they set an alarm for swap memory to 10%(critical) I really has no idea when swap memory usage is high.... Can someone recommend me a threshold for this? when is warning or critical and this parameters can affect... (3 Replies)
Discussion started by: karlochacon
3 Replies

6. Solaris

zone breaching 'capped-memory' threshold

Calling upon all Solaris zone experts. I have a Sun T3-1 that is running a few whole-root zones. I've set the 'capped-memory' setting on all the zones. However, I have a problem on the one zone. Under load it uses more memory that has been allocated to it. zonecfg -z sunrep02 export ... (4 Replies)
Discussion started by: soliberus
4 Replies

7. Shell Programming and Scripting

help in high memory usage alert script

can any one please help me to shell script high memory usage alert (6 Replies)
Discussion started by: robo
6 Replies

8. HP-UX

11.31 System Memory too high

Hello, I noticed very high system memory utilization on my new 11.31 Itanium systems. System memory is more than 11GB on 32 GB system. Comparing this to 11.23 it's more than double ... How do I find out what is using it? Is there a way to reduce it? Thank you, Kubo (4 Replies)
Discussion started by: trunecm1
4 Replies

9. Solaris

How to change CPU threshold high temperature

Hi, I have a NETRA 240 server wich should work on high temperature environment (up to 50 deg celsius). After reaching ~48 deg, the system is shuting down. The HighShutDownThreshold of the CPU is set to 89 deg The PowerOffThreshold of the CPU is set to 96 deg Please help me to change these... (2 Replies)
Discussion started by: Danielz
2 Replies

10. Shell Programming and Scripting

Unix Script to find and kill a process with high memory utilization

Hi Unix Gurus i am somewhat new to unix scripting so need your help to create a script as below. # This script would find the process consuming memory beyond a certain #limit. if the meemory consumption is more than 100% for a period of 1 # minute for the specific process. the script would... (0 Replies)
Discussion started by: robinforlinux
0 Replies
Login or Register to Ask a Question