Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
check_virsh
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
Script to check KVM's hosts
Reviews (2)
byjlevy, August 10, 2018
#!/bin/bash
# Versao 1.2
# Criador: Aline Carvalho
# Criacao: 14/10/2009
# LastCHanges: 10/08/2018
# By Jeremy Levy
# |_ English Tradution. Corrige no exact name
#
# Objective: Verify that virtual server is online or offline
## Variables
VIRSH=`which virsh`
function check_srv {
HOST=$1
# Check if sudo command is installed
which sudo > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "ERRO: sudo not installing"
exit 3
fi
#sudo $VIRSH list | grep $HOST > /dev/null
RESULT=`sudo $VIRSH list | grep $HOST | cut -d" " -f7`
for FOO in $RESULT
do
#if [ $? != "0" ]
if [ "$FOO" != "$HOST" ]
then
echo "CRITICAL: Virtual Machine $HOST is down, or not exist!!!"
exit 2
else
STATE=`sudo $VIRSH list | grep $HOST | awk '{ print $3 }'`
if [ $STATE == "paused" ]
then
echo "WARNING: $HOST is in paused states."
exit 1
elif [ $STATE == "blocked" ]
then
echo "WARNING: $HOST is in blocked states."
exit 1
elif [ $STATE == "shutdown" ]
then
echo "WARNING: $HOST is in shutdown states."
exit 1
elif [ $STATE == "crashed" ]
then
echo "WARNING: $HOST is in crashed states."
exit 1
elif [ $STATE == "dying" ]
then
echo "WARNING: $HOST is in dying states."
exit 1
else
echo "OK: Virtual Machine $HOST is UP"
exit 0
fi
fi
done
}
function print_usage {
echo ""
echo ""
echo " Usage: $0 srv HOST "
echo ""
echo " Important: "
echo " First of all you need to configure sudo in /etc/sudores:"
echo " nagios ALL=(ALL) NOPASSWD:/usr/bin/virsh list"
echo " and comment the line # Defaults requiretty"
echo ""
}
## Checks if the user has typed the command with the correct parameters
case $1 in
srv)
HOST=$2
if [ -z $2 ]
then
echo ""
echo "You need to specify the virtual machine"
echo " ex: $0 $1 HOST"
echo ""
exit 3
fi
check_srv $HOST
;;
*)
print_usage
;;
esac
# Versao 1.2
# Criador: Aline Carvalho
# Criacao: 14/10/2009
# LastCHanges: 10/08/2018
# By Jeremy Levy
# |_ English Tradution. Corrige no exact name
#
# Objective: Verify that virtual server is online or offline
## Variables
VIRSH=`which virsh`
function check_srv {
HOST=$1
# Check if sudo command is installed
which sudo > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "ERRO: sudo not installing"
exit 3
fi
#sudo $VIRSH list | grep $HOST > /dev/null
RESULT=`sudo $VIRSH list | grep $HOST | cut -d" " -f7`
for FOO in $RESULT
do
#if [ $? != "0" ]
if [ "$FOO" != "$HOST" ]
then
echo "CRITICAL: Virtual Machine $HOST is down, or not exist!!!"
exit 2
else
STATE=`sudo $VIRSH list | grep $HOST | awk '{ print $3 }'`
if [ $STATE == "paused" ]
then
echo "WARNING: $HOST is in paused states."
exit 1
elif [ $STATE == "blocked" ]
then
echo "WARNING: $HOST is in blocked states."
exit 1
elif [ $STATE == "shutdown" ]
then
echo "WARNING: $HOST is in shutdown states."
exit 1
elif [ $STATE == "crashed" ]
then
echo "WARNING: $HOST is in crashed states."
exit 1
elif [ $STATE == "dying" ]
then
echo "WARNING: $HOST is in dying states."
exit 1
else
echo "OK: Virtual Machine $HOST is UP"
exit 0
fi
fi
done
}
function print_usage {
echo ""
echo ""
echo " Usage: $0 srv HOST "
echo ""
echo " Important: "
echo " First of all you need to configure sudo in /etc/sudores:"
echo " nagios ALL=(ALL) NOPASSWD:/usr/bin/virsh list"
echo " and comment the line # Defaults requiretty"
echo ""
}
## Checks if the user has typed the command with the correct parameters
case $1 in
srv)
HOST=$2
if [ -z $2 ]
then
echo ""
echo "You need to specify the virtual machine"
echo " ex: $0 $1 HOST"
echo ""
exit 3
fi
check_srv $HOST
;;
*)
print_usage
;;
esac
After converting it to english and to the right text format by making a new file and copy and pasting code into it, it worked.
past this into /etc/sudoers:
nagios ALL=(ALL) NOPASSWD:/usr/bin/virsh list
and uncomment the line:
Defaults requiretty
to run command, type:
./check_virsh srv "virtual machine name"
example: ./check_virsh srv server1.example.com
past this into /etc/sudoers:
nagios ALL=(ALL) NOPASSWD:/usr/bin/virsh list
and uncomment the line:
Defaults requiretty
to run command, type:
./check_virsh srv "virtual machine name"
example: ./check_virsh srv server1.example.com