Module: check_mk
Branch: master
Commit: 870ab6aa45864c4b106e666f791c70aff8af7c89
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=870ab6aa45864c…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Tue Nov 4 12:05:18 2014 +0100
#1202 FIX cisco_power, cisco_temp_perf: Both checks now using a new service description
Both checks are supported by a wide range of cisco devices. Unfortunately the behavior of the devices is
not always the same. That means this devices not always return the same information via snamp.
Cause of this problems, it was necessary to change the information what was used as item for the service description.
After updating the Service description changes and a reinventory is needed.
---
.werks/1202 | 15 +++++++++++++++
ChangeLog | 2 ++
checks/cisco_power | 30 ++++++++++++------------------
checks/cisco_temp_perf | 16 +++-------------
4 files changed, 32 insertions(+), 31 deletions(-)
diff --git a/.werks/1202 b/.werks/1202
new file mode 100644
index 0000000..4264dc2
--- /dev/null
+++ b/.werks/1202
@@ -0,0 +1,15 @@
+Title: cisco_power, cisco_temp_perf: Both checks now using a new service description
+Level: 1
+Component: checks
+Compatible: incomp
+Version: 1.2.5i7
+Date: 1415098852
+Class: fix
+
+Both checks are supported by a wide range of cisco devices. Unfortunately the behavior of the devices is
+not always the same. That means this devices not always return the same information via snamp.
+
+Cause of this problems, it was necessary to change the information what was used as item for the service description.
+
+After updating the Service description changes and a reinventory is needed.
+
diff --git a/ChangeLog b/ChangeLog
index c8b2b6f..5b2aa18 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,8 @@
* 1478 FIX: kernel.util, statgrab_cpu: fix computation of utilization...
* 1480 FIX: brocade_vdx_status: disable check on some devices that do not support it...
* 1485 FIX: dell_om_disks, dell_om_esmlog, dell_om_mem, dell_om_processors, dell_om_sensors: detect more devices...
+ * 1202 FIX: cisco_power, cisco_temp_perf: Both checks now using a new service description...
+ NOTE: Please refer to the migration notes!
Multisite:
* 1164 FIX: Fixed links from servicegroup overviews to single servicegroups
diff --git a/checks/cisco_power b/checks/cisco_power
index a2cccf8..de8280b 100644
--- a/checks/cisco_power
+++ b/checks/cisco_power
@@ -38,25 +38,19 @@ cisco_power_source = ( '', 'unknown', 'ac', 'dc', 'externalPowerSupply', 'intern
def inventory_cisco_power(info):
for line in info:
# 5 in line[1] means cisco_power_states = notPresent
- if 'RPS NotExist' not in line[0] and line[1] != '5':
- # The field used here (ciscoEnvMonSupplyStatusDescr) can also
- # contain a textual description of the current status.
- # This tryes to remove that information
- try:
- item = line[0].split(',')[0]
- except:
- item = line[0]
- yield item, None
+ if 'RPS NotExist' not in line[1] and line[2] != '5':
+ # There are many types of cisco devices supported by this check
+ # but they all have difrent behaviors. So we have to use OID_END as
+ # item to find a way to match them all.
+ yield line[0], None
def check_cisco_power(item, no_params, info):
- for line in info:
- try:
- convert_item = line[0].split(',')[0]
- except:
- convert_item = line[0]
- if convert_item == item:
- state, source = map(saveint, line[1:3])
- output = 'State: %s, Source: %s' % (cisco_power_states[state], cisco_power_source[source])
+ for sid, textinfo, state, source in info:
+ state = int(state)
+ source = int(source)
+ if sid == item:
+ output = '%s, State: %s, Source: %s' % \
+ (textinfo, cisco_power_states[state], cisco_power_source[source])
if state == 1:
return 0, "%s" % output
elif state == 2:
@@ -70,7 +64,7 @@ check_info["cisco_power"] = {
'check_function': check_cisco_power,
'inventory_function': inventory_cisco_power,
'service_description': 'Power %s',
- 'snmp_info': ('.1.3.6.1.4.1.9.9.13.1.5.1', [2, 3, 4]),
+ 'snmp_info': ('.1.3.6.1.4.1.9.9.13.1.5.1', [OID_END, 2, 3, 4]),
'snmp_scan_function': \
lambda oid: "cisco" in oid(".1.3.6.1.2.1.1.1.0").lower(),
}
diff --git a/checks/cisco_temp_perf b/checks/cisco_temp_perf
index 5a0ede5..fa619bb 100644
--- a/checks/cisco_temp_perf
+++ b/checks/cisco_temp_perf
@@ -58,26 +58,16 @@ cisco_temp_perf_envmon_states = {
def inventory_cisco_temp_perf(info):
inventory = []
for line in info:
- try:
- name = line[0].split(',')[0]
- except:
- name = line[0]
- if name == "":
- name = line[4]
- inventory.append((name, None))
+ inventory.append((line[4], None))
return inventory
def check_cisco_temp_perf(item, _no_params, info):
for line in info:
- try:
- name = line[0].split(',')[0]
- except:
- name = line[0]
- if name == item or line[4] == item:
+ if line[4] == item:
temp = saveint(line[1])
if temp != 0:
perfdata = [("temp", temp, None, saveint(line[2]) )]
- temptext = ", %d degrees (critical at %d)" % (temp, saveint(line[2]))
+ temptext = ", %d degrees (%s) (critical at %d)" % (temp, line[0], saveint(line[2]))
else:
perfdata = []
temptext = ""
Module: check_mk
Branch: master
Commit: a17cc18d28164557d042421671db35b11501a7c2
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a17cc18d281645…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Tue Nov 4 11:33:06 2014 +0100
#1201 allnet_ip_sensoric: Detect Temperature Sensors now in more cases
It's possible that the field function is missing in the Output of the allnet device, so check_mk uses in this case now the field unit to find temperature sensors.
---
.werks/1201 | 10 ++++++++++
ChangeLog | 1 +
checks/allnet_ip_sensoric | 10 ++++++----
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/.werks/1201 b/.werks/1201
new file mode 100644
index 0000000..231381f
--- /dev/null
+++ b/.werks/1201
@@ -0,0 +1,10 @@
+Title: allnet_ip_sensoric: Detect Temperature Sensors now in more cases
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.5i7
+Date: 1415097074
+Class: feature
+
+It's possible that the field function is missing in the Output of the allnet device, so check_mk uses in this case now the field unit to find temperature sensors.
+
diff --git a/ChangeLog b/ChangeLog
index 2cc0605..c8b2b6f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,7 @@
NOTE: Please refer to the migration notes!
* 1200 Docsis Checks: Now HW Rev2 of Arris Cable Modems are detected.
* 1486 mk_oracle: completely overhauled ORACLE monitoring...
+ * 1201 allnet_ip_sensoric: Detect Temperature Sensors now in more cases...
* 1478 FIX: kernel.util, statgrab_cpu: fix computation of utilization...
* 1480 FIX: brocade_vdx_status: disable check on some devices that do not support it...
* 1485 FIX: dell_om_disks, dell_om_esmlog, dell_om_mem, dell_om_processors, dell_om_sensors: detect more devices...
diff --git a/checks/allnet_ip_sensoric b/checks/allnet_ip_sensoric
index c931794..06a6d1a 100644
--- a/checks/allnet_ip_sensoric
+++ b/checks/allnet_ip_sensoric
@@ -96,9 +96,10 @@ def allnet_ip_sensoric_parse(info):
for key, value in info:
match = re.search('(\w+)\.(\w+)', key)
if match:
- if match.group(1) not in parsed.keys():
- parsed[match.group(1)] = {}
- parsed[match.group(1)][match.group(2)] = value
+ sensor = match.group(1)
+ field = match.group(2)
+ parsed.setdefault(sensor, {})
+ parsed[sensor][field] = value
return parsed
@@ -169,7 +170,8 @@ def inventory_allnet_ip_sensoric_temp(info):
parsed = allnet_ip_sensoric_parse(info)
inventory = []
for sensor in parsed.keys():
- if "function" in parsed[sensor].keys() and parsed[sensor]["function"] == "1":
+ if (parsed[sensor].get('function') and parsed[sensor]["function"] == "1") \
+ or (parsed[sensor].get('unit') and parsed[sensor]['unit'] == '°C'):
item = allnet_ip_sensoric_compose_item(sensor, parsed[sensor])
inventory.append( (item, "allnet_ip_sensoric_temp_default_levels") )
return inventory
Module: check_mk
Branch: master
Commit: e3cacef345e0053f4c0bf35cad82f6566d29df4f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e3cacef345e005…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Nov 4 10:31:49 2014 +0100
#1486 mk_oracle: completely overhauled ORACLE monitoring
Check_MK now comes with a completely overhauled ORACLE monitoring. The
new agent plugins <tt>mk_oracle</tt> and <tt>mk_oracle.aix</tt> are ready
for use. The previous version of the Linux agent plugin has moved to
<tt>doc/treasures/mk_oracle.old</tt>.
Note: You do not need to update your already deployed plugins to the
new version immediately. The check plugins are compatible with the
output of both the old and the new agent.
The new agent has several advantages:
<ul>
<li>It comes with many additional checks.</li>
<li>It now correctly supports all ORACLE versions starting from 9.2.</li>
<li>It supports authentication via the ORACLE password wallet.</li>
<li>It is much faster: it only needs two logins into each database -
one of which is being done only every 10 minutes.</li>
</ul>
We are preparing an update of the documentation as well.
---
.werks/1486 | 28 +
ChangeLog | 1 +
agents/plugins/mk_oracle | 1020 +++++++++++++++++---
.../plugins/{mk_oracle.new.aix => mk_oracle.aix} | 0
agents/plugins/mk_oracle.new | 971 -------------------
doc/treasures/mk_oracle.old | 223 +++++
6 files changed, 1136 insertions(+), 1107 deletions(-)
Diff: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commitdiff;h=e3cacef345…
Module: check_mk
Branch: master
Commit: e2739210157b94e8ac93311d976050f42fa1c030
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e2739210157b94…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Nov 4 10:25:28 2014 +0100
New option forbidden_characters for TextAscii
---
web/htdocs/valuespec.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index 4c71444..dc72c4d 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -349,12 +349,12 @@ class TextAscii(ValueSpec):
self._empty_text = kwargs.get("empty_text", "")
self._read_only = kwargs.get("read_only")
self._none_is_empty = kwargs.get("none_is_empty", False)
+ self._forbidden_chars = kwargs.get("forbidden_chars", "")
self._regex = kwargs.get("regex")
self._regex_error = kwargs.get("regex_error",
_("Your input does not match the required format."))
if type(self._regex) == str:
self._regex = re.compile(self._regex)
-
self._prefix_buttons = kwargs.get("prefix_buttons", [])
def canonical_value(self):
@@ -419,6 +419,10 @@ class TextAscii(ValueSpec):
unicode(value)
except:
raise MKUserError(varprefix, _("Non-ASCII characters are not allowed here."))
+ if self._forbidden_chars:
+ for c in self._forbidden_chars:
+ if c in value:
+ raise MKUserError(varprefix, _("The character <tt>%s</tt> is not allowed here.") % c)
if self._none_is_empty and value == "":
raise MKUserError(varprefix, _("An empty value must be represented with None here."))
if not self._allow_empty and value.strip() == "":