WORK IN PROGRESS
ndo2fs ist als Debugger für ndomod.o entstanden und nimmt die Daten von ndomod.o entweder über TCP- oder UNIX-Sockets entgegen. Ziel von ndo2fs ist es, die Nagios Daten strukturiert im Filesystem abzulegen. Dabei wurde darauf geachtet, dass die Daten mit einfachen Mitteln zu verarbeiten sind.
Zusätzlich arbeite ich an einer PHP-Klasse, die den Zugriff auf die Daten von ndo2fs regelt. Dazu aber mehr unter ndo2fs-php.
ndo2fs arbeitet wie ndo2db, ist jedoch im Gegensatz zu ndo2db in Perl geschrieben und speichert die Daten im Filesystem. Das ist bereits alles.
Die aktuelle Version ist im GIT Repository unter git.nagiosprojects.org zu finden.
Aktuelle Snapshots aus dem GIT Repository:
Die NagVis Entwickler Lars Michelsen und Michael Lübben sowie der check_multi Entwickler Matthias Flacke liefern zur Zeit wertvollen Input.
Bei Fragen bitte einfach eine Mail an pitchfork@pnp4nagios.org
Noch keine! Es ist ein einzelnes Perl Script.
Mit Version 0.1.13 wird das Perl Modul JSON::XS zum erstellen der JSON Files benötigt. Das Modul ist leider erst ab Debian Lenny als Paket verfügbar. Debian Etch User installieren das Modul über CPAN via
perl -MCPAN -e install JSON::XS
Die von ndomod zu verarbeitenden Daten lassen sich über die “data_processing_options” in der ndomod.cfg minimieren. ndo2fs verarbeitet nur einen Teil der anfallenden Daten.
PROCESS_HOST_CHECK_DATA 128
PROCESS_STATECHANGE_DATA 8388608
PROCESS_HOST_STATUS_DATA 4096
PROCESS_CONTACT_STATUS_DATA 16777216
PROCESS_SERVICE_STATUS_DATA 8192
PROCESS_COMMENT_DATA 256
PROCESS_MAIN_CONFIG_DATA 524288
PROCESS_ACKNOWLEDGEMENT_DATA 4194304
PROCESS_RETENTION_DATA 2097152
PROCESS_OBJECT_CONFIG_DATA 262144
PROCESS_DOWNTIME_DATA 512
PROCESS_PROGRAM_STATUS_DATA 2048
PROCESS_SERVICE_CHECK_DATA 64
PROCESS_PROCESS_DATA 1
data_processing_options = 32259009
1,4 Mio Zeilen entsprechen 10 Minuten Daten auf meinem Prod System.
wc -l ndo.dat 1406535 ndo.dat
Diese Daten habe ich via NetCat an ndo2fs übergeben.
time cat ndo.dat | nc -q1 -n 127.0.0.1 5668 real 0m19.561s user 0m0.004s sys 0m0.064s
Dies ergibt 67MB Daten im ndo2fs Verzeichnis
du -s -h /tmp/ndo2fs 67M /tmp/ndo2fs
Das Ergebnis stammt von einer Debian 4 VM auf meinem MacBook Pro.
Die Daten werden im Filesystem im JSON-Format gespeichert. JSON steht für ”JavaScript Object Notation”, aber keine Angst, es gibt genügend einfach zu verwendende Parser.
Beispiel PHP5:
<?php $in = '/tmp/ndo2fs/VOLATILE/HOSTS/localhost/http/STATUS'; $data = file_get_contents($in); $out = json_decode($data); var_dump($out); ?>
Angenommen, /tmp/ndo2fs wird als Basisverzeichnis verwendet, so findet man nach dem Start von ndo2fs dort zwei Unterverzeichnisse.
Das Verzeichnis VOLATILE enthält flüchtige Daten, die beim Start von Nagios neu geschrieben werden. VOLATILE kann somit auf ein TMPFS ausgelagert werden. PERSISTENT enthält dagegen Daten, die zur Laufzeit von Nagios entstehen und die über Neustarts hinweg erhalten bleiben.
Die nächste Ebene bildet die Nagios-Instanz. Für jede Nagios-Instanz wird es hier ein Verzeichnis mit dem entsprechenden Namen geben. Im Folgenden wird die Instanz <default> verwendet.
Unterhalb von VOLATILE/default/ befinden sich somit die Daten der Instanz “default”.
Unterhalb von PERSISTENT/default/ befinden sich Daten, die zur Nagios-Laufzeit ermittelt, aber nicht beim Nagios-Neustart neu übermittelt werden.