Icinga

12.3. Konfiguration der IDOUtils

12.3.1. IDOMOD Konfigurationsoptionen
12.3.2. IDO2DB Konfigurationsoptionen
[Anmerkung] Anmerkung

Dies sollte als "in Bearbeitung" angesehen werden.

Änderungen an den Core-Dateien

Änderungen in idomod.cfg

Hinweise zu Performance und Fehlersuche

Änderungen in ido2db.cfg

idomod.cfg Konfigurationsoptionen

ido2db.cfg Konfigurationsoptionen

Core

Die Konfiguration beginnt mit dem Setzen der Direktive "broker_options" in icinga.cfg. In den meisten Fällen ist dieser Wert in der Datei bereits vorhanden, muss aber ggf. aktiviert werden (durch das Entfernen des führenden Hash-Zeichens).

[Wichtig] Wichtig

Bitte beachten Sie, dass diese Einstellung alle Event-Broker-Module beeinflusst! (Details siehe http://www.mail-archive.com/nagios-users@lists.sourceforge.net/msg24002.html).

Aktivieren Sie das idomod-Event-Broker-Modul. Bitte beachten Sie, dass die folgende Modul-Definition unter normalen Umständen bereits im modules-Unterverzeichnis existiert, so dass keine Notwendigkeit besteht, die Hauptkonfigurationsdatei zu ändern.

Falls nicht, dann kann die Definition des Broker-Moduls mit Hilfe einer module-Definition erfolgen, die der folgenden ähnelt:

 define module {
    module_name   ido_mod
    path          /usr/local/icinga/lib/idomod.so
    module_type   neb
    args          config_file=/usr/local/icinga/etc/idomod.cfg
 }

idomod.cfg

Bitte überprüfen Sie die Einstellungen, bevor Sie Icinga (neu)starten.

Die Direktive "output_type" sollte auf "unixsocket" (default) oder "tcpsocket" gesetzt werden, abhängig davon, ob der IDO2DB-Daemon auf einen lokalen oder entfernten Rechner läuft. Bitte setzen Sie den Wert von "output" entsprechend (und außerdem "tcp_port", falls zutreffend). Die anderen Optionen sind auf Werte gesetzt, die für einen ersten Betrieb funktionieren. Falls es während der Laufzeit Schwierigkeiten gibt, dann sollten Sie einen Blick auf die folgenden Zeilen werfen:

Hinweise zu Performance und Fehlersuche

ido2db.cfg

12.3.1. IDOMOD Konfigurationsoptionen

Instanzname

Format:

instance_name=<name>

Example:

instance_name=default

Diese Option legt den "Namen" fest, der mit dieser Icinga-Instanz verbunden ist und wird benutzt, um Daten von mehreren Instanzen zu unterscheiden. Standard ist 'default' (ohne Anführungszeichen).

Ausgabetyp

Format:

output_type=<file>|<tcpsocket>|<unixsocket>

Beispiel:

output_type=unixsocket

Diese Option legt fest, welchen Typ von "Abfluss" das IDO-NEB-Modul für die Datenausgabe nutzen soll.

Mögliche Werte sind:

Ausgabe

Format:

output=<ip address>|<file name>

Beispiel:

output=/usr/local/icinga/var/ido.sock

Diese Option legt Namen und Pfad der Datei oder des UNIX-Domain-Socket fest, wohin die Daten geschickt werden sollen, wenn als Ausgabetyp "file" oder "unixsocket" angegeben wurde. Wenn der Ausgabetyp "tcpsocket" ist, dann wird diese Option dazu genutzt, die IP-Adresse oder den FQDN des Hosts anzugeben, mit dem sich das Modul verbinden soll, um die Daten zu senden.

TCP-port

Format:

tcp_port=<n>

Beispiel:

tcp_port=5668

Diese Option legt fest, mit welchem Port sich das Modul verbinden soll, um die Daten zu senden. Diese Option ist nur gültig, wenn als Ausgabetype "tcpsocket" angegeben wurde.

Verschlüsselung benutzen

Format:

use_ssl=

Beispiel:

use_ssl=0

Diese Option legt fest, ob das Modul SSL benutzen wird, um den Netzwerkverkehr zwischen Modul und ido2db-Daemon zu verschlüsseln. Beide Seiten müssen dieses Feature aktivieren, das von SSL-Bibliotheken wie openssl oder Kerberos abhängt.

Diese Option ist nur gültig, wenn als Ausgabetype "tcpsocket" angegeben wurde.

Größe des Ausgabepuffers

Format:

output_buffer_items=<n>

Beispiel:

output_buffer_items=5000

Diese Option legt die Größe des Ausgabepuffers fest, der verhindern soll, dass Daten bei einem vorübergehenden Verbindungsabbruch zum "Abfluss" verlorengehen. Die angegebene Zahl gibt die Zahl von Zeilen (jeweils mit variabler Länge) an, die gepuffert werden.

Pufferdatei

Format:

buffer_file=<file name>

Beispiel:

buffer_file=/usr/local/icinga/var/idomod.tmp

Diese Option legt den Namen einer Datei fest, die zur Speicherung von gepufferten Daten benutzt wird, die nicht an den IDO2DB-Daemon gesendet werden konnten, während Icinga heruntergefahren wird. Vor dem Ende wird das IDO-NEB-Modul alle gepufferten Daten in diese Datei schreiben, damit sie später verarbeitet werden können. Wenn Icinga (neu)startet, wird das IDO-NEB-Modul den Inhalt dieser Datei lesen und ihn an den IDO2DB-Daemon zur weiteren Verarbeitung senden.

Datenrotationsintervall

Format:

file_rotation_interval=<seconds>

Beispiel:

file_rotation_interval=14400

Diese Option legt fest, wie oft (in Sekunden) die Datei von Icinga rotiert wird. Dateirotation wird von Icinga erledigt, indem der durch die "file_rotation_command"-Option angegebene Befehl ausgeführt wird. Diese Option hat keine Auswirkung, wenn als Ausgabetyp ein Socket angegeben wurde.

Dateirotationsbefehl

Format:

file_rotation_command=<command>

Beispiel:

file_rotation_command=rotate_ido_log

Diese Option gibt den Befehl an (wie in Icinga definiert), der zur Rotation der Ausgabedatei benutzen werden soll im Intervall, das durch die Option "file_rotation_interval" angegeben wurde. Diese Option hat keine Auswirkung, wenn als Ausgabetyp ein Socket angegeben wurde.

Die Datei 'misccommands.cfg' enthält eine Beispiel-command-Definition, die Sie zur Rotation der Log-Datei nutzen können.

Dateirotations-Timeout

Format:

file_rotation_timeout=<seconds>

Beispiel:

file_rotation_timeout=60

Diese Option legt die maximale Anzahl von Sekunden fest, die der Rotationsbefehl laufen darf, bevor er abgebrochen wird.

Reconnect-Intervall

Format:

reconnect_interval=<seconds>

Beispiel:

reconnect_interval=15

Diese Option legt fest, in welchem Intervall (in Sekunden) das IDO-NEB-Modul versuchen wird, einen Verbindungsaufbau durchzuführen, wenn die Verbindung zur Ausgabedatei oder zum Socket verloren gegangen ist.

Reconnect-Warnintervall

Format:

reconnect_warning_interval=<seconds>

Beispiel:

reconnect_warning_interval=15

Diese Option legt fest, in welchem Intervall (in Sekunden) eine Warnmeldung in die Icinga-Protokolldatei geschrieben wird, wenn die Verbindung zur Ausgabedatei oder zum Socket nicht wieder aufgebaut werden kann.

Datenverarbeitungsoptionen

Format:

data_processing_options=<n>

Beispiel:

data_processing_options=-1

[Achtung] Achtung

Ändern Sie nicht den Wert dieser Option, wenn Sie die Auswirkungen nicht kennen!!!

Diese Option lefgt fest, welche Daten vom IDO-NEB-Modul verarbeitet werden.

Lesen Sie den Source-Code (module/idoutils/include/idomod.h) und suchen Sie nach "IDOMOD_PROCESS_", um festzulegen, welche Werte hier zu benutzen sind.

Die Werte aus dem Source-Code sollten addiert werden, um den benötigten Wert zu ermitteln. Der Wert "-1" bewirkt, dass alle Daten verarbeitet werden.

Generell stehen die folgenden Werte zur Berechnung zur Verfügung:

 #define IDOMOD_PROCESS_PROCESS_DATA                   1
 #define IDOMOD_PROCESS_TIMED_EVENT_DATA               2
 #define IDOMOD_PROCESS_LOG_DATA                       4
 #define IDOMOD_PROCESS_SYSTEM_COMMAND_DATA            8
 #define IDOMOD_PROCESS_EVENT_HANDLER_DATA             16
 #define IDOMOD_PROCESS_NOTIFICATION_DATA              32
 #define IDOMOD_PROCESS_SERVICE_CHECK_DATA             64
 #define IDOMOD_PROCESS_HOST_CHECK_DATA                128
 #define IDOMOD_PROCESS_COMMENT_DATA                   256
 #define IDOMOD_PROCESS_DOWNTIME_DATA                  512
 #define IDOMOD_PROCESS_FLAPPING_DATA                  1024
 #define IDOMOD_PROCESS_PROGRAM_STATUS_DATA            2048
 #define IDOMOD_PROCESS_HOST_STATUS_DATA               4096
 #define IDOMOD_PROCESS_SERVICE_STATUS_DATA            8192
 #define IDOMOD_PROCESS_ADAPTIVE_PROGRAM_DATA          16384
 #define IDOMOD_PROCESS_ADAPTIVE_HOST_DATA             32768
 #define IDOMOD_PROCESS_ADAPTIVE_SERVICE_DATA          65536
 #define IDOMOD_PROCESS_EXTERNAL_COMMAND_DATA          131072
 #define IDOMOD_PROCESS_OBJECT_CONFIG_DATA             262144
 #define IDOMOD_PROCESS_MAIN_CONFIG_DATA               524288
 #define IDOMOD_PROCESS_AGGREGATED_STATUS_DATA         1048576
 #define IDOMOD_PROCESS_RETENTION_DATA                 2097152
 #define IDOMOD_PROCESS_ACKNOWLEDGEMENT_DATA           4194304
 #define IDOMOD_PROCESS_STATECHANGE_DATA               8388608
 #define IDOMOD_PROCESS_CONTACT_STATUS_DATA            16777216
 #define IDOMOD_PROCESS_ADAPTIVE_CONTACT_DATA          33554432
 #
 #define IDOMOD_PROCESS_EVERYTHING                     67108863
 #
 # You may use the Online Calculator by Gerhard Lausser:
 # http://labs.consol.de/nagios/ndo-data-processing-options/
 # (please note that there is a checkbox for everything!)
 #
 # The default setting will remove everything not used by default.
 #       TIMED_EVENT_DATA        (-2)
 #       SERVICE_CHECK_DATA      (-64)
 #       HOST_CHECK_DATA         (-128)
 #
 # 67108863-(2+64+128) = 67108863-194 = 67108669

 data_processing_options=67108669

 # If you are planning to use NagVis you may want to use the following setting:
 #
 #data_processing_options=4061953
 #
 # You may have to experiment in your environment and find the best value yourself! 

Konfigurationsausgabeoptionen

Format:

config_output_options=<0|1|2|3>

Beispiel:

config_output_options=2

Diese Option legt fest, welche Arten der Icinga-Konfigurationsdaten vom IDO-NEB-Modul ausgegeben werden. Die Werte werden addiert. Hinweis: "2" ist der bevorzugte Wert.

Mögliche Werte sind:

Debug-Level

Format:

debug_level=<-1|0|1|2>

Beispiel:

debug_level=0

Diese Option legt fest, wieviel (falls überhaupt) Debugging-Informationen in die Debug-Datei geschrieben werden. Addieren Sie die Werte, um mehrere Arten von Informationen zu erhalten.

Mögliche Werte sind:

Debug-Ausführlichkeit

Format:

debug_verbosity=<0|1|2>

Beispiel:

debug_verbosity=1

Diese Option legt fest, wie ausführlich die Debug-Protokollausgaben sein werden.

Mögliche Werte sind:

Name der Debug-Datei

Format:

debug_file=<file name>

Beispiel:

debug_file=/usr/local/icinga/var/idomod.debug>

Diese Option legt fest, an welche Stelle der Daemon die Debugging-Informationen schreiben soll.

Maximale Größe der Debug-Datei

Format:

max_debug_file_size=<bytes>

Beispiel:

max_debug_file_size=100000000

Diese Option legt die maximale Größe (in Bytes) der Debug-Protokolldatei fest. Falls die Datei diese Größe überschreitet, wird sie in eine Datei mit der Endung .old umbenannt. Eine bereits bestehende Datei mit dieser Endung wird automatisch gelöscht. Dies soll dazu beitragen, dass die Dateisystemauslastung während des Debugging nicht außer Kontrolle gerät.

Ausgeben des Zustands von benutzerdefinierten Variablen

Format:

dump_customvar_status=0|1

Example:

dump_customvar_status=1

Benutzerdefinierte Variablen werden als benötigte Informationen sowohl beim Core-Start als auch während der Laufzeit (weil es Änderungen durch externe Befehle geben könnte) ausgegeben. Weil diese Änderungen bei jeder Host/Service/Kontakt-Statusaktualisierung passieren können, ohne dass es eine Möglichkeit gibt, diese durch "data_processing_options"-Einstellungen zu filtern, wurde diese Konfigurationsoption hinzugefügt. In den meisten Situationen werden diese Informationen nicht benötigt, so dass die Option standardmäßig deaktiviert ist.

12.3.2. IDO2DB Konfigurationsoptionen

Sperrdatei

Format:

lock_file=<file name>

Beispiel:

lock_file=ido2db.lock

Dies ist die Sperrdatei, die IDO2DB benutzen wird, um die PID-Nummer zu speichern, wenn es im Daemon-Modus läuft.

IDO2DB-Benutzer/Gruppe

Format:

ido2db_user=<user name>

ido2db_group=<group name>

Beispiel:

ido2db_user=icinga ido2db_group=icinga-cmd

Diese Optionen legen Benutzer/Gruppe fest, mit denen der Daemon läuft. Sie können für jede Option jeweils eine Zahl (uid/gid) oder einen Namen angeben.

Socket-Typ

Format:

socket_type=<unix|tcp>

Beispiel:

socket_type=unix

Diese Option legt fest, welchen Socket-Typ der Daemon anlegt, um Verbindungen zu akzeptieren.

Socket-Name

Format:

socket_name=<file name>

Beispiel:

socket_name=/usr/local/icinga/rw/ido.sock

Diese Option legt den Namen und Pfad des UNIX-Domain-Socket fest, den der Daemon anlegt, um Verbindungen zu akzeptieren. Diese Option ist nur gültig, wenn der Socket-Typ den Wert "unix" hat.

Socket Permissions

Format:

socket_perm=<n>

Beispiel:

socket_perm=0755

Diese Option setzt die Berechtigungen auf den UNIX-Domain- Socket. Sie ist nur gültig wenn als Socket-Typ "unix" gewählt wurde. Standardmäßig werden die Berechtigungen auf 0755 gesetzt.

TCP-Port

Format:

tcp_port=<n>

Beispiel:

tcp_port=5668

Diese Option legt fest, mit welchem Port sich das Modul verbindet, um Ausgaben zu senden. Diese Option ist nur gültig, wenn der Socket-Typ den Wert "tcp" hat.

Verschlüsselung benutzen

Format:

use_ssl=

Beispiel:

use_ssl=0

Diese Option legt fest, ob das Modul SSL benutzen wird, um den Netzwerkverkehr zwischen Modul und ido2db-Daemon zu verschlüsseln. Beide Seiten müssen dieses Feature aktivieren, das von SSL-Bibliotheken wie openssl oder Kerberos abhängt.

Diese Option ist nur gültig, wenn als Ausgabetype "tcp" angegeben wurde.

Libdbi- Treiber Verzeichnis

Format:

libdbi_driver_dir=@LIBDBIDRIVERDIR@

Beispiel:

libdbi_driver_dir=/usr/local/lib/dbd

[Anmerkung] Anmerkung

!!!EXPERIMENTAL!!! Diese Option ist nur valid wenn libdbi als Datenbankabstraktionsschicht einkompiliert wurde (also nicht Oracle!). Normalerweise findet libdbi den richtigen Pfad während der Kompilierung. Wenn Sie den Pfad ändern möchten, aktivieren Sie diese Option und ändern Sie die Pfadangabe.

Datenbank-Server-Typ

Format:

db_servertype=<type>

Beispiel:

db_servertype=mysql

Diese Option legt fest, mit welchem Typ von DB-Server sich der Daemon verbinden soll. Unterstützte Datenbanken sind MySQL, PostgreSQL und Oracle

Mögliche Werte sind:

Datenbank-Host

Format:

db_host=<host name|ip address>

Beispiel:

db_host=localhost

Diese Option legt fest, auf welchem Host der DB-Server läuft.

MySQL: Der Hostname oder die IP-Adresse des MySQL-Datenbank-Servers. Benutzen Sie eine leere Zeichenkette oder "localhost", um mit einem MySQL-Server auf der lokalen Maschine zu verbinden.

PostgreSQL: Wenn dies mit einem Slash (/) beginnt, dann handelt es sich um Unix-Domain-Kommunikation anstatt um TCP/IP-Kommunikation; der Wert ist der Name des Verzeichnisses, in dem die Socket-Datei angelegt wird. Das Standardverhalten, wenn kein Host angegeben ist, besteht darin, sich mit einem Unix-Domain-Socket in /tmp zu verbinden (bzw. das Verzeichnis, das bei der Erstellung von PostgreSQL angegeben wurde).

Oracle: Diese Einstellung wird ignoriert.

Datenbank-Port

Format:

db_port=<n>

Beispiel:

db_port=3306

Diese Option gibt den Port an, auf dem der DB-Server läuft.

Übliche Werte sind:

MySQL: Der Port auf der entfernten Maschine, zu dem verbunden werden soll.

PostgreSQL: Der Port auf dem Datenbank-Host, oder die Namenserweiterung der Socket-Datei bei Unix-Domain-Verbindungen.

Oracle: Die ocilib wird diesen Wert ignorieren, Sie müssen daher die tnsnames.ora anpassen.

Datenbank-Socket

Format:

db_socket=<file name>

Beispiel:

db_socket=/var/lib/mysql/mysql.sock

Die Direktive "db_socket" erlaubt es, eine abweichende Socket-Position anzugeben. Diese wird an libdbi-MySQL als mysql_unix_socket weitergeben, während PostgreSQL den Port überschreibt und ocilib-Oracle diese Einstellung ignoriert.

[Anmerkung] Anmerkung

Diese Einstellung überschreibt db_port und macht den Wert dadurch nutzlos!

Datenbankname

Format:

db_name=<name>

Beispiel:

db_name=icinga

Diese Option gibt den Namen der Datenbank an, die benutzt werden soll.

[Anmerkung] Anmerkung

Oracle mit ocilib setzt voraus, dass tnsnames.ora mit Host, Port und Datenbankinformation gefüllt ist. Dann können Sie eins der folgenden benutzen:

  • //DBSERVER/SID

  • SID

Datenbank-Präfix

Format:

db_prefix=<name>

Beispiel:

db_prefix=icinga_

Legt den Präfix fest (falls überhaupt), der Tabellennamen vorangesetzt werden soll. Wenn Sie den Tabellenpräfix ändert, dann müssen SIe auch das SQL-Skript zur Erzeugung der Datenbank anpassen!

[Anmerkung] Anmerkung

Oracle wird diesen Präfix ignorieren, weil die Länge von Tabellennamen auf 30 Stellen begrenzt ist.

Datenbank-Benutzer/Passwort

Format:

db_user=<user name>

db_pass=<password>

Beispiel:

db_user=icinga db_pass=icinga

Dies sind Benutzername/Passwort, die für die Authenfizierung an der DB verwendet werden. Der Benutzer benötigt mindestens SELECT-, INSERT-, UPDATE- und DELETE-Privilegien auf der Datenbank.

Debug level

Format:

debug_level=<-1|0|1|2>

Beispiel:

debug_level=0

Diese Option legt fest, wieviel (falls überhaupt) Debugging-Informatioen in die Debug-Datei geschrieben werden. Addieren Sie die Werte, um mehrere Arten von Informationen zu erhalten.

Mögliche Werte sind:

Debug verbosity

Format:

debug_verbosity=<0|1|2>

Beispiel:

debug_verbosity=1

Diese Option legt fest, wie ausführlich die Debug-Protokollausgaben sein werden.

Mögliche Werte sind:

Debug file name

Format:

debug_file=<file name>

Beispiel:

debug_file=/usr/local/icinga/var/idomod.debug>

Diese Option legt fest, an welche Stelle der Daemon die Debugging-Informationen schreiben soll.

Maximum debug file size

Format:

max_debug_file_size=<bytes>

Beispiel:

max_debug_file_size=100000000

Diese Option legt die maximale Größe (in Bytes) der Debug-Protokolldatei fest. Falls die Datei diese Größe überschreitet, wird sie in eine Datei mit der Endung .old umbenannt. Eine bereits bestehende Datei mit dieser Endung wird automatisch gelöscht. Dies soll dazu beitragen, dass die Dateisystemauslastung während des Debugging nicht außer Kontrolle gerät.

Lesbarer Debug-Zeitstempel

Format:

debug_readable_timestamp=<0|1>

Beispiel:

debug_readable_timestamp=0

Diese Option erlaubt Ihnen, einen (menschlich) lesbaren statt des Standard-Unix-Zeitstempels auszugeben.

Mögliche Werte sind:

OCI-Fehler nach Syslog

Format:

oci_errors_to_syslog=<0|1>

Beispiel:

oci_errors_to_syslog=0

IDO2DB registriert eine Fehlerbehandlungsroutine in ocilib, die per Default alle Meldungen in die Debug-Protokolldatei und ins Syslog schreibt. Beim Wert 0 wird die Ausgabe ins Syslog deaktiviert, so dass die Meldungen nur in die Debug-Protokolldatei ausgegeben werden (falls debug_level entsprechend gesetzt ist).

Oracle-Trace-Level

Format:

oracle_trace_level=<0|1|4|8|12>

Beispiel:

oracle_trace_level=0

Diese Einstellung aktiviert einen Oracle-Session-Trace für jede ido2db-Verbindung mit Hilfe von trace event. Der Wert muss einen der momenten unterstützten Werte (1,4,8,12) oder 0 für ausgeschaltet. Dies erfordert explizit das "alter session"-Privileg, Select-Rechte auf v$session und v$process werden empfohlen.

Mögliche Werte sind: