Added netgear_readynas.
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
[info]
|
||||||
|
title = Netgear ReadyNAS SNMP Checks
|
||||||
|
author = Markus Birth
|
||||||
|
description = SNMP based checks for the Netgear ReadyNAS.
|
||||||
|
version = 2016.08.23.1
|
||||||
|
version.min_required = 1.2.8p2
|
||||||
|
download_url = https://github.com/mbirth/check_mk-plugins
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# _______ __ _ ____ __
|
||||||
|
# | | \ | |___ \ / /
|
||||||
|
# | | \| | __) | / /-,_
|
||||||
|
# | | |\ |/ __/ /__ _|
|
||||||
|
# |_______|_| \__|_____| |_|
|
||||||
|
#
|
||||||
|
# @author Markus Birth <markus.birth@weltn24.de>
|
||||||
|
|
||||||
|
netgear_readynas_fan_default_levels = { "lower": (2000, 1000), "upper": (8000, 9000) }
|
||||||
|
|
||||||
|
def inventory_netgear_readynas_fan(info):
|
||||||
|
inventory = []
|
||||||
|
for fanNumber, fanRpm, fanArea in info:
|
||||||
|
inventory.append( (fanArea, "netgear_readynas_fan_default_levels") )
|
||||||
|
return inventory
|
||||||
|
|
||||||
|
def check_netgear_readynas_fan(item, params, info):
|
||||||
|
status = 0
|
||||||
|
for fanNumber, fanRpm, fanArea in info:
|
||||||
|
if fanArea != item: continue
|
||||||
|
|
||||||
|
rpm = saveint(fanRpm)
|
||||||
|
lowerwarn, lowercrit = params["lower"]
|
||||||
|
upperwarn, uppercrit = params["upper"]
|
||||||
|
|
||||||
|
rpmsym = ""
|
||||||
|
if rpm > uppercrit or rpm < lowercrit:
|
||||||
|
status = 2
|
||||||
|
rpmsym = " (!!)"
|
||||||
|
elif rpm > upperwarn or rpm < lowerwarn:
|
||||||
|
status = 1
|
||||||
|
rpmsym = " (!)"
|
||||||
|
|
||||||
|
message = "Fan %s is at %i rpm.%s" % (fanArea, rpm, rpmsym)
|
||||||
|
perfdata = [ ("rpm", rpm, upperwarn, uppercrit, 0, uppercrit) ]
|
||||||
|
|
||||||
|
return (status, message, perfdata)
|
||||||
|
|
||||||
|
return (3, "%s not found in SNMP data." % item)
|
||||||
|
|
||||||
|
check_info["netgear_readynas_fan"] = {
|
||||||
|
"check_function" : check_netgear_readynas_fan,
|
||||||
|
"inventory_function" : inventory_netgear_readynas_fan,
|
||||||
|
"group" : "hw_fans",
|
||||||
|
"service_description" : "Fan %s",
|
||||||
|
"snmp_info" : (".1.3.6.1.4.1.4526.18.4.1", [
|
||||||
|
1, # fanNumber
|
||||||
|
2, # fanRPM
|
||||||
|
3, # fanType
|
||||||
|
]),
|
||||||
|
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.4526.18.1.0"),
|
||||||
|
"has_perfdata" : True
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# _______ __ _ ____ __
|
||||||
|
# | | \ | |___ \ / /
|
||||||
|
# | | \| | __) | / /-,_
|
||||||
|
# | | |\ |/ __/ /__ _|
|
||||||
|
# |_______|_| \__|_____| |_|
|
||||||
|
#
|
||||||
|
# @author Markus Birth <markus.birth@weltn24.de>
|
||||||
|
|
||||||
|
def inventory_netgear_readynas_hdd(info):
|
||||||
|
inventory = []
|
||||||
|
for diskNumber, diskChannel, diskModel, diskState, diskTemperature in info:
|
||||||
|
inventory.append( ("HDD Status", {}) )
|
||||||
|
return inventory
|
||||||
|
|
||||||
|
def check_netgear_readynas_hdd(item, params, info):
|
||||||
|
status = 0
|
||||||
|
hddcount = 0
|
||||||
|
badcount = 0
|
||||||
|
hddlist = []
|
||||||
|
for diskNumber, diskChannel, diskModel, diskState, diskTemperature in info:
|
||||||
|
hddcount += 1
|
||||||
|
celsius = fahrenheit_to_celsius(saveint(diskTemperature))
|
||||||
|
hddlist.append(u"%s-%s. %s: %i℃ (%s)" % (diskNumber, diskChannel, diskModel, celsius, diskState))
|
||||||
|
if diskState != "ok":
|
||||||
|
status = 1
|
||||||
|
badcount += 1
|
||||||
|
|
||||||
|
if badcount > 0:
|
||||||
|
statusmsg = u"%i bad disks! (!)" % (badcount)
|
||||||
|
else:
|
||||||
|
statusmsg = u"All ok."
|
||||||
|
|
||||||
|
hddlist_str = "\\n".join(hddlist)
|
||||||
|
message = u"%i HDDs installed. %s\\n%s" % (hddcount, statusmsg, hddlist_str)
|
||||||
|
|
||||||
|
return (status, message)
|
||||||
|
|
||||||
|
check_info["netgear_readynas_hdd"] = {
|
||||||
|
"check_function" : check_netgear_readynas_hdd,
|
||||||
|
"inventory_function" : inventory_netgear_readynas_hdd,
|
||||||
|
"group" : "filesystem",
|
||||||
|
"service_description" : "%s",
|
||||||
|
"snmp_info" : (".1.3.6.1.4.1.4526.18.3.1", [
|
||||||
|
1, # diskNumber
|
||||||
|
2, # diskChannel
|
||||||
|
3, # diskModel
|
||||||
|
4, # diskState
|
||||||
|
5, # diskTemperature
|
||||||
|
]),
|
||||||
|
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.4526.18.1.0"),
|
||||||
|
"includes" : [ "temperature.include" ],
|
||||||
|
"has_perfdata" : False
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# _______ __ _ ____ __
|
||||||
|
# | | \ | |___ \ / /
|
||||||
|
# | | \| | __) | / /-,_
|
||||||
|
# | | |\ |/ __/ /__ _|
|
||||||
|
# |_______|_| \__|_____| |_|
|
||||||
|
#
|
||||||
|
# @author Markus Birth <markus.birth@weltn24.de>
|
||||||
|
|
||||||
|
def inventory_netgear_readynas_power(info):
|
||||||
|
inventory = []
|
||||||
|
for psuNumber, psuDesc, psuStatus in info:
|
||||||
|
inventory.append( (psuNumber, None) )
|
||||||
|
return inventory
|
||||||
|
|
||||||
|
def check_netgear_readynas_power(item, params, info):
|
||||||
|
status = 0
|
||||||
|
for psuNumber, psuDesc, psuStatus in info:
|
||||||
|
if psuNumber != item: continue
|
||||||
|
|
||||||
|
if psuStatus != "ok":
|
||||||
|
status = 1
|
||||||
|
|
||||||
|
message = "%s (%s)" % (psuDesc, psuStatus)
|
||||||
|
|
||||||
|
return (status, message)
|
||||||
|
|
||||||
|
return (3, "%s not found in SNMP data." % item)
|
||||||
|
|
||||||
|
check_info["netgear_readynas_power"] = {
|
||||||
|
"check_function" : check_netgear_readynas_power,
|
||||||
|
"inventory_function" : inventory_netgear_readynas_power,
|
||||||
|
"service_description" : "PSU %s",
|
||||||
|
"snmp_info" : (".1.3.6.1.4.1.4526.18.8.1", [
|
||||||
|
1, # psuNumber
|
||||||
|
2, # psuDesc
|
||||||
|
3, # psuStatus
|
||||||
|
]),
|
||||||
|
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.4526.18.1.0"),
|
||||||
|
"has_perfdata" : False
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# _______ __ _ ____ __
|
||||||
|
# | | \ | |___ \ / /
|
||||||
|
# | | \| | __) | / /-,_
|
||||||
|
# | | |\ |/ __/ /__ _|
|
||||||
|
# |_______|_| \__|_____| |_|
|
||||||
|
#
|
||||||
|
# @author Markus Birth <markus.birth@weltn24.de>
|
||||||
|
|
||||||
|
netgear_readynas_temp_default_levels = { "levels": (60, 80) }
|
||||||
|
|
||||||
|
def inventory_netgear_readynas_temp(info):
|
||||||
|
inventory = []
|
||||||
|
for tempNumber, tempFht, tempStatus in info:
|
||||||
|
inventory.append( (tempNumber, "netgear_readynas_temp_default_levels") )
|
||||||
|
return inventory
|
||||||
|
|
||||||
|
def check_netgear_readynas_temp(item, params, info):
|
||||||
|
status = 0
|
||||||
|
for tempNumber, tempFht, tempStatus in info:
|
||||||
|
if tempNumber != item: continue
|
||||||
|
|
||||||
|
fht = saveint(tempFht)
|
||||||
|
cel = fahrenheit_to_celsius(fht)
|
||||||
|
|
||||||
|
if tempStatus != "ok":
|
||||||
|
status = 1
|
||||||
|
|
||||||
|
upperwarn, uppercrit = params["levels"]
|
||||||
|
|
||||||
|
tempsym = ""
|
||||||
|
if cel > uppercrit:
|
||||||
|
status = 2
|
||||||
|
tempsym = " (!!)"
|
||||||
|
elif cel > upperwarn and status <= 1:
|
||||||
|
status = 1
|
||||||
|
tempsym = " (!)"
|
||||||
|
|
||||||
|
message = u"Temperature %s is %i℃ (%i℉). (%s)%s" % (tempNumber, cel, fht, tempStatus, tempsym)
|
||||||
|
perfdata = [ ("Temperature_C", cel, upperwarn, uppercrit, 0, uppercrit) ]
|
||||||
|
|
||||||
|
return (status, message, perfdata)
|
||||||
|
|
||||||
|
return (3, "%s not found in SNMP data." % item)
|
||||||
|
|
||||||
|
check_info["netgear_readynas_temp"] = {
|
||||||
|
"check_function" : check_netgear_readynas_temp,
|
||||||
|
"inventory_function" : inventory_netgear_readynas_temp,
|
||||||
|
"group" : "temperature",
|
||||||
|
"service_description" : "Temperature %s",
|
||||||
|
"snmp_info" : (".1.3.6.1.4.1.4526.18.5.1", [
|
||||||
|
1, # tempNumber
|
||||||
|
2, # tempFahrenheit
|
||||||
|
3, # tempStatus
|
||||||
|
]),
|
||||||
|
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.4526.18.1.0"),
|
||||||
|
"includes" : [ "temperature.include" ],
|
||||||
|
"has_perfdata" : True
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# _______ __ _ ____ __
|
||||||
|
# | | \ | |___ \ / /
|
||||||
|
# | | \| | __) | / /-,_
|
||||||
|
# | | |\ |/ __/ /__ _|
|
||||||
|
# |_______|_| \__|_____| |_|
|
||||||
|
#
|
||||||
|
# @author Markus Birth <markus.birth@weltn24.de>
|
||||||
|
|
||||||
|
def inventory_netgear_readynas_volume(info):
|
||||||
|
mplist = []
|
||||||
|
for volNumber, volName, volRaidLevel, volStatus, volSize, volFreeSpace in info:
|
||||||
|
mplist.append( volNumber )
|
||||||
|
return df_inventory(mplist)
|
||||||
|
|
||||||
|
def check_netgear_readynas_volume(item, params, info):
|
||||||
|
fslist = []
|
||||||
|
status = 0
|
||||||
|
for volNumber, volName, volRaidLevel, volStatus, volSize, volFreeSpace in info:
|
||||||
|
if volNumber != item: continue
|
||||||
|
|
||||||
|
total = saveint(volSize)
|
||||||
|
free = saveint(volFreeSpace)
|
||||||
|
fslist.append( (("vol%s" % item), total, free, 0) )
|
||||||
|
status, message, perfdata = df_check_filesystem_list(("vol%s" % item), params, fslist)
|
||||||
|
|
||||||
|
message = u"%s: %s, %s (%s)" % (volName, message, volRaidLevel, volStatus)
|
||||||
|
|
||||||
|
if volStatus != "ok":
|
||||||
|
status = max(status, 1)
|
||||||
|
message = u"%s: Volume Status %s (!), %s" % (volName, volStatus, volRaidLevel)
|
||||||
|
|
||||||
|
return (status, message, perfdata)
|
||||||
|
|
||||||
|
return (3, "%s not found in SNMP data." % item)
|
||||||
|
|
||||||
|
check_info["netgear_readynas_volume"] = {
|
||||||
|
"check_function" : check_netgear_readynas_volume,
|
||||||
|
"inventory_function" : inventory_netgear_readynas_volume,
|
||||||
|
"group" : "filesystem",
|
||||||
|
"default_levels_variable": "filesystem_default_levels",
|
||||||
|
"service_description" : "Volume %s",
|
||||||
|
"snmp_info" : (".1.3.6.1.4.1.4526.18.7.1", [
|
||||||
|
1, # volumeNumber
|
||||||
|
2, # volumeName
|
||||||
|
3, # volumeRAIDLevel
|
||||||
|
4, # volumeStatus
|
||||||
|
5, # volumeSize
|
||||||
|
6, # volumeFreeSpace
|
||||||
|
]),
|
||||||
|
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.4526.18.1.0"),
|
||||||
|
"includes" : [ "df.include" ],
|
||||||
|
"has_perfdata" : True
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user