Nagios Logo

Einführung


Tuning

Jetzt haben Sie Nagios endlich eingerichtet und lauffähig und nun wollen Sie wissen, wie man ein wenig daran drehen kann. Die Leistung von Nagios zu optimieren kann notwendig sein, wenn Sie eine große Zahl (> 1.000) von Hosts und Services haben. Hier ein paar Dinge, nach denen Sie schauen können, um Nagios zu optimieren...

Optimierungshinweise:


  1. Stellen Sie Performance-Statistiken mit MRTG dar. Um zu verfolgen, wie die Last Ihrer Nagios-Installation aussieht und welche Auswirkungen Ihre Konfigurationsänderungen darauf haben, sollten Sie verschiedene wichtige Statistiken mit MRTG darstellen. Das ist wirklich sehr, sehr sinnvoll, wenn es um die Leistungsoptimierung einer Nagios-Installation geht. Informationen, wie das zu tun ist, finden Sie hier.
  2. Benutzen Sie "Verbesserungen für große Installationen" (large installation tweaks). Das Aktivieren der use_large_installation_tweaks-Option kann Ihnen bessere Leistung bringen. Lesen Sie hier mehr darüber, was diese Option tut.

  3. Deaktivieren Sie Umgebungs-Makros. Makros werden Prüfungen, Benachrichtigungen, Eventhandlern usw. normalerweise über Umgebungsvariablen zur Verfügung gestellt. Das kann in einer großen Nagios-Installation zu einem Problem werden, weil es zusätzlichen Speicher (und wichtiger) mehr CPU verbraucht. Wenn Ihre Scripte nicht über Umgebungsvariablen auf Makros zugreifen (d.h., wenn Sie alle benötigen Makros in der Kommandozeile übergeben), dann brauchen Sie dieses Feature nicht. Sie können über die enable_environment_macros-Option einstellen, ob Makros als Umgebungsvariablen verfügbar sind.
  4. Prüfergebnis-Ernterhythmus (Check Result Reaper Frequency). Die check_result_reaper_frequency-Variable legt fest, wie oft Nagios prüfen soll, ob Host- und Service-Ergebnisse verarbeitet werden müssen. Die maximale Zeit, die es zur Verarbeitung solcher Ergebnisse benötigen darf, ist durch die maximale Erntezeit (max reaper time) festgelegt (siehe unten). Wenn Ihr Ernterhythmus zu hoch (zu selten) ist, könnten Sie hohe Latenzzeiten für Host- und Service-Prüfungen sehen.
  5. maximale Erntezeit (Max Reaper Time). Die max_check_result_reaper_time-Variable legt die maximale Zeit fest, die der Nagios-Daemon für die Verarbeitung der Ergebnisse von Host- und Service-Prüfungen verbringen darf, bevor er sich anderen Dingen zuwendet - wie z.B. dem Ausführen von neuen Host- und Service-Prüfungen. Ein zu hoher Wert kann zu hohen Latenzzeiten bei Ihren Host- und Service-Prüfungen führen. Ein zu niedriger Wert kann den gleichen Effekt haben. Wenn Sie zu hohe Latenzzeiten haben, dann passen Sie diesen Wert an und sehen Sie, welchen Effekt das hat. Graphisch dargestellte Statistiken helfen Ihnen bei der Auswertung der Auswirkungen.
  6. Anpassen der Pufferwerte. Gegebenenfalls müssen Sie den Wert der external_command_buffer_slots-Option anpassen. Die graphische Analyse mit MRTG (siehe oben) zeigt Ihnen, welche Werte Sie für diese Option nutzen sollten.

  7. Prüfen Sie Service-Latenzzeiten, um den besten Wert für die maximale Anzahl von gleichzeitigen Prüfungen zu ermitteln. Nagios kann die Anzahl von gleichzeitig ausgeführten Prüfungen durch die max_concurrent_checks-Option begrenzen. Das ist gut, weil es Ihnen etwas Kontrolle darüber gibt, wieviel Last Nagios auf Ihrem Überwachungsrechner erzeugt, aber es kann auch die Dinge verlangsamen. Wenn Sie für die Mehrzahl Ihrer Service-Prüfungen hohe Latenzzeiten sehen (> 10 oder 15 Sekunden), dann enthalten Sie Nagios Prüfungen vor, die es braucht. Das ist nicht der Fehler von Nagios - es ist Ihrer. Unter idealen Bedingungen hätten alle Service-Prüfungen eine Latenzzeit von 0, was bedeutet, dass alle Prüfungen zu der Zeit stattfinden, für die sie geplant sind. Allerdings ist es normal, dass einige Prüfungen kleine Latenzzeiten haben. Ich würde empfehlen, die niedrigste Zahl der meisten gleichzeitigen Prüfungen zu nehmen, wenn Sie Nagios mit der -s-Option starten und diesen Wert zu verdoppeln. Erhöhen Sie diesen Wert dann soweit, bis die durchschnittlichen Latenzzeiten für Service-Prüfungen ziemlich niedrig ist. Mehr Informationen zur Planung von Service-Prüfungen finden Sie hier.
  8. Nutzen Sie passive Prüfungen, wenn möglich. Der nötige Overhead, um die Ergebnisse von passiven Service-Prüfungen zu verarbeiten, ist viel niedriger als bei "normalen" aktiven Prüfungen, also machen Sie Gebrauch von dieser Information, wenn Sie eine Menge von Services überwachen. Es sollte angemerkt werden, dass passive Prüfungen nur dann wirklich sinnvoll sind, wenn Sie irgendeine externe Applikation haben, die überwachen oder berichten kann; wenn also Nagios all die Arbeit machen muss, ist das nicht hilfreich.
  9. Vermeiden Sie interpretierte Plugins. Etwas, was spürbar die Last Ihres Überwachungs-Hosts senkt, ist die Nutzung von kompilierten (C/C++, usw.) Plugins statt interpretierter Scripts (Perl, usw.). Während Perl und ähnliches einfach zu schreiben ist und gut läuft, kann die Tatsache, dass es bei jeder Ausführung kompiliert/interpretiert werden muss, zu einer spürbaren Steigerung der Last Ihres Überwachungs-Hosts führen, wenn Sie eine Menge von Service-Prüfungen haben. Wenn Sie Perl-Plugins nutzen wollen, dann überlegen Sie, ob Sie diese nicht mit perlcc(1) (einem Utility, das Teil der Standard-Perl-Distribution ist) zu einem richtigen Programm umwandeln oder Nagios mit eingebettetem Perl-Interpreter kompilieren (siehe unten).
  10. Nutzen Sie den eingebetteten Perl-Interpreter. Wenn Sie eine Menge von Perl-Scripten für Prüfungen benutzen, dann werden Sie vielleicht feststellen, dass das Kompilieren des eingebetteten Perl-Interpreters (embedded Perl interpreter) in das Nagios-Binary die Dinge beschleunigt.
  11. Optimieren Sie Host-Prüfbefehle. Wenn Sie Host-Zustände mit dem check_ping-Plugin prüfen, dann werden Sie feststellen, dass die Host-Prüfungen viel schneller durchgeführt werden, wenn Sie diese abbrechen. Statt einen max_attempts-Wert von 1 anzugeben und mit dem check_ping-Plugins 10 ICMP-Pakete an den Host zu schicken, wäre es viel schneller, den max_attempts-Wert auf 10 zu setzen und jedes Mal nur ein ICMP-Paket zu senden. Das liegt daran, dass Nagios den Zustand eines Hosts oft nach der Ausführung eines Plugins feststellen kann, so dass Sie die erste Prüfung so schnell wie möglich machen sollten. Diese Methode hat in einigen Situationen ihre Fallstricke (z.B. Hosts, die langsam reagieren, könnten als "down" angesehen werden), aber ich denke, dass Sie schnellere Host-Prüfungen sehen werden, wenn Sie sie benutzen. Eine weitere Möglichkeit wäre, statt check_ping ein schnelleres Plugin (z.B. check_fping) als host_check_command zu benutzen.
  12. Planen Sie regelmäßige Host-Prüfungen. Regelmäßige Host-Prüfungen zu planen kann tatsächlich die Leistung von Nagios steigern. Das liegt an der Art, wie die Zwischenspeicher-Prüflogik (cached check logic) arbeitet (siehe unten). Vor Nagios 3 führten regelmäßige Host-Prüfungen zu einer großen Leistungseinbuße. Das ist nicht länger der Fall, weil Host-Prüfungen parallel stattfinden - genau wie Service-Prüfungen. Um regelmäßige Prüfungen eines Hosts zu planen, setzen Sie die check_interval-Direktive in der Host-Definition auf einen Wert größer als Null.
  13. Aktivieren Sie zwischengespeicherte Host-Prüfungsergebnisse (cached host checks). Beginnend mit Nagios 3 können Host-Prüfungen nach Bedarf von der Zwischenspeicherung (caching) profitieren. Host-Prüfungen nach Bedarf werden ausgeführt, wenn Nagios einen Service-Zustandswechsel feststellt. Diese Prüfungen nach Bedarf werden ausgeführt, wenn Nagios wissen will, ob der mit dem Service verbundene Host den Zustand gewechselt hat. Durch die Aktivierung von zwischengespeicherten Host-Prüfungsergebnissen können Sie die Leistung optimieren. In einigen Fällen könnte Nagios in der Lage sein, den alten/zwischengespeicherten Zustand des Hosts zu benutzen, statt eine Host-Prüfung auszuführen. Das kann die Dinge beschleunigen und die Last des Überwachungsservers reduzieren. Damit zwischengespeicherte Prüfungen effektiv sind, müssen Sie regelmäßige Prüfungen für Ihre Hosts planen (siehe oben). Mehr Informationen zu zwischengespeicherten Prüfungen finden Sie hier.
  14. Nutzen Sie keine agressiven Host-Prüfungen. Solange Sie keine Probleme damit haben, dass Nagios Host-Erholungen nicht korrekt erkennt, würde ich empfehlen, die use_aggressive_host_checking-Option nicht zu aktivieren. Wenn diese Option abgeschaltet ist, werden Host-Prüfungen viel schneller ausgeführt, was zu schnellerer Ausführung von Service-Prüfungen führt. Allerdings können Host-Erholungen unter bestimmten Umständen übersehen werden, wenn sie ausgeschaltet ist. Wenn sich z.B. der Host erholt, aber alle mit ihm verbundenen Services in einem nicht-OK-Zustand bleiben (und nicht zwischen verschiedenen nicht-OK-Zuständen "kippeln"), dann könnte Nagios übersehen, dass sich der Host erholt hat. Einige wenige Leute könnten diese Option aktivieren, aber die Mehrheit nicht und ich würde empfehlen, sie nicht zu aktivieren, solange Sie nicht glauben, dass Sie sie benötigen...
  15. Optimierung externer Befehle. Wenn Sie eine Menge externer Befehle verarbeiten (d.h. passive Prüfungen in einer verteilten Umgebung, dann wollen Sie vielleicht die command_check_interval-Variable auf -1 setzen. Das bewirkt, dass Nagios so oft wie möglich auf externe Befehle prüft. Sie sollten außerdem überlegen, die Anzahl verfügbarer externer Befehlspuffer zu erhöhen. Puffer werden benutzt, um externe Befehle zu speichern, die (durch einen separaten Thread) aus dem external command file gelesen werden, bevor sie vom Nagios-Daemon verarbeitet werden. Wenn Ihr Nagios-Daemon eine Menge von passiven Prüfungen oder externen Befehlen empfängt, dann könnten Sie in eine Situation kommen, in der immer alle Puffer voll sind. Das führt zu blockierenden Kind-Prozessen (externe Scripte, NSCA-Daemon usw.), wenn sie versuchen, in das "external command file" zu schreiben. Ich würde sehr empfehlen, dass Sie die Nutzung von externen Befehlspuffern graphisch mit Hilfe von MRTG und dem nagiostats-Utility darstellen, wie es hier beschrieben ist, so dass Sie die typische externe Befehlspuffernutzung Ihrer Nagios-Installation sehen.
  16. Optimieren Sie die Hardware für maximale Leistung. Hinweis: Hardware-Leistung sollte kein Thema sein, solange Sie nicht 1) Tausende von Services überwachen, 2) eine Menge von Nachverarbeitung von Performance-Daten usw. machen. Ihre Systemkonfiguration und Ihre Hardware-Ausstattung werden direkt beeinflussen, was Ihr Betriebssystem leistet, so dass sie beeinflussen, was Nagios leistet. Die häufigste Hardware-Optimierung betrifft die Festplatte(n). CPU und Speichergeschwindigkeit sind offensichtliche Faktoren, die die Leistung beeinflussen, aber der Plattenzugriff wird Ihr größter Flaschenhals sein. Speichern Sie Plugins, das Status-Log usw. nicht auf langsamen Platten (d.h. alte IDE-Platten oder NFS-Mounts). Wenn Sie sie haben, dann nutzen Sie UltraSCSI- oder schnelle IDE-Platten. Ein wichtiger Hinweis für IDE/Linux-Benutzer ist, dass viele Linux-Installationen nicht versuchen, den Plattenzugriff zu optimieren. Wenn Sie die Plattenzugriffsparameter nicht ändern (z.B. mit einem Utility wie hdparam), werden Sie eine Menge der schnellen Features der neuen IDE-Platten verlieren.

Siehe auch Siehe auch: Verbesserungen für große Installationen, Schnellstartoptionen, graphische Darstellung von Performance-Informationen

English Deutsch 日本語

Inhaltsverzeichnis