Nagios lastet Server zu 100% aus

Ne0n

professional newbie
Hallo,

ist einem von euch die Ursache für folgendes Phänomen bekannt?
Mein Nagios läuft einige Tage problemfrei auf normaler Auslastung, fängt aber irgendwann an den Server zu 100% auszulasten. Dann starte ich den Dienst neu und habe wieder einige Tage meine Ruhe.

Nagios Version ist 2.9.1, OS ist FBSD 5.4.
Log zeigt weder im normalen noch im ausgelasteten Status etwas besonderes.
Überwacht werden ca. 100 Hosts mit insgesamt 400 Services, im Abstand von 3-10 Minuten. Wenn die Anzahl aber mein Problem wäre würde es ja nicht 5 Tage dauern bis die Last so ausschlägt. Trigger gibts nicht, Benachrichtigungen halten sich auch im normalen Rahmen (je 3-5 Mails an 5 Benutzer / Tag).

Ausgabe von top:
Code:
last pid: 99078;  load averages:  1.35,  1.49,  1.47    up 2+19:41:35  10:33:54
34 processes:  2 running, 32 sleeping
CPU states: 51.9% user,  0.0% nice, 48.1% system,  0.0% interrupt,  0.0% idle
Mem: 294M Active, 42M Inact, 100M Wired, 26M Cache, 60M Buf, 30M Free
Swap: 999M Total, 225M Used, 774M Free, 22% Inuse

  PID USERNAME PRI NICE   SIZE    RES STATE    TIME   WCPU    CPU COMMAND
44431 nagios   132    0 12468K 10764K RUN    331:24 92.43% 92.43% nagios

Etwas verwunderlich ist allerdings folgendes:

Code:
nagios# ps -ax | grep nagios
  967  ??  SsJ  140:46.78 /usr/local/bin/nagios -d /usr/local/etc/nagios/nagios
44431  ??  RJ   331:55.85 /usr/local/bin/nagios -d /usr/local/etc/nagios/nagios

nagios# /usr/local/etc/rc.d/nagios.sh stop
Stopping nagios.
Waiting for PIDS: 967.

nagios# /usr/local/etc/rc.d/nagios.sh stop
nagios not running? (check /var/spool/nagios/nagios.lock).

nagios# ps -ax | grep nagios
44431  ??  RJ   332:36.07 /usr/local/bin/nagios -d /usr/local/etc/nagios/nagios

^^ Muss ich das verstehen?

Gruß,
Ne0n
 
Für den Prozess gibts aus irgendeinem Grund kein pidfile. Kill ihn einfach mal manuell und starte nagios neu. Dann mal abwarten, ob das Problem zurückkommt...
 
Ich gehe fast davon aus, dass mein Problem wieder zurückkommt, da es ja auch nach einem Reboot irgendwann mal auftritt. Aber erstmal natürlich vielen Dank für deine Antwort, ich melde mich wieder :)
 
hi,

... ich setze zwischen stop und start ein sleep von 10 sek ein ...

dann stellt sich noch die frage deiner konfiguration, was auch auschlaggebend sein kann.
schau mal da am besten dierekt im nagios-forum nach, da werden performance-probleme
sehr intensiv und reichhaltig diskutiert und es sind viele tipps zu finden.

foxkilo
 
Grundsätzlich: das Problem ist in der offiziellen Dokumentation von Nagios zu FreeBSD explizit beschrieben: http://nagios.sourceforge.net/docs/2_0/whatsnew.html#changelog
FreeBSD and threads. On FreeBSD there's a native user-level implementation of threads called 'pthread' and there's also an optional ports collection 'linuxthreads' that uses kernel hooks. Some folks from Yahoo! have reported that using the pthread library causes Nagios to pause under heavy I/O load, causing some service check results to be lost. Switching to linuxthreads seems to help this problem, but not fix it. The lock happens in liblthread's __pthread_acquire() - it can't ever acquire the spinlock. It happens when the main thread forks to execute an active check. On the second fork to create the grandchild, the grandchild is created by fork, but never returns from liblthread's fork wrapper, because it's stuck in __pthread_acquire(). Maybe some FreeBSD users can help out with this problem.

Lustigerweise ist das schon seit sehr langer Zeit dem Autor von Nagios bekannt und auch in der offiziellen Dokumentation samt Lösungsweg beschrieben. Scheinbar liest aber auch der FreeBSD Port-Maintainer von Nagios und nagios-devel nicht die Dokumentation von Nagios.

Auf der FreeBSD-STABLE Mailingliste: http://lists.freebsd.org/pipermail/freebsd-stable/2008-January/thread.html#39365

Die Umstellung auf Linux-libthread fixed das Problem zwar lt. Nagios-Entwickler nicht, lindert sie aber scheinbar ausreichend weit. Wie in der Mailingliste zu sehen wird's demnächst eine neue Version des Nagios-Ports geben, die die Threading-Bibliothek endlich umstellt.

Das Problem hat übrigens auch Nagios 3.x auf FreeBSD (momentan /net-mgmt/nagios-devel/) und der Port-Maintainer möchte beide umstellen.

Irgendwie erschreckend, wenn der Port-Maintainer nicht mal das Changelog in der Nagios-Dokumentation kennt...
 
Na das ist doch mal eine Eklärung :rolleyes:
Wenigstens einer der die Doku liest... Danke dir.

Jetzt weiß ich wenigstens woran es liegt - und Nagios darf sich jetzt bei einer 100%igen Auslastung selbst neu starten :ugly:

In Richtung Performance hatte ich auch schon recherschiert, aber ich fand meine Konfiguration schon recht schonend. Außerdem habe ich keine Checks die auf Tage verteilt laufen und dann alle auf einmal losbrettern würden, sondern es läuft wie gesagt alles im 3-10 Minuten Abstand.
 
Mittlerweile ist /net-mgmt/nagios-devel/ (momentan bei Nagios 3.0-RC1) aktualisiert worden: http://www.freshports.org/net-mgmt/nagios-devel/
19 Jan 2008 19:44:29
Original commit files touched by this commit 3.0.r1_1
Link with libthr when available. This should fix the CPU consumption
problem.

PR: ports/119246
Submitted by: Jarrod Sayers (maintainer)
Approved by: garga (mentor)
Siehe auch http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/119246

Die stabile Version 2.x in http://www.freshports.org/net-mgmt/nagios ist aber leider immer noch auf dem alten Stand mit pthreads und dem 100% CPU-Last Bug. -_- Ich hoffe mal, dass der Port-Maintainer dort den Fix wie versprochen in Bälde nachreicht.
 
Zurück
Oben