Module: check_mk
Branch: master
Commit: f8a14874e1822ede87a5a8d75d041b980c879bea
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f8a14874e1822e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Aug 9 10:32:54 2011 +0200
Updated bug entries
---
.bugs/321 | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/.bugs/321 b/.bugs/321
new file mode 100644
index 0000000..1643be1
--- /dev/null
+++ b/.bugs/321
@@ -0,0 +1,54 @@
+Title: Cache selected SNMP trees containing static data
+Component: core
+Benefit: 4
+State: open
+Cost: 4
+Date: 2011-08-09 10:19:02
+Class: feature
+
+The data we fetch via SNMP is sometimes very dynamic (such as
+network traffic counters) and sometimes very static (such as interface
+names, ifAdminState, descriptions of hardware sensors and others).
+We could introduce a special caching for those static trees.
+
+[1] The checks registers static trees:
+
+register_snmp_static_oid(".1.3.6.1.5.6.7.88.99")
+
+Or, alternatively:
+
+register_snmp_static_oid(".1.3.6.1.5.6.7.88.99", [ 1, 2, "4.55" ] )
+
+
+[2] This function simply puts those OIDs into a set([]).
+
+[3] The snmp walk function (and also get) first always check
+if the OID they should fetch is listed in the static oids.
+If that is the case, the caching mechanism is activated.
+First we check, if the cache file for that OID (on that
+host) is present. This is tmp/check_mk/cache/myhoist.1.3.6.1.5.6.7.88.99.
+If that file is present and its age is < snmp_cache_age, then
+we eval() that file, return it and are finished.
+The variable snmp_cache_age is meant in minutes and is preset to 10.
+It can be overridden in main.mk.
+
+If the cache file is not present, we proceed as usual, but create
+the file at the end by writing repr(...) of the result list into it.
+
+[4] In inventory mode, when only a single host is given, we do
+*not* use the cache. This is consistent with the way the current
+caches are used for inventory. If it is hard to transport that information
+to the lower level function, we could simply delete the cache files
+before doing the inventory.
+
+[5] Make sure, that cmk --flush also deletes those cache files.
+
+[6] Review *all* existing checks and register static OIDs where
+appropriate.
+
+[7] Update the documentation about writing checks. Add a section
+into the check guidelines. Declaration of static OIDs will be
+enforced by the guide from the next stable version after 1.1.11.
+
+[8] Try to measure the overal benefit on sime real live system
+with a lot of SNMP devices.
Module: check_mk
Branch: master
Commit: ab08b3e80f3593741bb0b8103f521aee0b67958d
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ab08b3e80f3593…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Aug 9 10:06:00 2011 +0200
FIX: cisco_temp: skip non-present sensors at inventory
Thanks to Ulrich Kiermayr
---
ChangeLog | 1 +
checkman/cisco_temp | 3 ++-
checks/cisco_temp | 8 ++------
3 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b54b9ea..9e96489 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
Nagios user needs write access in precompiled directory!
Checks & Agents:
+ * FIX: cisco_temp: skip non-present sensors at inventory
* FIX: apc_symmetra: fix remaining runtime calculation (by factor 100)
* FIX: Added PNP-template for winperf_phydisk
* FIX: if64: fix UNKNOWN in case of non-unique ifAlias
diff --git a/checkman/cisco_temp b/checkman/cisco_temp
index 007bf4d..ead1c8e 100644
--- a/checkman/cisco_temp
+++ b/checkman/cisco_temp
@@ -20,4 +20,5 @@ item:
the device.
inventory:
- One check for each sensor is created by the inventory.
+ One check for each sensor is created by the inventory, if the
+ sensor is not in state {5} (not present).
diff --git a/checks/cisco_temp b/checks/cisco_temp
index 5232e4e..f068db5 100644
--- a/checks/cisco_temp
+++ b/checks/cisco_temp
@@ -51,12 +51,8 @@
def inventory_cisco_temp(checktyp, info):
- # inventory = []
- # for name, state in info:
- # inventory.append( (name, None) )
- # return inventory
-
- return [ (name, None) for (name, state) in info ]
+ # Skip sensors with state 5 (not present)
+ return [ (name, None) for (name, state) in info if state != '5' ]
def check_cisco_temp(item, params, info):
for name, state in info:
Module: check_mk
Branch: master
Commit: 8b2121b0db14a783cfdfa5e3149cad27174dd4e0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8b2121b0db14a7…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Aug 8 20:48:51 2011 +0200
FIX: local checks could not override shipped ones
---
modules/check_mk.py | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index 906afd6..d59e5a7 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -368,12 +368,19 @@ def no_inventory_possible(checkname, info):
if __name__ == "__main__":
filelist = glob.glob(checks_dir + "/*")
- if local_checks_dir:
- filelist += glob.glob(local_checks_dir + "/*")
filelist.sort()
- # read include files first!
+
+ # read local checks *after* shipped ones!
+ if local_checks_dir:
+ local_files = glob.glob(local_checks_dir + "/*")
+ local_files.sort()
+ filelist += local_files
+
+ # read include files always first, but still in the sorted
+ # order with local ones last (possibly overriding variables)
filelist = [ f for f in filelist if f.endswith(".include") ] + \
[ f for f in filelist if not f.endswith(".include") ]
+
for f in filelist:
if not f.endswith("~"): # ignore emacs-like backup files
try: