NConf-Installation zur webbasierten Konfiguration von Icinga

veröffentlicht am 29. Januar 2011

Gestern habe ich bereits die Installation von Icinga unter Ubuntu erklärt, heute zeige ich euch, wie man NConf zur webbasierten Konfiguration der zu überwachenden Computer einrichtet, damit man nicht manuell auf der Konsole rumpfuschen muss.

Die Installation von NConf unter Ubuntu 10.04 LTS 64-Bit ist recht schnell erledigt. Wechsel zunächst in den DocumentRoot deines Apache-Webservers:

cd /var/www

Lade nun die neuste NConf-Version herunter:

wget http://downloads.sourceforge.net/project/nconf/nconf/1.2.6-0/nconf-1.2.6-0.tgz

Entpacke dann das Archiv,

tar xzf nconf-1.2.6-0.tgz

setze die passenden Rechte auf das entpackte Verzeichnis

chown -R www-data:www-data nconf

und wechsel in das neue Verzeichnis:

cd nconf

Nun legst du eine neue Datenbank und einen entsprechenden Benutzer an:

mysql -uroot -p
CREATE DATABASE nconf;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON nconf.* TO '<Benutzer>'@'localhost' IDENTIFIED BY '<Passwort>';
quit

Nun muss die Datenbankstruktur erstellt werden:

mysql -u<Benutzer> -p<Passwort> nconf < INSTALL/create_database.sql

Kopiere nun die Standardkonfiguration:

cp config.orig/* config

Editiere dann die Datei config/mysql.php

nano config/mysql.php

und konfiguriere folgende Zeilen:

define('DBHOST', 'localhost');
define('DBNAME', 'nconf');
define('DBUSER', '<Benutzer>');
define('DBPASS', '<Passwort>');

Danach öffnest du die Datei config/nconf.php

nano config/nconf.php

und setzt folgende Einstellung:

define('NAGIOS_BIN', '/usr/local/icinga/bin/icinga');

Lösche nun die Dateien bzw. Ordner INSTALL, UPDATE, INSTALL.php und UPDATE.php:

rm -r INSTALL UPDATE INSTALL.php UPDATE.php

Wenn du eine Authentifizierung benötigst und diese nicht über den Apache-Webserver regeln möchtest, musst du die Datei config/authentication.php deinen Bedürfnissen entsprechend anpassen.

Öffne nun die Datei deploy_local.sh im Verzeichnis ADD-ONS,

nano ADD-ONS/deploy_local.sh

passe folgende Zeilen an

OUTPUT_DIR="/var/www/nconf/output/"
NAGIOS_DIR="/usr/local/icinga/etc/objects/"
/etc/init.d/icinga reload

und mache das Script ausführbar:

chmod +x ADD-ONS/deploy_local.sh

Trage das Script nun als cronjob ein, damit Icinga in einem regelmäßigen Abstand die Konfiguration neu lädt:

crontab -e
*/10 * * * * /var/www/nconf/ADD-ONS/deploy_local.sh

Dadurch wird alle 10 Minuten die Icinga-Konfiguration neu eingelesen. Damit Icinga auch die richtigen Konfigurationen einliest, musst du die Icinga-Konfiguration anpassen:

nano /usr/local/icinga/etc/icinga.cfg

Kommentiere dort alle Zeilen mit # aus, die mit cfg_file anfangen. Füge danach folgende Zeilen hinzu:

cfg_dir=/usr/local/icinga/etc/objects/global
cfg_dir=/usr/local/icinga/etc/objects/Default_collector/

Damit Icinga von NConf gesteuert werden kann, musst du noch die ausführbare Datei von Icinga mit entsprechenden Rechten versehen:

chgrp www-data /usr/local/icinga/bin/icinga

NConf sollte nun per http://<Hostname oder IP>/nconf erreichbar sein :)

Kommentare

Wenn man die cfg_dir Einträge aktiviert und hinzufügt, dann muss man darauf achten dass 1. alle Verzeichnisse existieren (per Default ist das nicht der Fall) und 2. die in cfg_file angegebene Konfiguration mit der neuen über NConf geladenen in Konflikt stehen kann.

Also würde ich die cfg_file Einträge deaktivieren und nur die cfg_dir Einträge verwenden!

Kommentar #1 von Manfred am 14. Februar 2011


Also im Zusammenhang mit der Anleitung zum Installieren von Icinga habe ich das Ganze schon dreimal 1:1 bei Ubuntu durchgetestet und es lief alles einwandfrei.

Kommentar #2 von Patrick am 14. Februar 2011


Ist echt lustig, ich habs zwei mal probiert und hatte jedes Mal das gleiche Problem! :-)
Heute teste ich es zum dritten Mal durch, mal sehen wie es dann aussieht…

