====== Check für Linux KVM/qemu auf Basis von Proxmox ======
Die Idee dabei ist, dass das überwacht wird was WÄHREND des Inventory an VMs läuft. Kommt eine VM dazu dann wird ein "-II" nötig. Ausserdem werden Perfomancedaten für CPU-Last und Ram gesammelt.
{{:check_mk_quemu.png?nolink&|}}
=====Client-Check=====
/usr/lib/check_mk_agent/plugins/mh_qemu
#!/bin/sh
# check_mk check f. LSI Controller
#
# 10/2010 Matthias Henze
# 03/2014 MH: an Wheezy angepasst
# Lizenz: GPL v2
# sampel output
# 101 oracle stopped 1024 8.00 0
# 102 server running 3072 50.00 2634
# 103 monitoring running 2048 32.00 5139
# 104 nagios running 1024 32.00 9030
if which qm >/dev/null ; then
echo '<<>>'
qm list | grep -v VMID | while read L
do
PID=$(echo $L | awk -- '{print $6}')
if [ $PID -gt 0 ]; then
DATA=$(top -p $PID -n 1 -b | tail -n 1 | awk -- '{print $9" "$10}')
else
DATA=""
fi
echo $L" "$DATA
done
fi
Neue Version für neues TOP:
#!/bin/sh
# check_mk check f. LSI Controller
#
# 10/2010 Matthias Henze
# Lizenz: GPL v2
# sampel output
# 101 oracle stopped 1024 8.00 0
# 102 server running 3072 50.00 2634
# 103 monitoring running 2048 32.00 5139
# 104 nagios running 1024 32.00 9030
if which qm >/dev/null ; then
echo '<<>>'
qm list | grep -v VMID | while read L
do
PID=$(echo $L | awk -- '{print $6}')
if [ $PID -gt 0 ]; then
DATA=$(top -p $PID -n 1 -b | tail -n 1 | awk -- '{print $9" "$10}')
else
DATA=""
fi
echo $L" "$DATA
done
fi
=====Plugin=====
local/share/check_mk/checks/qemu
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
# check_mk check f. LSI Controlle
#
# 12/2010 Matthias Henze
# Lizenz: GPL v2
# Example output from agent:
#<<>>
# VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID CUP RAM
# 101 oracle stopped 1024 8.00 0 0 0
# 102 server running 3072 50.00 2634 0 0
# 103 monitoring running 2048 32.00 5139 0 0
# 104 nagios running 1024 32.00 9030 0 0
# inventory
def inventory_qemu(checkname, info):
inventory = []
for line in info:
if line[2] == "running": # only VM's running while inventory are monitored !
vm = line[0]
inventory.append( (vm, None) )
return inventory
# check
def check_qemu(item, param, info):
for line in info:
perfdata = []
if line[0] == item:
name = line[1]
status = line[2]
ram = line[4]
infotext = "%s (id: %s, name: %s)" % (status, item, name)
if status == "running":
perfdata.append( ( "CPU%", int(round(float(line[6]))) ) )
perfdata.append( ( "RAM%", int(round(float(line[7]))) ) )
return (0, "OK - status is " + infotext, perfdata)
else:
return (2, "CRITICAL - status is " + infotext, perfdata)
return (3, "UNKNOWN - VM %s not found in agent output" % item)
# declare the check to Check_MK
check_info['qemu'] = \
(check_qemu, "QEMU VM %s", 1, inventory_qemu)