Module: check_mk
Branch: master
Commit: c005d17d9023c4c1f8afe0ccff9349221cc9e1a2
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c005d17d9023c4…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Nov 24 16:34:17 2010 +0100
Added simple pnp template for printer_supply check - thanks to Oliver Borgmann
---
ChangeLog | 1 +
pnp-templates/check_mk-printer_supply.php | 50 +++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 21f029b..a432d35 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -84,6 +84,7 @@
* printer_supply: In case of OKI c5900 devices the name of the supply units ins not
unique. The color of the supply unit is reported in a dedicated OID and added to the
check item name to have a unique name now.
+ * prnter_supply: Added simple pnp template to have better graph formating for the check results
Multisite:
* The custom open/close states of custom links are now stored for each
diff --git a/pnp-templates/check_mk-printer_supply.php b/pnp-templates/check_mk-printer_supply.php
new file mode 100644
index 0000000..d08cb49
--- /dev/null
+++ b/pnp-templates/check_mk-printer_supply.php
@@ -0,0 +1,50 @@
+<?php
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+# Template contributed by Oliver Borgmann, Copyright 2010
+
+$CRITPERC = $CRIT[1]*100/$MAX[1];
+$WARNPERC = $WARN[1]*100/$MAX[1];
+
+$opt[1] = "--vertical-label \"Percent left\" -l -20 -u 100 --title \"$hostname / $servicedesc \" ";
+
+if(preg_match('/black/i', $servicedesc))
+ $color = '000000';
+elseif(preg_match('/magenta/i', $servicedesc))
+ $color = 'fc00ff';
+elseif(preg_match('/yellow/i', $servicedesc))
+ $color = 'ff0000';
+elseif(preg_match('/cyan/i', $servicedesc))
+ $color = '00ffff';
+else
+ $color = 'cccccc';
+
+$def[1] = "DEF:var1=$RRDFILE[1]:$DS[1]:MAX ";
+$def[1] .= "CDEF:perc1=var1,100,* ";
+$def[1] .= "CDEF:perc=perc1,$MAX[1],/ ";
+$def[1] .= "HRULE:$CRITPERC#ff0000:\"Crit\: $CRITPERC%\" ";
+$def[1] .= "HRULE:$WARNPERC#ffff00:\"Warn\: $WARNPERC%\" ";
+$def[1] .= "AREA:perc#$color:\"Percent\:\" ";
+$def[1] .= "GPRINT:perc:MAX:\"%2.0lf%%\\n\" ";
+?>
Module: check_mk
Branch: master
Commit: 8c43bacf1c7c90c63143c41b5f2a52beff867b30
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8c43bacf1c7c90…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Nov 23 20:48:21 2010 +0100
printer_supply: In case of OKI c5900 devices the name of the supply
units ins not unique. The color of the supply unit is reported in a dedicated
OID and added to the check item name to have a unique name now.
---
ChangeLog | 3 +++
checkman/printer_supply | 9 ++++-----
checks/printer_supply | 43 ++++++++++++++++++++++++++++++++++++++++---
3 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4d9241e..009e682 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -81,6 +81,9 @@
* Cleaned up several checks to meet the variable naming conventions
* drbd: Handling unconfigured drbd devices correctly. These devices are
ignored during nventory
+ * printer_supply: In case of OKI c5900 devices the name of the supply units ins not
+ unique. The color of the supply unit is reported in a dedicated OID and added to the
+ check item name to have a unique name now.
Multisite:
* The custom open/close states of custom links are now stored for each
diff --git a/checkman/printer_supply b/checkman/printer_supply
index 2977f6c..7f3118b 100644
--- a/checkman/printer_supply
+++ b/checkman/printer_supply
@@ -13,11 +13,10 @@ description:
how much is remaining in a supply, so the printer says "some remaining".
This value produces a warning.
- Please note, that some manufactures do not have unique names for
- their supply units in the MIB. They for example name all for toner
- units {Toner Cartridge OKI DATA CORP}. In that case, only the first
- unit will be checked (which does not make much sense). A future version
- of the check might handle that problem - the current one not.
+ In case of OKI c5900 devices the name of the supply units ins not unique.
+ One example is {Toner Cartridge OKI DATA CORP}. In this case the color of
+ the supply unit is added to the beginning of the name to get a unique
+ item name.
perfdata:
The remaining filling level in units (pages remaining).
diff --git a/checks/printer_supply b/checks/printer_supply
index 5fc0f35..2c9d742 100644
--- a/checks/printer_supply
+++ b/checks/printer_supply
@@ -30,13 +30,47 @@
# | Peter Lauk <lauk(a)stuttgart-airport.com> Copyright 2010 |
# +------------------------------------------------------------------+
+# In some cases the name of the part is not uniq. e.g. for c5900
+# devices. In this cases add the color from the dedicated OID to
+# the item name.
+#
+# Example output for this case:
+#
+#['Toner Cartridge OKI DATA CORP', '100', '30', 'black']
+#['Toner Cartridge OKI DATA CORP', '100', '10', 'cyan']
+#['Toner Cartridge OKI DATA CORP', '100', '10', 'magenta']
+#['Toner Cartridge OKI DATA CORP', '100', '40', 'yellow']
+#['Image Drum Unit OKI DATA CORP', '20000', '-409', '']
+#['Image Drum Unit OKI DATA CORP', '20000', '7969', '']
+#['Image Drum Unit OKI DATA CORP', '20000', '11597', '']
+#['Image Drum Unit OKI DATA CORP', '20000', '4621', '']
+#['Belt Unit OKI DATA CORP', '60000', '47371', '']
+#['Fuser Unit OKI DATA CORP', '60000', '26174', '']
+#['Waste Toner box OKI DATA CORP', '1', '-2', '']
+
printer_supply_default_levels = (20, 10)
+# Workaround for toners and drum units in c5900 devices
+# which have equal names for the single parts.
+# Add the color description to that item
+def printer_supply_fix_infos(info):
+ colors = []
+ for index, line in enumerate(info):
+ if line[0].startswith('Toner Cartridge') \
+ or line[0].startswith('Image Drum Unit'):
+ if line[3]:
+ colors += [ line[3] ]
+ color = line[3]
+ elif line[3] == '':
+ color = colors[index - len(colors)]
+ info[index][0] = '%s %s' % (color.title(), line[0])
+ return info
+
def inventory_printer_supply(checkname, info):
- return [ (line[0], "printer_supply_default_levels") for line in info ]
+ return [ (line[0], "printer_supply_default_levels") for line in printer_supply_fix_infos(info) ]
def check_printer_supply(item, params, info):
- for line in info:
+ for line in printer_supply_fix_infos(info):
if line[0] == item:
maxlevel = float(line[1])
current = float(line[2])
@@ -61,7 +95,10 @@ def check_printer_supply(item, params, info):
check_info['printer_supply'] = (check_printer_supply, "Supply %s", 1, inventory_printer_supply)
-snmp_info['printer_supply'] = ( ".1.3.6.1.2.1.43.11.1.1", [ 6, 8, 9 ] )
+snmp_info['printer_supply'] = ( ".1.3.6.1.2.1.43", [ '11.1.1.6',
+ '11.1.1.8',
+ '11.1.1.9',
+ '12.1.1.4' ] )
snmp_scan_functions['printer_supply'] = \
lambda oid: not not oid(".1.3.6.1.2.1.43.11.1.1.6.1.1")
Module: check_mk
Branch: master
Commit: 4f9a0e78176356880fce646cc64a0ccf5a128f2f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=4f9a0e78176356…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Nov 18 18:35:00 2010 +0100
drbd checks handle unconfigured devices correctly now
---
ChangeLog | 2 ++
checkman/drbd | 3 ++-
checkman/drbd.disk | 3 ++-
checkman/drbd.net | 3 ++-
checkman/drbd.stats | 3 ++-
checks/drbd | 22 +++++++++++++++++-----
6 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 39d657f..3ca81d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -76,6 +76,8 @@
* j4p_performance.mem: added new experimental check for memory usage via JMX.
* if/if64: added Perf-O-Meter for Multisite
* Cleaned up several checks to meet the variable naming conventions
+ * drbd: Handling unconfigured drbd devices correctly. These devices are
+ ignored during nventory
Multisite:
* The custom open/close states of custom links are now stored for each
diff --git a/checkman/drbd b/checkman/drbd
index d907d00..b6fbf10 100644
--- a/checkman/drbd
+++ b/checkman/drbd
@@ -24,7 +24,8 @@ examples:
]
inventory:
- Each DRBD device will result in one service during inventory.
+ Each configured DRBD device will result in one service during inventory. All
+ devices with the connection state "Unconfigured" are skipped.
[parameters]
roles (list): The expected role of each node
diff --git a/checkman/drbd.disk b/checkman/drbd.disk
index 840849a..b80eecc 100644
--- a/checkman/drbd.disk
+++ b/checkman/drbd.disk
@@ -13,7 +13,8 @@ item:
The name of the DRBD device e.g. drbd0
inventory:
- Each DRBD device will result in one service during inventory.
+ Each configured DRBD device will result in one service during inventory. All
+ devices with the connection state "Unconfigured" are skipped.
perfdata:
It contains the current read and write disk I/O given as kb/s
diff --git a/checkman/drbd.netb/checkman/drbd.net
index 29ae710..04482f0 100644
--- a/checkman/drbd.net
+++ b/checkman/drbd.net
@@ -14,7 +14,8 @@ item:
The name of the DRBD device e.g. drbd0
inventory:
- Each DRBD device will result in one service during inventory.
+ Each configured DRBD device will result in one service during inventory. All
+ devices with the connection state "Unconfigured" are skipped.
perfdata:
It contains the current inbound and outbound network load given as kb/s
diff --git a/checkman/drbd.stats b/checkman/drbd.stats
index 0049a03..5c0b5c4 100644
--- a/checkman/drbd.stats
+++ b/checkman/drbd.stats
@@ -19,7 +19,8 @@ item:
The name of the DRBD device e.g. drbd0
inventory:
- Each DRBD device will result in one service during inventory.
+ Each configured DRBD device will result in one service during inventory. All
+ devices with the connection state "Unconfigured" are skipped.
perfdata:
One dataset is appended for each of the counters above.
diff --git a/checks/drbd b/checks/drbd
index f415dbf..c9af72e 100644
--- a/checks/drbd
+++ b/checks/drbd
@@ -146,9 +146,9 @@ drbd_stats_default_levels = ( None, None, None, None, None, None, None, None,
drbd_block_start_match = re.compile('^[0-9]+:')
drbd_general_map = [ 'cs', 'ro', 'ds' ]
-drbd_net_map = [ 'ns', 'nr' ]
-drbd_disk_map = [ 'dw', 'dr' ]
-drbd_stats_map = [ 'al', 'bm', 'lo', 'pe', 'ua', 'ap', 'ep', 'wo', 'oos' ]
+drbd_net_map = [ 'cs', 'ns', 'nr' ]
+drbd_disk_map = [ 'cs', 'dw', 'dr' ]
+drbd_stats_map = [ 'cs', 'al', 'bm', 'lo', 'pe', 'ua', 'ap', 'ep', 'wo', 'oos' ]
drbd_cs_map = {
'StandAlone': 1, 'Disconnecting': 1,
@@ -169,7 +169,11 @@ def inventory_drbd(checktype, info):
for line in info[2:]:
if drbd_block_start_match.search(line[0]) > 0:
parsed = drbd_parse_block(drbd_extract_block('drbd%s' % line[0][:-1], info), checktype)
- if checktype == 'drbd':
+ # Skip unconfigured drbd devices
+ if parsed['cs'] == 'Unconfigured':
+ continue
+
+ if checktye == 'drbd':
levels = '( [ "%s", "%s" ], [ "%s", "%s" ] )' % \
(parsed['ro'][0], parsed['ro'][1],
parsed['ds'][0], parsed['ds'][1])
@@ -235,7 +239,9 @@ def drbd_get_block(item, info, checktype):
def check_drbd_general(item, params, info):
parsed = drbd_get_block(item, info, 'drbd')
if not parsed is None:
- if not parsed['cs'] in drbd_cs_map:
+ if parsed['cs'] == 'Unconfigured':
+ return (2, 'CRITICAL - The device is "Unconfigured"')
+ elif not parsed['cs'] in drbd_cs_map:
return (3, 'UNKNOWN - Undefined "connection state" in drbd output')
# Weight of connection state is calculated by the drbd_cs_map.
@@ -274,6 +280,8 @@ def drbd_get_counters(list):
def check_drbd_net(item, params, info):
parsed = drbd_get_block(item, info, 'drbd.net')
if not parsed is None:
+ if parsed['cs'] == 'Unconfigured':
+ return (2, 'CRITICAL - The device is "Unconfigured"')
output, perfdata = drbd_get_counters([ ('drbd.net', 'in', item, int(parsed['nr']), 'kb'),
('drbd.net', 'out', item, int(parsed['ns']), 'kb') ])
# FIXME: Maybe handle thresholds in the future
@@ -284,6 +292,8 @@ def check_drbd_net(item, params, info):
def check_drbd_disk(item, params, info):
parsed = drbd_get_block(item, info, 'drbd.disk')
if not parsed is None:
+ if parsed['cs'] == 'Unconfigured':
+ return (2, 'CRITICAL - The device is "Unconfigured"')
output, perfdata = drbd_get_counters([ ('drbd.disk', 'write', item, int(parsed['dw']), 'kb'),
('drbd.disk', 'read', item, int(parsed['dr']), 'kb') ])
# FIXME: Maybe handle thresholds in the future
@@ -294,6 +304,8 @@ def check_drbd_disk(item, params, info):
def check_drbd_stats(item, params, info):
parsed = drbd_get_block(item, info, 'drbd.stats')
if not parsed is None:
+ if parsed['cs'] == 'Unconfigured':
+ return (2, 'CRITICAL - The device is "Unconfigured"')
output = ''
perfdata = []
for key, label in [ ('al', 'activity log updates'), ('bm', 'bit map updates'),