Kommentar #3 von Manfred am 15. Februar 2011


Hi!
Also muss schon sagen, Deine Anleitung zu Icinga und Nconf…sehr schön…Danke!

Ich hab aber leider auch das Problem, dass die in Nconf generierte conf nicht in Icinga per cron-job eingelesen werden kann. Versuche ich das manuell, erhalte ich zu fast jedem Ordner die Meldung, dass es diesen noch nicht gibt…Lege ich den fraglichen Ordner dann per Hand an, geht es bis zum nächsten Ordner weiter.
Irgendwann beschwert er sich dann auch noch über duplicate entries, was ich damit lösen konnte, dass ich den jeweiligen Eintrag in der Datei auskommentiert habe.
Nach getaner Arbeit ist dann zwar das Einlesen durchgelaufen, in Icinga-web aber immer noch nichts von den hinzugefügten Maschinen zu sehen. Hilfe wird dankend angenommen! ;-)

Gruß
Sascha

Kommentar #4 von Sascha am 18. Februar 2011


@Sascha und Manfred: Also ich habe die beiden Tutorials nun nochmal Stück für Stück auch unter Ubuntu 10.10 getestet. Läuft alles einwandfrei. Ihr müsst beachten, dass der cronjob zur Aktualisierung nur alle 10 Minuten läuft.

Habt ihr vielleicht schon die gerade erst veröffentlichte Icinga-Version installiert? Könnte sein, dass sich da etwas geändert hat.

Wie gesagt: wenn ich alle Befehle 1:1 unter Ubuntu 10.04 oder 10.10 ausführe, klappt es problemlos (inzwischen bestimmt 5x getestet). Beachtet bitte, dass manchmal auch zwischen den Code-Zeilen auszuführende Dinge stehen.

Kommentar #5 von Patrick am 19. Februar 2011


Hallo,

Ich habe exact das gleice Problem wie Sascha, allerdings benutze ich hier grade Debian 6 anstelle von Ubuntu. Habe den gleichen „leidensweg“ wie er durch gemacht. Jetzt läuft alles ohne Fehler durch, aber die Hosts rauchen nicht auf. Das mit dem Ordner erstellen musste ich auch vorher erledigen.

Gruß

Kommentar #6 von Rafael am 21. Februar 2011


Kann das Problem von Rafael unter Debian 6 nachvollziehen. Verwende folgende PRogrammversionen:

– Icinga 1.2.1
– Nagios-Plugins 1.4.15
– NConf 1.2.6

Nachdem die Ordner angelegt wurden funktioniert es.

Kommentar #7 von Jens am 21. Februar 2011


Oh….ja….wäre interessant gewesen zu erwähnen…
Auch bei mir, Debian 6!
Hattet Ihr denn keine Meldungen zu duplicate entries?

Gruß
Sascha

Kommentar #8 von Sascha am 21. Februar 2011


und genau…nach Anlage der Ordner und Lösung der duplicate entries Fehler, läuft der cronjob durch, aber die hosts tauchen in icinga nicht auf.
Kann nicht so viel sein eigentlich…

Kommentar #9 von Sascha am 21. Februar 2011


Versucht das am besten mal in einer virtuellen Maschine mit Ubuntu. Wenn ihr da dieselben Probleme habt, dann macht ihr was falsch :D

Kommentar #10 von Patrick am 21. Februar 2011


ok, wird gemacht!

Kommentar #11 von Sascha am 24. Februar 2011


zum verrückt werden…
Ubuntu 10.04 64 bit

Error: Could not open config directory ‚/usr/local/icinga/etc/servers‘ for reading.

Kommentar #12 von Sascha am 24. Februar 2011


Alo, wirklich haargenau der gleiche Fehler… Schade, irgendwas machst Du anscheinend immer noch anders als wir…
Ansonsten großartige Howto…aber funxt halt nicht bei mir…

Kommentar #13 von Sascha am 24. Februar 2011


Mal auf einen frisch installierten Ubuntu 10.04 64 Bit (z.B. in einer VM) getestet? Also wie gesagt, ich habe diese Anleitung bereits 5x durchgetestet (4x Ubuntu 10.04 64-Bit, 1x Ubuntu 10.10 64-Bit) und es lief immer einwandfrei.

Ah da fällt mir ein… hast du das auf Ubuntu Desktop oder Ubuntu Server getestet? Ich glaube zwar nicht, dass das einen Unterschied macht, aber was anderes fällt mir sonst nicht mehr ein :D Ich habe das immer auf Ubuntu Server getestet.

Kommentar #14 von Patrick am 24. Februar 2011


HEY !!!!
Ich hab’s:
In der Datei
/usr/local/icinga/etc/icinga.cfg

