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