Icinga

7.18. Benutzen des Embedded Perl Interpreters

7.18.1. Vorteile
7.18.2. Nachteile
7.18.3. Benutzung des eingebetteten Perl-Interpreters
7.18.4. Icinga mit eingebettetem Perl kompilieren
7.18.5. Plugin-spezifische Benutzung des Perl-Interpreters
7.18.6. Plugins für die Nutzung mit Embedded Perl entwickeln

Einführung

Icinga kann für die Unterstützung eines eingebetteten Perl-Interpreters (embedded perl interpreter) kompiliert werden. Dies erlaubt es Icinga, Perl-Plugins effizienter als sonst auszuführen, also mag es interessant sein, wenn Sie sich viel auf Plugins verlassen, die in Perl geschrieben sind.

Ohne den eingebetteten Perl-Interpreter führt Icinga Perl- (und andere) Plugins durch "forking" und ausführen als einen externen Befehl aus. Wenn der eingebettete Perl-Interpreter benutzt wird, kann Icinga Perl-Plugins durch einen einfachen Library-Call ausführen.

Hinweis: Der Perl-Interpreter arbeitet mit allen Perl-Scripten, die Icinga ausführt - nicht nur Plugins. Diese Dokumentation behandelt den eingebetteten Perl-Interpreter in Verbindung mit Plugins für Host- und Service-Prüfungen, aber sie trifft genauso auf andere Arten von Perl-Scripten zu, die Sie vielleicht für andere Arten von Befehlen benutzen (z.B. Benachrichtigungs-Scripte, Eventhandler-Scripte usw.).

Stephen Davis hat den originalen eingebetteten Perl-Interpreter-Code vor einigen Jahren beigetragen. Stanley Hopcroft war die erste Person, die geholfen hat, den eingebetteten Perl-Interpreter-Code zu verbessern und die die Vor- und Nachteile bei der Benutzung kommentiert hat. Er hat auch verschiedene hilfreiche Hinweise zur Erstellung von Perl-Plugins gegeben, die sauber mit dem eingebetteten Interpreter arbeiten.

Es sollte angemerkt werden, dass sich "ePN" - wie in dieser Dokumentation benutzt - auf "embedded Perl Icinga" bezieht, oder wenn Sie das bevorzugen, Icinga mit eingebettetem Perl-Interpreter.

7.18.1. Vorteile

Einige Vorteile von ePN (embedded Perl Icinga) umfassen:

7.18.2. Nachteile

Die Nachteile von ePN (embedded Perl Icinga) sind ziemlich die gleichen wie bei Apache mod_perl (d.h. Apache mit einem eingebetteten Interpreter) verglichen mit einem schlichten Apache:

7.18.3. Benutzung des eingebetteten Perl-Interpreters

Wenn Sie den eingebetteten Perl-Interpreter benutzen wollen, um Ihre Perl-Plugins und Scripts auszuführen, dann lesen Sie hier, was Sie tun müssen:

  1. Kompilieren Sie Icinga mit Unterstützung für den eingebetteten Perl-Interpreter (Anweisungen s.u.).

  2. aktivieren Sie die enable_embedded_perl-Option in der Hauptkonfigurationsdatei.

  3. setzen Sie die use_embedded_perl_implicitly-Option entsprechend Ihren Anforderungen. Diese Option legt fest, ob der Perl-Interpreter per Default für einzelne Perl-Plugins und Scripts benutzt werden sollte.

  4. Optional sollten Sie bei verschiedenen Perl-Plugins und Scripts die Ausführung durch den eingebetteten Perl-Interpreter aktivieren oder deaktivieren. Das kann nützlich sein, wenn bestimmte Perl-Scripte Probleme bei der Ausführung mit dem Perl-Interpreter haben. Beachten Sie die Anweisungen weiter unten für mehr Informationen, wie das zu tun ist.

7.18.4. Icinga mit eingebettetem Perl kompilieren

Wenn Sie den eingebetteten Perl-Interpreter benutzen möchten, müssen Sie zuerst Icinga mit der Unterstützung dafür kompilieren. Um dies zu tun, starten Sie einfach das configure-Script zusätzlich mit der --enable-embedded-perl -Option. Wenn Sie aktivieren wollen, dass der Perl-Interpreter intern kompilierte Scripts in einem Cache ablegen soll, dann nutzen Sie die --with-perlcache -Option. Beispiel:

 ./configure --enable-embedded-perl --with-perlcache  otheroptions... 

Sobald Sie das configure-Script mit den neuen Optionen ausgeführt haben, müssen Sie Icinga erneut kompilieren.

Paket-Bauer können eine andere Option nutzen, um das Verzeichnis der p1.pl Datei anzugeben:

 ./configure --with-p1-file-dir=<path>

7.18.5. Plugin-spezifische Benutzung des Perl-Interpreters

Sie können angeben, welche Perl-Plugins oder Scripts mit dem eingebetteten Perl-Interpreter ablaufen sollen und welche nicht. Das ist besonders dann nützlich, wenn Sie Perl-Scripte haben, die nicht sauber mit dem Perl-Interpreter laufen.

Um Icinga explizit mitzuteilen, ob der Perl-Interpreter benutzt werden soll oder nicht, fügen Sie Ihrem Perl-Script/Plugin einen der folgenden Einträge hinzu...

Um Icinga mitzuteilen, den Perl-Interpreter für ein bestimmtes Script zu nutzen, fügen Sie dem Perl-Script diese Zeile hinzu:

 # icinga: +epn

Um Icinga mitzuteilen, den Perl-Interpreter für ein bestimmtes Script NICHT zu nutzen, fügen Sie dem Perl-Script diese Zeile hinzu:

 # icinga: -epn

Eine der beiden Zeilen muss innerhalb der ersten zehn Zeilen stehen, damit sie von Icinga erkannt wird.

Hinweis: Wenn Sie nicht explizit die oben genannte Methode nutzen, um Icinga mitzuteilen, den Perl-Interpreter für ein einzelnes Plugin zu nutzen, wird Icinga eine Entscheidung für Sie treffen. Dieser Entscheidungsprozess wird von der use_embedded_perl_implicitly-Variable kontrolliert. Wenn der Wert auf 1 gesetzt ist, werden alle Perl-Plugins/Scripts (bei denen nicht explizit der ePN aktiviert/deaktiviert ist) mit dem Perl-Interpreter ausgeführt. Wenn der Wert auf 0 gesetzt ist, werden sie NICHT mit dem Perl-Interpreter ausgeführt.

7.18.6. Plugins für die Nutzung mit Embedded Perl entwickeln

Informationen über die Entwicklung von Plugins zur Nutzung mit dem eingebetteten Perl-Interpreter finden Sie hier.