müssen (entgegen Deines Howtos) folgende Zeilen auskommentiert sein:
#cfg_file=/usr/local/icinga/etc/objects/commands.cfg
#cfg_file=/usr/local/icinga/etc/objects/contacts.cfg
#cfg_file=/usr/local/icinga/etc/objects/timeperiods.cfg

und

#cfg_dir=/usr/local/icinga/etc/servers
#cfg_dir=/usr/local/icinga/etc/printers
#cfg_dir=/usr/local/icinga/etc/switches
#cfg_dir=/usr/local/icinga/etc/routers

(ich hoffe das waren sie alle…hab das mal so rauskopiert…sonst müsst Ihr da noch mal gucken!)

Danach kann man mit nconf und icinga perfekt arbeiten…

Kommentar #15 von Sascha am 24. Februar 2011


@Sascha: Sind das dann alle Einträge, die mit „cfg_“ anfangen? Dann kann es sein, dass ich das „cfg_file“ einfach immer als „cfg_dir“ überlesen, aber jedesmal richtig gemacht habe :D

Kommentar #16 von Patrick am 24. Februar 2011


lol!
sind nicht alle, aber schon die meisten…vielleicht haben die anderen auch einfach keine fehlerhafte Wirkung!

Kommentar #17 von Sascha am 24. Februar 2011


Auweia… ich habe gerade nochmal das Tutorial rausgekramt, aus dem ich das gezogen hatte. Dort steht wirklich, dass man alle cfg_file-Einträge auskommentieren soll. Dann habe ich das hier wohl falsch hingeschrieben, aber immer selber richtig gemacht. Wird korrigiert… Sorry für die Unannehmlichkeiten. Das beweist wohl einmal mehr, dass ich nur ein Mensch bin :P

Kommentar #18 von Patrick am 24. Februar 2011


Habe es nun in dem Tutorial angepasst, sorry nochmal :-/

Kommentar #19 von Patrick am 24. Februar 2011


Du bist ein Mensch???
IEEEEKKK! :-)

Kein Problem….Community heisst Gemeinschaft!

Kommentar #20 von Sascha am 24. Februar 2011


Ich hab noch was:
Keine Ahnung ob das nur auf einem debian 6.0 so ist, denn da ist es mir aufgefallen. Aber ich musste, damit auch E-Mails rausgehen, noch den Pfad zu „mail“ in den ’notify-host-by-email‘ und ’notify-service-by-email‘ diensten in nconf anpassen (stehen da unter Misccommands).
Dort stand innerhalb der Kommandos „/bin/mail“, bei mir richtig ist aber „/usr/bin/mail“.
Nur damit der nächste nicht auch wieder suchen muss! ;-)

Kommentar #21 von Sascha Zucca am 24. Februar 2011


Jajaa immer schön Salz in die Wunde kippen ;P

Kommentar #22 von Patrick am 24. Februar 2011


LOOOL!
Tut’s weh?

Aber im Ernst:
Ist auch bei ubuntu so, oder?

Gruß
Sascha

Kommentar #23 von Sascha Zucca am 25. Februar 2011


Das kann ich nun nicht beantworten, habe nur noch eine Installation @ Studium laufen. Könnte nächste Woche mal nachschauen.

Kommentar #24 von Patrick am 25. Februar 2011


Ne kurze Anleitung, wie man Nconf auch noch absichert mit nem Passwort und nem Benutzernamen, wäre auch nicht ganz verkehrt…
Sonst passt ja jetzt alles!

Liebe Grüße
Sascha

Kommentar #25 von Sascha am 03. März 2011


Ich hab leider noch etwas gefunden…und krieg’s irgendwie nicht hin…
die plugins check_icmp und check_dhcp (root-plugins) werden in Nconf nicht angeboten, obwohl sie unter /usr/local/icinga/libexec liegen.
Die Sache mit make install-root habe ich genauso versucht wie das setzen von 4777 für die beiden plugins. Ohne Erfolg… Jemand eine Idee?
Als User icinga kann ich die beiden Befehle erfolgreich ausführen.

Danke
Sascha

Kommentar #26 von Sascha Zucca am 04. März 2011


Hab es hingekriegt…das checkcommand muss anscheinend in nconf manuell hinzugefügt werden…
Klappt jetzt!

lg
Sascha

Kommentar #27 von Sascha Zucca am 04. März 2011


Hallo,

schönes Anleitungen zu Icinga und Nconf.

Leider habe ich bei der nconf Anleitung ein Problem.

Bei dem Punkt
„mysql -unconf -p nconf < INSTALL/create_database.sql"

Bekomme ich die Meldung: "Access denied for user nconf@localhost".
Auch das Erstellen eines Benutzers nconf und übernahme der Einstellungen wie in der Icinga Anleitung brachten keinen Erfolg.

