Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

script to get cpu utilization and compare it against a value

Posted on 2009-05-05
11
Medium Priority
?
583 Views
Last Modified: 2013-12-26
Hi I need assistance in a script which main purpose would be to display the cpu utilization and if exceeds threshold it will generate a file and it will send out and email.
#!/bin/bash
 
#LOGFILE=/var/log/monitoring/cpu/util
 
#mkdir -p $LOGFILE
 
#mpstat -u > $LOGFILE/util
UTIL="mpstat -u"
 
#cat $LOGFILE/util | grep -Ev "Linux|%" > $LOGFILE/util1
UTIL1="mpstat -u|grep -Ev "Linux|%""
 
#Deleting empty lines
#sed '/^$/d' $LOGFILE/util1 >> $LOGFILE/util2
UTIL2="sed '/^$/d' $UTIL1"
 
UTIL3="cut -c 21-24 $UTIL2"
echo  $UTIL3

Open in new window

0
Comment
Question by:dpoper1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
11 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 24306554
what did you get in  $UTIL3 ?
0
 

Author Comment

by:dpoper1
ID: 24306580
cut -c 21-24 $UTIL2
./util.sh: line 22: [: too many arguments
0
 

Author Comment

by:dpoper1
ID: 24306623
Here is my code, but I still get the error provided above.

#!/bin/bash
 
LIMIT="50"
ADMINS=myemail@gmail.com
LOGFILE=/var/log/monitoring/cpu/cpuutil.log
 
#mkdir -p $LOGFILE
 
UTIL='mpstat -u'
 
UTIL1='$UTIL|grep -Ev "Linux|%"'
 
#Deleting empty lines
UTIL2='sed '/^$/d' $UTIL1'
 
UTIL3='cut -c 21-24 $UTIL2'
echo  $UTIL3
 
if [ $UTIL3 -gt $LIMIT ]
then
    echo "Current CPU Utilization: $UTIL3" >> $LOGFILE
    echo "CPU Threshold: $LIMIT" >> $LOGFILE
    mail -s "CPU Utilization on $hostname is over CPU Threshold" $ADMINS < $LOGFILE                      
#    scp $LOGFILE root@headnode:/mnt/disk01/alerts/cpu/
fi

Open in new window

0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 84

Expert Comment

by:ozo
ID: 24306805
did you mean to use ` instead of ' ?
0
 
LVL 84

Expert Comment

by:ozo
ID: 24306839
and you may have wanted
UTIL3=`mpstat -u | grep -Ev "Linux|%" | sed '/^$/d' | cut -c 21-24`
note `
 not  '

0
 

Author Comment

by:dpoper1
ID: 24306843
I have narrowed down the code, please take a look below, but I still get the following error:


./util.sh: line 13: [: 0.16: integer expression expected




#!/bin/bash
 
LIMIT="50"
ADMINS=myemail@gmail.com
LOGFILE=/var/log/monitoring/cpu            
 
mkdir -p $LOGFILE
 
UTIL1=$(mpstat -u|grep -Ev "Linux|%" | sed '/^$/d' | cut -c 21-24)
 
#echo $UTIL1
 
if [ $UTIL1 -gt $LIMIT ]
then
    echo "Current CPU Utilization: $UTIL3" >> $LOGFILE/cpuutil.log
    echo "CPU Threshold: $LIMIT" >> $LOGFILE/cpuutil.log
#    mail -s "CPU Utilization on $hostname is over CPU Threshold" $ADMINS < $LOGFILE/cpuutil.log
#    scp $LOGFILE/cpuutil.log root@headnode:/mnt/disk01/alerts/cpu/
    rm -f $LOGFILE/cpuutil.log
fi

Open in new window

0
 
LVL 84

Expert Comment

by:ozo
ID: 24306905
can we see what
echo $UTIL1
and
echo $LIMIT
show?
you may need
if [ "$UTIL1" -gt "$LIMIT" ]
0
 
LVL 84

Expert Comment

by:ozo
ID: 24306966
sorry, I see that the error now is different
you might try
if awk "BEGIN{exit $UTIL1 < $LIMIT}"
then
0
 

Author Comment

by:dpoper1
ID: 24306985
take a look at the code, I have modified the if statement to reflect integers as well as the LIMIT VALUE with 2 decimals and I still get an error

0.16
50.01
./util.sh: line 14: [: 0.16: integer expression expected



#!/bin/bash
 
LIMIT="50.01"
ADMINS=myemail@gmail.com
LOGFILE=/var/log/monitoring/cpu
 
mkdir -p $LOGFILE
 
UTIL1=$(mpstat -u|grep -Ev "Linux|%" | sed '/^$/d' | cut -c 21-24)
 
echo $UTIL1
echo $LIMIT
 
if [ "$UTIL1" -gt "$LIMIT" ]
then 
    echo "Current CPU Utilization = $UTIL3" >> $LOGFILE/cpuutil.log
    echo "CPU Threshold = $LIMIT" >> $LOGFILE/cpuutil.log
#    mail -s "CPU Utilization on $hostname is over CPU Threshold" $ADMINS < $LOGFILE/cp
uutil.log
#    scp $LOGFILE/cpuutil.log root@headnode:/mnt/disk01/alerts/cpu/
    rm -f $LOGFILE/cpuutil.log
fi

Open in new window

0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 24307195
-gt only compares integers, not values with 2 decimal places
you can use a different function for comparing, such as awk "BEGIN{exit $UTIL1 < $LIMIT}"
or, if it is always exactly 2 decimal places, you can convert it to an integer by removing the  .
0
 

Author Comment

by:dpoper1
ID: 24307226
It worked thanks a million, I have changed the LIMIT value to test out the script.

Thanks once again.

Regards,

Michael

#!/bin/bash
 
#LIMIT="50.01"
LIMIT="0.3"
ADMINS=myemail@gmail.com
LOGFILE=/var/log/monitoring/cpu
 
mkdir -p $LOGFILE
 
UTIL1=$(mpstat -u|grep -Ev "Linux|%" | sed '/^$/d' | cut -c 21-24)
 
#echo $UTIL1
#echo $LIMIT
 
#if [ "$UTIL1" -gt "$LIMIT" ]
if awk "BEGIN{exit $UTIL1 < $LIMIT}"
then 
    echo "Current CPU Utilization = $UTIL1" >> $LOGFILE/cpuutil.log
    echo "CPU Threshold = $LIMIT" >> $LOGFILE/cpuutil.log
    mail -s "CPU Utilization on $hostname is over CPU Threshold" $ADMINS < $LOGFILE/cpu
util.log
#    scp $LOGFILE/cpuutil.log root@headnode:/mnt/disk01/alerts/cpu/
    rm -f $LOGFILE/cpuutil.log
fi

Open in new window

0

Featured Post

Learn Veeam advantages over legacy backup

Every day, more and more legacy backup customers switch to Veeam. Technologies designed for the client-server era cannot restore any IT service running in the hybrid cloud within seconds. Learn top Veeam advantages over legacy backup and get Veeam for the price of your renewal

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Background Still having to process all these year-end "csv" files received from all these sources (including Government entities), sometimes we have the need to examine the contents due to data error, etc... As a "Unix" shop, our only readily …
Recently, an awarded photographer, Selina De Maeyer (http://www.selinademaeyer.com/), completed a photo shoot of a beautiful event (http://www.sintjacobantwerpen.be/verslag-en-fotoreportage-van-de-sacramentsprocessie-door-antwerpen#thumbnails) in An…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial
Suggested Courses

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question