dat from Nagios
Message-ID: <537a1544.3Fvj43AVy7JwgTUW%mk(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Module: check_mk
Branch: master
Commit: 0e83f019f9c0aa7debf6d129b5c846e5bcf4d53e
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=0e83f019f9c0aa…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon May 19 16:29:21 2014 +0200
Renaming hosts: also handle retention.dat from Nagios
---
doc/drafts/LIESMICH.hosts_umbenennen | 21 +++++++++------------
modules/automation.py | 16 ++++++++++++----
web/htdocs/wato.py | 2 ++
3 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/doc/drafts/LIESMICH.hosts_umbenennen b/doc/drafts/LIESMICH.hosts_umbenennen
index 4dbe925..a1a0223 100644
--- a/doc/drafts/LIESMICH.hosts_umbenennen
+++ b/doc/drafts/LIESMICH.hosts_umbenennen
@@ -53,18 +53,6 @@ OMD:
==> Auch das muss mit einer Automation gehen
-ES FEHLT:
-
-* retentions.dat (analog bei CMC)
-* Stop/Start vom Core inkl. Config erzeugen zu rechter Zeit
-* Nachdenken, ob noch was fehlt.
-
-
-Beim Stoppen/Starten des Cores muss ich sicherstellen:
-
-1. Das ganze Umbenennen sollte nur dann antriggerbar sein, wenn bei der
-entsprechenden Site keine Pending Changes da sind. Ansonsten Hinweis.
-
2. Damit ein Fehler beim Konfig erzeugen ausgeschlossen werden kann, muss
ich sicherstellen, dass die IP-Adresse des neuen Namens (ebenfalls)
auflösbar ist - und zwar von der Monitoring-Site. Man könnte das zur
@@ -84,3 +72,12 @@ weiterverwendet und die automation scheitern *am Schluss* mit einem Fehler.
- Jetzt die Konfig erzeugen und prüfen. Wenn ein Fehler auftritt, zurückrollen
- Und den Core wieder starten (beides mit automation_restart)
+-------------------------------------------------------------------------------
+ES FEHLT:
+
+* retentions.dat (analog bei CMC)
+* Problem mit Fehler bei der IP-Adresse lösen
+* Nachdenken, ob noch was fehlt.
+* BI and BI Assumptions??
+* Erlauben nur, wenn die Site sauber ist
+* Vor der automation noch einen sync erzwingen
diff --git a/modules/automation.py b/modules/automation.py
index 87c1b8f..31e21d8 100644
--- a/modules/automation.py
+++ b/modules/automation.py
@@ -978,6 +978,8 @@ def rename_host_file(basedir, oldname, newname):
# This functions could be moved out of Check_MK.
def omd_rename_host(oldname, newname):
+ oldregex = oldname.replace(".", "[.]")
+ newregex = newname.replace(".", "[.]")
actions = []
# Temporarily stop processing of performance data
@@ -996,13 +998,13 @@ def omd_rename_host(oldname, newname):
# entries of rrdcached journal
dirpath = omd_root + "/var/rrdcached/"
if not os.system("sed -i 's@/perfdata/%s/@/perfdata/%s/@' "
- "%s/var/rrdcached/rrd.journal.* 2>/dev/null" % ( oldname, newname, omd_root)):
+ "%s/var/rrdcached/rrd.journal.* 2>/dev/null" % ( oldregex, newregex, omd_root)):
actions.append("rrdcached")
# Spoolfiles of NPCD
if not os.system("sed -i 's/HOSTNAME::%s /HOSTNAME::%s /' "
"%s/var/pnp4nagios/perfdata.dump %s/var/pnp4nagios/spool/perfdata.* 2>/dev/null" % (
- oldname, newname, omd_root, omd_root)):
+ oldregex, newregex, omd_root, omd_root)):
actions.append("pnpspool")
if rrdcache_running:
@@ -1019,7 +1021,7 @@ s/(INITIAL|CURRENT) (HOST|SERVICE) STATE: %(old)s;/\1 \2 STATE: %(new)s;/
s/(HOST|SERVICE) (DOWNTIME |FLAPPING |)ALERT: %(old)s;/\1 \2ALERT: %(new)s;/
s/PASSIVE (HOST|SERVICE) CHECK: %(old)s;/PASSIVE \1 CHECK: %(new)s;/
s/(HOST|SERVICE) NOTIFICATION: ([^;]+);%(old)s;/\1 NOTIFICATION: \2;%(new)s;/
-''' % { "old" : oldname, "new" : newname }
+''' % { "old" : oldregex, "new" : newregex }
patterns = [
"var/check_mk/core/history",
"var/check_mk/core/archive/*",
@@ -1036,10 +1038,16 @@ s/(HOST|SERVICE) NOTIFICATION: ([^;]+);%(old)s;/\1 NOTIFICATION: \2;%(new)s;/
if one_matched:
actions.append("history")
+ # State retention (important for Downtimes, Acknowledgements, etc.)
+ if monitoring_core == "nagios":
+ if not os.system("sed -ri 's/^host_name=%s$/host_name=%s/' %s/var/nagios/retention.dat" % (
+ oldregex, newregex, omd_root)):
+ actions.append("retention")
+
# NagVis maps
if not os.system("sed -i 's/^[[:space:]]*host_name=%s[[:space:]]*$/host_name=%s/' "
"%s/etc/nagvis/maps/*.cfg 2>/dev/null" % (
- oldname, newname, omd_root)):
+ oldregex, newregex, omd_root)):
actions.append("nagvis")
return actions
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 8042398..8f23889 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -2408,6 +2408,8 @@ def rename_host(host, newname):
actions.append(_("NagVis maps"))
elif what == "history":
actions.append(_("Monitoring history entries (events and availability)"))
+ elif what == "retention":
+ actions.append(_("The current monitoring state (including ackowledgements and downtimes)"))
Module: check_mk
Branch: master
Commit: 3bcdb63798f73387c8142392cafdcc3e1be18ab8
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3bcdb63798f733…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Mon May 19 13:42:36 2014 +0200
if_brocade: New if64 Check version for Brocade VDX Switches
This check does the same like the normal if64 check. The only difference is that ifName is used instead of ifDescription.
You may want to do a reinventory on broace switches, because otherwise the "Check_MK Inventory" check (if used) will trigger warning state
cause of unchecked services.
---
.werks/162 | 10 ++++++
ChangeLog | 2 ++
checks/if64 | 1 +
checks/if_brocade | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 115 insertions(+)
diff --git a/.werks/162 b/.werks/162
new file mode 100644
index 0000000..8ad143f
--- /dev/null
+++ b/.werks/162
@@ -0,0 +1,10 @@
+Title: if_brocade: New if64 Check version for Brocade VDX Switches
+Level: 2
+Component: checks
+Version: 1.2.5i3
+Date: 1400499450
+Class: incomp
+
+This check does the same like the normal if64 check. The only difference is that ifName is used instead of ifDescription.
+You may want to do a reinventory on broace switches, because otherwise the "Check_MK Inventory" check (if used) will trigger warning state
+cause of unchecked services.
diff --git a/ChangeLog b/ChangeLog
index 66073a9..029b577 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -48,6 +48,8 @@
* 0917 df checks: now able to show time left until disk full as perfometer and pnpgraph...
* 0954 juniper_bgp_state: New Check for BGP status at Juniper Routers
* 0955 zfs_arc_cache, zfs_arc_cache.l2: New Checks for Hit Ratios and Sizes of ZFS arc Cache
+ * 0162 if_brocade: New if64 Check version for Brocade VDX Switches...
+ NOTE: Please refer to the migration notes!
* 0777 FIX: special agent emcvnx: did not work with security file authentication...
* 0786 FIX: zfsget: fixed compatibility with older Solaris agents...
* 0809 FIX: brocade_fcport: Fixed recently introduced problem with port speed detection
diff --git a/checks/if64 b/checks/if64
index f842658..e41600f 100644
--- a/checks/if64
+++ b/checks/if64
@@ -44,6 +44,7 @@ def check_if64(item, params, info):
def if64_scan_function(oid):
ignored_strings = [
"LANCOM",
+ "Brocade VDX Switch",
]
for string in ignored_strings:
if string in oid(".1.3.6.1.2.1.1.1.0"):
diff --git a/checks/if_brocade b/checks/if_brocade
new file mode 100644
index 0000000..829b53f
--- /dev/null
+++ b/checks/if_brocade
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2013 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# 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.
+
+def fix_if_64_highspeed(info):
+ for line in info:
+ if type(line[3]) == str: # not yet converted
+ line[3] = saveint(line[3]) * 1000000
+
+def if_brocade_convert(info):
+ iftab, ssidtab = info
+ ssid_dict = dict(ssidtab)
+ new_info = []
+ for line in iftab:
+ if line[20].startswith("Point-2-Point"):
+ continue
+ else:
+ ifName = line[1]
+
+ new_line = line[:-1]
+ if line[20].startswith("Logical Network"):
+ new_line[1] += " Logical"
+ ssid = ssid_dict.get(ifName, "")
+ if ssid:
+ new_line[1] += " " + ssid
+ new_line[1] = new_line[1].strip()
+ new_info.append(new_line)
+ return new_info
+
+def inventory_if_brocade(info):
+ info = if_brocade_convert(info)
+ fix_if_64_highspeed(info)
+ return inventory_if_common(info)
+
+def check_if_brocade(item, params, info):
+ info = if_brocade_convert(info)
+ fix_if_64_highspeed(info)
+ return check_if_common(item, params, info)
+
+check_includes['if_brocade'] = [ "if.include" ]
+check_info["if_brocade"] = {
+ 'check_function': check_if_brocade,
+ 'inventory_function': inventory_if_brocade,
+ 'service_description': 'Interface %s',
+ 'has_perfdata': True,
+ 'snmp_info': [
+ ( ".1.3.6.1.2.1", [
+ "2.2.1.1", # ifIndex 0
+ "31.1.1.1.1", # ifName (brocade has no useful information if Descr)
+ "2.2.1.3", # ifType 2
+ "31.1.1.1.15", # ifHighSpeed .. 1000 means 1GBit
+ "2.2.1.8", # ifOperStatus 4
+ "31.1.1.1.6", # ifHCInOctets 5
+ "31.1.1.1.7", # ifHCInUcastPkts 6
+ "31.1.1.1.8", # ifHCInMulticastPkts 7
+ "31.1.1.1.9", # ifHCInBroadcastPkts 8
+ "2.2.1.13", # ifInDiscards 9
+ "2.2.1.14", # ifInErrors 10
+ "31.1.1.1.10", # ifHCOutOctets 11
+ "31.1.1.1.11", # ifHCOutUcastPkts 12
+ "31.1.1.1.12", # ifHCOutMulticastPkts 13
+ "31.1.1.1.13", # ifHCOutBroadcastPkts 14
+ "2.2.1.19", # ifOutDiscards 15
+ "2.2.1.20", # ifOutErrors 16
+ "2.2.1.21", # ifOutQLen 17
+ "31.1.1.1.18", # ifAlias 18
+ "2.2.1.6", # ifPhysAddress 19
+ # Used in order to ignore some logical NICs
+ "2.2.1.2", # ifDescr 20
+ ]),
+ ( ".1.3.6.1.4.1.2356.11.1.3.56.1", [1, 3] ) # brocade: SSID 21
+ ],
+ # check if number of network interfaces (IF-MIB::ifNumber.0) is at least 2
+ 'snmp_scan_function': \
+ lambda oid: "Brocade VDX Switch" in oid(".1.3.6.1.2.1.1.1.0") and \
+ (not if64_disabled(g_hostname)) and \
+ oid(".1.3.6.1.2.1.31.1.1.1.6.*") != None,
+ 'group': 'if',
+ 'default_levels_variable': 'if_default_levels',
+}