Ob du mir einen Tipp in die emtscheidende Richtung geben könntest?

Grüße Thomas

Kommentar #28 von Thomas am 26. Oktober 2011


Nachtrag:

Kann es sein, dass es

“mysql -u ROOT -p nconf < INSTALL/create_database.sql"

Damit funkioniert es ..

Thomas

Kommentar #29 von Thomas am 26. Oktober 2011


@Thomas: da hat sich bei mir oben ein Tippfehler eingeschlichen. Nach dem -p darf kein Leerzeichen stehen, dann wird das Passwort nicht übergeben. Bei deinem letzten Befehl wurdest du sicherlich nach dem Passwort und evtl. nach dem Benutzer gefragt, oder?

Kommentar #30 von Patrick am 27. Oktober 2011


Hallo,

kann mich alledem nur anschließen. Eine super Anleitung. Doch leider komme ich, wie mein Vorredner, an dieser Stelle nicht weiter:

„mysql -unconf -pnconf < INSTALL/create_database.sql"

Bekomme dann die Fehlermeldung:

"ERROR 1046 (3D000) at line 3: No database selected"

Kennt einer den Fehler bzw. kann mir helfen ihn zu bereinigen?
Danke schonmal im Vorraus.

Gruß Marcus

Kommentar #31 von Marcus Bausen am 03. November 2011


Ich hab das schon lange nicht mehr installiert, aber der Befehl müsste ganz korrekt so lauten:

mysql -unconf -pnconf nconf < INSTALL/create_database.sql

Ohne das letzte nconf wird die Datenbank nicht ausgewählt.

Kommentar #32 von Patrick am 03. November 2011


Super Anleitung. Vielen Dank!!!
Allerdings hab ein kleines Problem. Ich hab alles mal mit den aktuellsten Versionen installiert.
Hat auch geklappt. Bis auf eine Kleinigkeit.
Wenn ich auf http://localhost/nconf/ gehe bekomme ich nur eine leere Seite angezeigt. Hat da jemand ne Idee?

Kommentar #33 von Boris am 13. Dezember 2011


Du hast das Ganze auch auf deinem lokalen Rechner installiert?
Wenn ja, dann musst du mal in PHP die Fehlerausgabe aktivieren.

Kommentar #34 von Patrick am 14. Dezember 2011


Das liegt wohl an der neuesten Version 1.3.0
Wenn ich die im Tutorial genannte Datei verwende, geht alles einwandfrei.

Grüße
Ben

Kommentar #35 von RACER2k am 18. Dezember 2011


Moin Patrick,

vielen Dank für die Anleitungen. Leider funktioniert es nicht ganz mit der neusten Version. Ich erhalte dort den Fehler „Error: database query failed for ‚SELECT version FROM icinga_dbversion WHERE name=’idoutils“ – ‚1146: Table ‚icinga.icinga_dbversion‘ doesn’t exist'“

Any idea?

Beste Grüße,
Jan

Kommentar #36 von Jan am 15. Februar 2012


Sorry, bin zu lange raus aus dem Thema…

Kommentar #37 von Patrick am 15. Februar 2012


@Boris das liegt daran weil du noch in Zeile 11 der „nconf.php“ Datei den Pfad zu Nconf ergänzen musst „/var/www/nconf“

Kommentar #38 von Jonas am 10. Mai 2012


Hi,

alles genau so gemacht wie beschrieben .. icinga-web auch nach deiner anleitung fertig gemacht. heute scheiter ich aber an nconf .. wie gesagt, alles so gemacht wie es da steht, aber wenn ich die seite im browser öffnen möchte kommt nur eine Fehlermeldung:

**********************************************************
Die Website kann diese Seite nicht anzeigen.
HTTP 500

Wahrscheinlichste Ursachen:
•Die Website wird momentan gewartet.
•Die Website enthält einen Programmierfehler.
**********************************************************

icinga-web funktioniert, icinga selber funktioniert nur bis zur passwortabfrage, danach auch nur ein fehler (muss aber eventuell auch nicht gehen)

mit /etc/init.d/icinga restart startet icinga aber ohne fehler ..

warum geht nconf nicht??

Kommentar #39 von doppelklix am 24. Mai 2013


ok .. geht .. ich habe die Zeile von Jonas gelesen :-)

@Boris das liegt daran weil du noch in Zeile 11 der “nconf.php” Datei den Pfad zu Nconf ergänzen musst “/var/www/nconf”

Kommentar #40 von doppelklix am 24. Mai 2013


@Boris:
Wenn du eine leere Seite bekommst, gehören die Dateien höchstwahrscheinlich nicht www-data…
Also:
chown -R www-data.www-data /var/www/nconf

Kommentar #41 von the_MiCrP am 27. Juni 2013


Hinterlasse einen Kommentar