Module: check_mk
Branch: master
Commit: 9aa4d1650b1677606c92ada4f633f169fc735036
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9aa4d1650b1677…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Apr 19 14:57:16 2013 +0200
Added template for check with predictive monitoring
---
doc/predictive/.f12 | 10 +++++++++
doc/predictive/README | 20 +++++++++++++++++
doc/predictive/foo.agentplugin | 10 +++++++++
doc/predictive/foo.check | 46 ++++++++++++++++++++++++++++++++++++++++
doc/predictive/foo.wato | 17 +++++++++++++++
5 files changed, 103 insertions(+)
diff --git a/doc/predictive/.f12 b/doc/predictive/.f12
new file mode 100644
index 0000000..220cd74
--- /dev/null
+++ b/doc/predictive/.f12
@@ -0,0 +1,10 @@
+# compile helper file. Installs the files into a local
+# OMD site and into the local agent
+
+SITE=${SITE:-$(omd sites --bare | head -n 1)}
+
+sudo install -m 755 foo.agentplugin /usr/lib/check_mk_agent/plugins/foo
+sudo install -m 644 foo.check /omd/sites/$SITE/local/share/check_mk/checks/foo
+sudo install -m 644 foo.wato /omd/sites/$SITE/local/share/check_mk/web/plugins/wato/foo.py
+
+sudo omd restart $SITE apache
diff --git a/doc/predictive/README b/doc/predictive/README
new file mode 100644
index 0000000..2bbf7f4
--- /dev/null
+++ b/doc/predictive/README
@@ -0,0 +1,20 @@
+This directory contains a skeleton for own checks that use predicitve
+levels. These types of check just monitor one single value that varies
+over the time.
+
+Install the files:
+
+ foo.agentplugin -> /usr/lib/check_mk_agent/plugins/foo (on the target host)
+ foo.check -> (OMD-SITE)/local/share/check_mk/checks/foo
+ foo.wato -> (OMD-SITE)/local/share/check_mk/web/plugins/wato/foo.py
+
+Do not forget to restart your site Apache after installing or modifiying the
+wato/foo.py.
+
+Now you can do inventory (cmk -I) on the target host and will get one new
+service named 'FOO'. In WATO you will have a new rule below "Parameters for Inventorized checks"
+in the box "My own checks". Here you can setup no, fixed or predictive levels.
+
+Please note that predictive levels need some backlog of RRD data in order
+to work.
+
diff --git a/doc/predictive/foo.agentplugin b/doc/predictive/foo.agentplugin
new file mode 100755
index 0000000..12dd001
--- /dev/null
+++ b/doc/predictive/foo.agentplugin
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# This is an example for an agent section that is just outputting one simple
+# value. As an example we output the number of processes currently running. This
+# is better than a fixed number since it changes from time to time.
+
+# Put this file onto the target host to /usr/lib/check_mk_agent/plugins
+
+echo '<<<foo>>>'
+ps ax | wc -l
diff --git a/doc/predictive/foo.check b/doc/predictive/foo.check
new file mode 100644
index 0000000..287f372
--- /dev/null
+++ b/doc/predictive/foo.check
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+
+# Example check. Put this into local/share/check_mk/checks
+
+# Inventory function without any specialities. Return
+# None as a default parameter (meaning: no levels).
+def inventory_foo(info):
+ if len(info) > 0:
+ return [(None, None)]
+
+def check_foo(_no_item, params, info):
+ # Step 1: extract the measured value from the agent output. Here
+ # of course trivial
+ value = float(info[0][0])
+
+ # Step 2: Output the value (and maybe others) as performance data.
+ # This is mandatory when using predictive levels. The name of the
+ # value (here 'fooval') is needed later.
+ perfdata = [("fooval", value)]
+
+ # Step 3: Prepare some informative output text
+ text = "%d running processes" % value
+
+ # Step 4: let the helper function check_levesl() do the rest.
+ # The params can be None (lo levels), a pair of fixed levels for
+ # WARN/CRIT or a dictionary with the parameters for the prediction.
+ # In return we get the resulting Nagios state and in case of prediciton
+ # an extra text and extra perfdata (the predicted reference).
+ state, extratext, extraperf = check_levels(value, "fooval", params)
+
+ # Put that extratext together with our own text
+ if extratext:
+ text += ", " + extratext
+
+ # Also append the extra performance data and return the stuff
+ return state, text, perfdata + extraperf
+
+
+check_info['foo'] = {
+ "check_function" : check_foo,
+ "inventory_function" : inventory_foo,
+ "service_description" : "FOO",
+ "has_perfdata" : True, # must be true
+ "group" : "foobar", # configuration group for WATO
+}
+
diff --git a/doc/predictive/foo.wato b/doc/predictive/foo.wato
new file mode 100644
index 0000000..2526eb0
--- /dev/null
+++ b/doc/predictive/foo.wato
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+
+# WATO declaration for the check parameters of foo
+register_check_parameters(
+ "My own checks", # main topic for this rule in WATO
+ "foobar", # name of WATO group, was declared in check (not always name of check)
+ "Levels for foo", # title of the WATO ruleset
+ Levels(
+ help = _("The foo check does check the foo of a bar. Here you can define parameters..."),
+ unit = "processes",
+ default_difference = (10.0, 20.0), # Default settings when using absolute differences
+ default_levels = (100., 200.0), # Default levels when using non-predictive static levels
+ ),
+ None, # Check has no item
+ None, # Match type, always None here
+)
+
Module: check_mk
Branch: master
Commit: 01ff53d129aa475fa2024a81f2976e0dd86fd996
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=01ff53d129aa47…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Apr 19 10:19:24 2013 +0200
Updated bug entries #0919
---
.bugs/919 | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/.bugs/919 b/.bugs/919
new file mode 100644
index 0000000..117b36f
--- /dev/null
+++ b/.bugs/919
@@ -0,0 +1,13 @@
+Title: Detect and warn about outdated checks in local/ hierachy
+Component: core
+State: open
+Date: 2013-04-19 10:17:27
+Targetversion: 1.4.0
+Class: feature
+
+It often happens that there are placed checks with changes/fixes in the
+local/ hierarchy and left there. When an update applies those changes
+and maybe get further changes, and the user does not remind, he would
+use the local/ check for all the time.
+
+It would be a nice feature to detect this somehow.