#!/bin/sh # check_kvm - Check that a virtual machine is running. # Written by Karl Rink # #---------------------------------------------------------------------- # COPYRIGHT : 12.2010 California State University, Northridge # # AUTHOR : Karl Rink # # BELONGS TO : Qemu/Kvm Nagios Integration # # DESCRIPTION : Runs "virsh list" and returns the available vms # # $Revision: 1.0 $ # # Permission to use, copy, modify, distribute, and sell this software # and its documentation for any purpose is hereby granted without fee, # provided that the above copyright notice appear in all copies and that # both that copyright notice and this permission notice appear in # supporting documentation. # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHOR OR SUSE BE LIABLE FOR ANY CLAIM, DAMAGES # OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR # THE USE OR OTHER DEALINGS IN THE SOFTWARE. #---------------------------------------------------------------------- # Install: Put this script in nagios client directory libexec/check_kvm # As a nagios nrpe plugin, add the following line to your client nrpe.cfg # command[virt_check_kvm]=/opt/nagios/libexec/check_kvm # No sudo is necessary if you simply add nagios user to the libvirt group # libvirtd:x:118:nagios PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH LIST=$(virsh list --all | sed '1,2d' | sed '/^$/d'| awk '{print $2":"$3}') if [ ! "$LIST" ]; then EXITVAL=3 #Status 3 = UNKNOWN (orange) echo "Unknown guests" exit $EXITVAL fi OK=0 WARN=0 CRIT=0 NUM=0 for host in $(echo $LIST) do name=$(echo $host | awk -F: '{print $1}') state=$(echo $host | awk -F: '{print $2}') NUM=$(expr $NUM + 1) case "$state" in running|blocked) OK=$(expr $OK + 1) ;; paused) WARN=$(expr $WARN + 1) ;; shutdown|shut*|crashed) CRIT=$(expr $CRIT + 1) ;; *) CRIT=$(expr $CRIT + 1) ;; esac done PROBLEMATICVMs=`expr $WARN + $CRIT` if [ "$PROBLEMATICVMs" -gt 5 ]; then EXITVAL=1 #Status 1 = WARNING (yellow) else EXITVAL=0 #Status 0 = OK (green) fi echo hosts:$NUM OK:$OK WARN:$WARN CRIT:$CRIT - $LIST exit $EXITVAL