====== LSI Controller-Check ======
Benötigt '''mpt-status'''
{{:check_mk_lsi.png?nolink&|}}
===Client-Check===
#!/bin/sh
# check_mk check f. LSI Controller
#
# 10/2010 Matthias Henze
# Lizenz: GPL v2
if which mpt-status >/dev/null ; then
echo '<<>>'
for i in $(mpt-status -p | grep Found | cut -d " " -f 3 | cut -d "=" -f 2 | cut -d "," -f 1)
do
mpt-status -i $i -n | grep phys_id
done
echo '<<>>'
for i in $(mpt-status -p | grep Found | cut -d " " -f 3 | cut -d "=" -f 2 | cut -d "," -f 1)
do
mpt-status -i $i -n | grep vol_id
done
fi
===Plugins===
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
# check_mk check f. LSI Controller
#
# 10/2010 Matthias Henze
# Lizenz: GPL v2
# Example output from agent:
# <<>>
# ioc:0 phys_id:1 scsi_id:10 vendor:ATA product_id:ST31500341AS revision:CC1H size(GB):1397 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff
# ioc:0 phys_id:0 scsi_id:1 vendor:ATA product_id:ST31500341AS revision:CC1H size(GB):1397 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff
# ioc:0 phys_id:1 scsi_id:8 vendor:ATA product_id:TOSHIBA DT01ACA2 revision:ABB0 size(GB):1863 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff
# ioc:0 phys_id:0 scsi_id:7 vendor:ATA product_id:TOSHIBA DT01ACA2 revision:ABB0 size(GB):1863 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff
# inventory
def inventory_lsi_phys(checkname, info):
inventory = []
for line in info:
x = line[1].split(":")
unit = x[1]
inventory.append( (unit, None) )
return inventory
# check
def check_lsi_phys(item, param, info):
for line in info:
x = line[1].split(":")
if x[1] == item:
offset = 0
x = line[4].split(":")
unit_type = x[1]
if len(line) > 16:
offset = len(line) - 16
for i in range(0,offset):
unit_type="%s %s" % (unit_type,line[4+i+1])
status = line[8+offset]
x = line[6+offset].split(":")
size = x[1]
sync = line[12+offset]
infotext = "%s (type: %s, size: %s GB, sync: %s)" % (status, unit_type, size, sync)
if status == "ONLINE":
return (0, "OK - unit status is " + infotext)
else:
return (2, "CRITICAL - unit status is " + infotext)
return (3, "UNKNOWN - unit %s not found in agent output" % item)
# declare the check to Check_MK
check_info['lsi_phys'] = \
(check_lsi_phys, "RAID LSI phys %s", 0, inventory_lsi_phys)
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
# check_mk check f. LSI Controller
#
# 10/2010 Matthias Henze
# Lizenz: GPL v2
# Example output from agent:
# <<>>
# ioc:0 vol_id:0 type:IM raidlevel:RAID-1 num_disks:2 size(GB):1396 state: OPTIMAL flags: ENABLED
# ioc:0 vol_id:6 type:IM raidlevel:RAID-1 num_disks:2 size(GB):1862 state: OPTIMAL flags: ENABLED
# inventory
def inventory_lsi_vols(checkname, info):
inventory = []
for line in info:
x = line[1].split(":")
unit = x[1]
inventory.append( (unit, None) )
return inventory
# check
def check_lsi_vols(item, param, info):
for line in info:
status = line[7]
x = line[3].split(":")
unit_type = x[1]
x = line[5].split(":")
size = x[1]
infotext = "%s (type: %s, size: %s GB)" % (status, unit_type, size)
if status == "OPTIMAL":
return (0, "OK - volume status is " + infotext)
else:
return (2, "CRITICAL - volume status is " + infotext)
return (3, "UNKNOWN - volume %s not found in agent output" % item)
# declare the check to Check_MK
check_info['lsi_vols'] = \
(check_lsi_vols, "RAID LSI unit %s", 0, inventory_lsi_vols)