Module: check_mk
Branch: master
Commit: 04d5a0b1c6d34e4c4e1fcc55d3698fb12b288981
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=04d5a0b1c6d34e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed May 22 16:21:04 2013 +0200
FIX: LDAP configuration: allow DNs without DC=
---
ChangeLog | 7 ++++---
web/htdocs/valuespec.py | 4 ----
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0ebc35f..58e4ac7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -155,6 +155,7 @@
WATO:
* FIX: convert editing of global setting to POST. This avoid URL-too-long
when defining lots of Event Console actions
+ * FIX: LDAP configuration: allow DNs without DC=
Event Console:
* FIX: fix icon in events check if host specification is by IP address
@@ -288,7 +289,7 @@
user/kernel percentages. (thanks to William Baum)
* FIX: UPS checks support Eaton Evolution
* FIX: windows agent plugin: mssql now exits after 10 seconds
-
+
Notifications:
* FIX: fixed crash on host notification when contact had explicit services set
@@ -302,12 +303,12 @@
Multisite:
* FIX: Avoid duplicate "Services" button in host detail views
* FIX: fix rescheduling icon for services with non-ASCII characters
- * New filter for IP address of a host
+ * New filter for IP address of a host
* Quicksearch: allow searching for complete IP addresses and IP
address prefixes
* Add logentry class filter to view 'Host- and Service events'
- BI:
+ BI:
* FIX: fix exception with expansion level being 'None'
* FIX: speedup for single host tables joined by hostname (BI-Boxes)
* FIX: avoid closing BI subtree while tree is being loaded
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index 84c0c99..a3866cb 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -2340,10 +2340,6 @@ class LDAPDistinguishedName(TextAscii):
def validate_value(self, value, varprefix):
TextAscii.validate_value(self, value, varprefix)
- # At least one DC= must be in distinguished name
- if value and 'dc=' not in value.lower():
- raise MKUserError(varprefix, _('Found no "dc=" (Domain Component).'))
-
# Check wether or not the given DN is below a base DN
if self.enforce_suffix and value and not value.lower().endswith(self.enforce_suffix.lower()):
raise MKUserError(varprefix, _('Does not ends with "%s".') % self.enforce_suffix)
Module: check_mk
Branch: master
Commit: 753c2b255f0c740650b704e7ade46526232493d0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=753c2b255f0c74…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed May 22 16:02:29 2013 +0200
FIX: free_ipmi: fix name of sensor cache file if hostname contains domain part
Conflicts:
ChangeLog
---
ChangeLog | 4 ++++
agents/check_mk_agent.linux | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 43328f4..0ebc35f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -146,6 +146,7 @@
* FIX: zfsget: do not assume that devices begin with /, but mountpoints
* FIX: ipmi_sensors: handle two cases for DELL correctly (thanks to Sebastian Talmon)
* FIX: check_dns: enable performance data
+ * FIX: free_ipmi: fix name of sensor cache file if hostname contains domain part
Multisite:
* List of views: Output the alias of a datasource instead of internal name
@@ -180,6 +181,9 @@
* FIX: Fixed exception during initial page rendering in python 2.6 in special cases
(Internal error: putenv() argument 2 must be string, not list)
+ Livestatus:
+ * livestatus.log: show utf-8 decoding problems only with debug logging >=2
+
Notifications:
* FIX: HTML mails: Handle the case where plugin argument is not set
* FIX: HTML mails: remove undefinded placeholders like $GRAPH_CODE$
diff --git a/agents/check_mk_agent.linux b/agents/check_mk_agent.linux
index 9c80562..335ba79 100755
--- a/agents/check_mk_agent.linux
+++ b/agents/check_mk_agent.linux
@@ -243,7 +243,7 @@ fi
# for the first run (where the cache is created). If ipmi-sensors runs into
# that timeout, it leaves and empty cache file. We skip this check forever
# if we find that empty cache file.
-sdrcache=/var/cache/.freeipmi/sdr-cache/sdr-cache-$(hostname).127.0.0.1
+sdrcache=/var/cache/.freeipmi/sdr-cache/sdr-cache-$(hostname | cut -d. -f1).127.0.0.1
if type ipmi-sensors >/dev/null && [ ! -e "$sdrcache" -o -s "$sdrcache" ]
then
echo '<<<ipmi_sensors>>>'
Module: check_mk
Branch: master
Commit: fc7a164843b310b88d610b822735de49d1c3c760
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=fc7a164843b310…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed May 22 12:10:09 2013 +0200
FIX: ipmi_sensors: handle two cases for DELL correctly (thanks to Sebastian Talmon)
---
ChangeLog | 1 +
checks/ipmi_sensors | 2 ++
2 files changed, 3 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index c15d27a..88386a3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -143,6 +143,7 @@
* FIX: ipmi_sensors: ignore sensors in state [NA] (not available)
* FIX: aix_lvm: handle agents that output an extra header line
* FIX: zfsget: do not assume that devices begin with /, but mountpoints
+ * FIX: ipmi_sensors: handle two cases for DELL correctly (thanks to Sebastian Talmon)
Multisite:
* List of views: Output the alias of a datasource instead of internal name
diff --git a/checks/ipmi_sensors b/checks/ipmi_sensors
index 9d89ea9..a9c2b34 100644
--- a/checks/ipmi_sensors
+++ b/checks/ipmi_sensors
@@ -113,6 +113,8 @@ def check_freeipmi(item, _no_params, info):
or status == "Entity_Present" \
or status.endswith("is_connected") \
or status.endswith("Presence_detected") \
+ or status == "battery_presence_detected" \
+ or status == "Drive_Presence" \
or status.startswith("Fully_Redundant"):
return (0, infotext, perfdata)
else:
Module: check_mk
Branch: master
Commit: ebe7d33125c2b25d785d9af6eab18e39db21208d
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ebe7d33125c2b2…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed May 22 12:05:31 2013 +0200
FIX: zfsget: do not assume that devices begin with /, but mountpoints
---
ChangeLog | 1 +
checks/zfsget | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 1707784..c15d27a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -142,6 +142,7 @@
* FIX: f5_bigip_psu: handle more than first power supply, thanks to Miro Ramza
* FIX: ipmi_sensors: ignore sensors in state [NA] (not available)
* FIX: aix_lvm: handle agents that output an extra header line
+ * FIX: zfsget: do not assume that devices begin with /, but mountpoints
Multisite:
* List of views: Output the alias of a datasource instead of internal name
diff --git a/checks/zfsget b/checks/zfsget
index cb51094..b152291 100644
--- a/checks/zfsget
+++ b/checks/zfsget
@@ -109,7 +109,7 @@ def zfsget_parse_df_info(entries, info):
for device, kbytes, used, avail, percent, mountpoint in info:
# ignore entries already contained in zfsget and also
# entries for virtual filesystems (like swap)
- if device.startswith("/") and mountpoint not in entries:
+ if mountpoint.startswith("/") and mountpoint not in entries:
entry = {}
total = int(kbytes) / 1024.0
entry["total"] = total
Module: check_mk
Branch: master
Commit: 919a4e24af71e2e832bda6bcf19e3bc51980adf3
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=919a4e24af71e2…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue May 21 15:36:33 2013 +0200
Added draft for livestatus proxy
---
doc/drafts/LIESMICH.livestatusproxy | 128 +++++++++++++++++++++++++++++++++++
1 file changed, 128 insertions(+)
diff --git a/doc/drafts/LIESMICH.livestatusproxy b/doc/drafts/LIESMICH.livestatusproxy
new file mode 100644
index 0000000..bd8ea5c
--- /dev/null
+++ b/doc/drafts/LIESMICH.livestatusproxy
@@ -0,0 +1,128 @@
+Daemon könnte heißen: liveproxyd "Livestatus Proxy Daemon"
+
+Schritte der Implementierung:
+
+1. Grundgerüst Daemon mit --help und daemonize(). Dazu
+ die Option -g, damit er im Vordergrund läuft und
+ --debug, was die Exceptions durchkommen lässt. Dazu
+ getopt. Auch ein var/log/livepd.log. Bei -g wird
+ statt in log auf stdout geschrieben (siehe mkeventd)
+
+ Vorlage: mkeventd
+
+ Vorerst läuft as nur in OMD. Daher ist keine Konfiguration
+ von Pfaden, etc. notwendig.
+
+
+2. Laden der Konfiguration und Anlegen der globalen Datenstruktur
+ g_sites. Pro Site ein Eintrag mit dynamischen Daten (Zustand
+ und Channels) und Konfigurationsdaten. Dazu ein globales
+ Lock. Zugriff dann immer mit with lock_sites: Testkonfiguration
+ von Hand schreiben.
+
+
+3. Eine Klasse, die einen Thread implementiert für eine Site.
+ Diese sorgt dafür, dass die konfigurierte Anzahl von
+ Verbindungen vorhanden ist. Und macht einfach in einer Schleife
+ ein TCP connect auf das Ziel. Und trägt neue Connections in
+ den Pool ein (lock beachten). Wenn all Verbindungen da sind,
+ kann er warten.
+
+ --> Jetzt kann man schon testen, ob die Verbindungen aufgebaut
+ werden.
+
+ --> Zum Testen z.B. eine Wartezeit von 5 Sekunden in die Schleife
+ bauen.
+
+
+4. Hauptprozess: Erzeugen der UNIX-Sockets pro Site in
+ tmp/run/liveproxy/$SITE und auf listen() gehen.
+
+5. Hauptschleife: mit einem select() auf allen diesen Sockets
+ warten. Wenn eine Verbindung kommt, diese annehmen und
+ in einem Clientpool speichern. Clientpool:
+
+ [ {
+ "site" : "muc",
+ "wait" : "query"/"response"/"channel",
+ "since" : wartet seit.
+ "channel" -> Zeigt auf Kanaldict im Falle "response"
+ "socket" -> Socket-Objekt, dass von accept() geliefert wurde
+ ...
+ }
+ ...
+ ]
+
+ --> Das kann man jetzt wieder testen.
+
+6. select() erweitern, so dass es jetzt auch auf die bestehenden
+ Client-Verbindungen wartet. In der Schleife, jetzt zusätzlich
+ auch Queries lesen und Testeweise ausgeben.
+
+ --> Testen.
+
+7. Hauptschleife so erweitern, dass das select() nicht länger
+ als z.B. 0.1 sec wartet. Danach immer alle Sites durchgehen
+ und Heartbeat abwickeln. z.B. in einer eigenen Funktion
+
+ Heartbeat: Alle Sites durchgehen. Pro Site gucken: Ist
+ ein Heartbeat ausstehend? Ja? Wartezeit prüfen. Wenn zu
+ lange, dann Site als tot markieren. Alle Verbindungen
+ abrechen.
+
+ Wenn kein Heartbeat aussteht: Ist kein Kanal frei, dann
+ sollte die Site noch auf tot stehen. Dann einfach warten.
+ Wenn ein Kanal frei ist, ein Heartbeat senden und dessen
+ Zeitstempel im Kanal vermerken.
+
+
+8. select() auf die Kanäle erweitern, die im Zustand "busy"
+ oder "heartbeat" stehen. Wenn so ein Kanal lesbar wird,
+ dann kann es aktuell nur "heartbeat" sein. Diesen
+ einsammeln und die Zeit des letzten Heartbeat vermerken.
+
+9. Jetzt von Punkt 6 das so erweitern, dass wenn Client-Anfrage
+ reinkommt. Wenn ein Kanal für die Zielsite frei ist, dann
+ Anfrage vom Client lesen und in den Kanal schreiben. Kanal
+ markiern. --> TESTEN. Jetzt muss eine Anfrage auf dem Zielsystem
+ eingehen.
+
+ Wenn die Site tot ist, dann Anfrage auch einlesen, und selbst
+ mit einem Fehler-Header beantworten.
+
+ Wenn Site lebt, aber kein Kanal frei ist:
+ Fall 1: erster Versuch: setzen Zeitstempel beim dict der
+ Client-Verbindung ("since" etdc.)
+ Fall 2: "since" Feld bereits gesetzt. Timeout prüfen.
+ Der Wert steht in g_sites[site]["timeout"]. Wenn überschritten,
+ dann Query lesen und mit Fehler beantworten "All %d channels busy, timeout waiting for free channel."
+
+10. 8 erweitern: Wenn kanal lesbar wird, der im Zustand "busy"
+ ist, dann die Anfrage auslesen. Nur ein read(), damit wir
+ nicht blockieren! Wenn die Anfrage nicht komplett ist, setzen
+ speichern wir das bereits gelesene im Kanal unter der Variable
+ "partial" ein. Und machen vorerst nix weiter.
+ Wenn bereits ein "partial" vorhanden war, hängen wir uns dran.
+ Wenn jetzt alle Daten da sind, senden wir das Ergebnis zum
+ Client. Zustände von Client und Kanal entsprechend setzen.
+
+11. Signal zum Beenden implemtieren und versuchen, sauber runterzufahren.
+
+12. Startskript schreiben.
+
+13. omd-Hook schreiben, mit dem man den Proxy aktivieren kann. Der proxy
+ muss dann auch in etc/check_mk/multisite.d/liveproxy.mk die Zeile
+ liveproxy = True schreiben.
+
+14. WATO-Site-Konfiguration: Wenn proxy aktiviert per omd config
+ (config.liveproxy), dann zusätzliche Option:
+ [X] Use Livestatus Proxy
+ Number of channels: [ 10]
+ Wait for free channel: [ 5] sec
+ Heartbeat interval: [ 3] sec
+ Heartbeat timeout: [ 50]% over typical response time
+ Maximum Response time: [120] sec
+
+ Beim Schreiben der sites.mk auch die liveproxy.mk ein etc/check_mk
+ erzeugen. Dabei 'omd restart liveproxy' aufrufen.
+