Versionen
- Ubuntu 12.04 LTS
- ICINGA 1.6.1-2
- NAGVIS 1.7.8
Szenario
Ich gehe von einem simplen Szenario aus.
Server 1: ICINGA Server (Ubuntu LTS) : 192.168.1.1 (server1.local)
Server 2: Webserver mit MySQL Datenbank (Debian Stable) : 192.168.1.2 (server2.local)
ICINGA mit idoutils auf einer MySQL Datenbank
NAGVIS mit NDO DB
Server 1 ICINGA
Da wir alles als root ausführen
# sudo su
ICINGA lässt sich einfach via apt installieren. Um aktueller zu sein, nutze ich das ppa von formorer
# add-apt-repository ppa:formorer/icinga # apt-get update # apt-get install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client nagios-plugins
Während der Installation muss man zwei mal das Passwort für den icingaadmin eingeben. Ebenso den Neustart des apache2 bestätigen. Nach der Installation ist ICINGA schon via Webinterface unter http://192.168.1.1/icinga/ erreichbar. Die Services für Localhost wurden schon mit eingerichtet. Das ist nett aber bringt uns im Netzwerk herzlich wenig. Die Konfigurationen sind aber eine gute Anlaufstelle zum probieren.
Für NAGVIS benötigen wir vier weitere Pakete. Diese können wir gleich mit installieren.
# apt-get install sqlite3 php5-sqlitersync
graphviz
ICINGA konfigurieren
Als erstes sollte man die Datei /etc/icinga/objects/contacts_icinga.cfg anpassen.
# vim /etc/icinga/objects/contacts_icinga.cfg
Das mindeste ist die Anpassung von Name, alias und E-Mail
# In this simple config file, a single contact will receive all alerts. define contact{ contact_name root alias Vorname Nachname service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email meine-email@domain.de }
Die Grundkonfiguration für den Localhost liegen unter /etc/icinga/objects/localhost_icinga.cfg. Diese kann man zum kennenlernen nutzen :) Die darin enthaltenen Services findet man im Verzeichnis /etc/nagios-plugins/config.
# ls -ila /etc/nagios-plugins/config insgesamt 156 57411225 drwxr-xr-x 2 root root 4096 Mai 31 10:29 . 57411224 drwxr-xr-x 3 root root 4096 Mai 31 10:10 .. 57411359 -rw-r--r-- 1 root root 277 Dez 3 2011 apt.cfg 57411393 -rw-r--r-- 1 root root 182 Dez 3 2011 breeze.cfg 57411419 -rw-r--r-- 1 root root 370 Mai 3 2012 check_nrpe.cfg 57411360 -rw-r--r-- 1 root root 458 Dez 3 2011 dhcp.cfg 57411361 -rw-r--r-- 1 root root 909 Dez 3 2011 disk.cfg 57411394 -rw-r--r-- 1 root root 1722 Dez 3 2011 disk-smb.cfg ...
Die in den Dateien angesprochenen Plugins befinden sich unter /usr/lib/nagios/plugins. Hat man den Zusammenhang erst einmal verstanden, ergibt das alles einen Sinn :) Fügen wir den zweiten Server hinzu.
Den ino2db Dämon müssen wir noch aktivieren.
# vim /etc/default/icinga
und folgendes anpassen
# start ido2db daemon (no/yes) IDO2DB=yes
Danach den Dämonen starten :)
# service ido2db start
Jetzt das idomod Modul laden und ICINGA neu starten
# cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg # service icinga restart
Und noch externe Kommandos erlauben
# vim /etc/icinga/icinga.cfg
ca Zeile 137
# you will have to enable this. # Values: 0 = disable commands, 1 = enable commands check_external_commands=1 # EXTERNAL COMMAND CHECK INTERVAL # This is the
Und ICINGA restarten :)
# service icinga restart
Server 2 Debian
Auf dem ICINGA Server (Server 1) installieren wir noch das Nagios NRPE Plugin
# apt-get install nagios-nrpe-plugin
Wir müssen zwei mal das icingaadmin Passwort eingeben.
Als nächstes auf dem Debian Server (Server 2) weiter machen. Wir installieren als erstes nagios-nrpe-server
# apt-get install nagios-nrpe-server
und schauen uns die Konfiguration an
# vim /etc/nagios/nrpe.cfg
und erweitern diese mit unserem Server 1
... allowed_hosts=127.0.0.1,192.168.1.1 ... dont_blame_nrpe=1 ...
Anstelle der IP kann man auch den Hostname angeben. Da wir ein wenig mehr als den Ping und HTTP überwachen wollen (MySQL) passen wir gleich die Datei weiter an (ca. ab Zeile 202).
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 command[check_md2]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md2 command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400 command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e command[check_mysql_cmdlinecred]=/usr/lib/nagios/plugins/check_mysql -H localhost -u 'nagios' -p 'geheimespasswort'
Die letzte Zeile sorgt dafür, das MySQL lokal abgefragt wird und wir keinen Weg nach draußen aufbohren müssen. Den Benutzer müssen wir aber noch anlegen.
mysql -u root -p GRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'geheimespasswort'; GRANT USAGE ON *.* TO nagios@localhost.localdomain IDENTIFIED BY 'geheimespasswort'; FLUSH PRIVILEGES; quit;
Den Dienst noch neu starten
# /etc/init.d/nagios-nrpe-server restart
und schauen ob dieser läuft
# netstat -tap | grep nrpe
Server 1 ICINGA
Wieder zurück auf den Monitoring Server. Wir testen als erstes unsere Verbindung zu Server2
# /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.2
Das Ergebnis sollte in etwa so aussehen
NRPE v2.12
Wechseln in das objects Verzeichnis
# cd /etc/icinga/objects
Wir nehmen die localhost config als Vorlage und erstellen uns unsere Server 2 Debian cfg.
# cp localhost_icinga.cfg server2.cfg
Entschlacken diese und passen sie an unsere Bedürfnisse an.
# vim server2.cfg
define host{ use generic-host host_name server2.local alias server2 address 192.168.1.2 } define service{ use generic-service host_name server2.local service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service ; Name of service template to use host_name server2.local service_description Disk Space check_command check_nrpe!check_all_disks!20%!10% } define service{ use generic-service host_name server2.local service_description Current Users check_command check_nrpe!check_users!20!50 } define service{ use generic-service host_name server2.local service_description Total Processes check_command check_nrpe!check_procs!300!400 } define service{ use generic-service ; Name of service template to use host_name server2.local service_description Current Load check_command check_nrpe!check_load!5.0!4.0!3.0!10.0!6.0!4.0 } define service{ use generic-service host_name server2.local service_description MySQL check_command check_nrpe!check_mysql_cmdlinecred!nagios!geheimespasswort }
Anschließend kann man den Server mit seinem alias in der /etc/icinga/objects/hostgroups_icinga.cfg zu den jeweiligen Gruppen hinzufügen. Ist dies geschehen, muss ICINGA neu gestartet werden.
# /etc/init.d/icinga restart
Öffnet man ICINGA nun im Browser seiner Wahl, erscheint der neue Server in der Übersicht. Kommen wir zu dem grafischen Anteil NAGVIS.
NAGVIS auf Server 1 ICINGA
Die Abhängigkeiten haben wir ganz am Anfang gleich mit installiert. NAGVIS ist auch als Pakat verfügbar aber schon etwas veraltet. Fangen wir an.
# cd /tmp # wget http://downloads.sourceforge.net/project/nagvis/NagVis%201.7/nagvis-1.7.8.tar.gz # tar xvfz nagvis-1.7.8.tar.gz # cd nagvis-1.7.8.tar.gz
Version 1.7.8 ist stand heute die aktuelle stable. Bitte sucht auf SF.net die aktuelle Version raus! Jetzt geht’s ans installieren. Immer daran denken, wir nutzen ICINGA und nicht NAGIOS!
# ./install.sh
Wir werden mit einigen wenigen Fragen konfrontiert :)
Please enter the path to the nagios base directory [/usr/local/nagios]: /usr/share/icinga Please enter the path to NagVis base [...]: /usr/local/nagvis Do you want to use backend mklivestatus? [y]: n Do you want to use backend ndo2db? [n]: n Do you want to use backend ido2db? [n]: y Do you want to use backend merlinmy? [n]: n ... Please enter the web path to NagVis [/nagvis]: Please enter the name of the web-server user [www-data]: Please enter the name of the web-server group [www-data]: create Apache config file [y]: Do you really want to continue? [y]: For later update/upgrade you may use this command to have a faster update: ./install.sh -n /usr/share/icinga -p /usr/local/nagvis -b ido2db -u www-data -g www-data -w /etc/apache2/conf.d -a y
Während dieser Installation erscheint
IDO Module ido2db (ido2db) ... MISSING
daran stören wir uns nicht. Also weiter. Wir müssen noch die config von NAGVIS anpassen
# vim /usr/local/nagvis/etc/nagvis.ini.php
dpkg hat uns unter Punkt 1 beim installieren der icinga-idoutils nach Datenbank, Passwort usw. gefragt. Dies passen wir unter dem Punkt [backend_ndomy_1] ca. Zeile 356 an
[backend_ndomy_1] ; type of backend - MUST be set backendtype="ndomy" ; The status host can be used to prevent annoying timeouts when a backend is not ... ; The statushost needs to be given in the following format: ; "<backend_id>:<hostname>" -> e.g. "live_2:nagios" ;statushost="" ; hostname for NDO-db dbhost="localhost" ; portname for NDO-db dbport=3306 ; database name for NDO-db dbname="icinga" ; username for NDO-db dbuser="icinga-idoutils" ; password for NDO-db dbpass="geheimespasswort" ; prefix for tables in NDO-db dbprefix="icinga_" ; instance name for tables in NDO-db ;dbinstancename="default" ; maximum delay of the NDO Database in seconds ;maxtimewithoutupdate=180 ; path to the cgi-bin of this backend htmlcgi="/cgi-bin/icinga"
Zur Sicherheit nochmal ein
# /etc/init.d/apache2 restart
und NAGVIS sollte unter der IP des Servers1 /nagvis erreichbar sein. Die angezeigten Demo Karten liegen im Verzeichnis /usr/local/nagvis/etc/maps/
. Will man diese löschen, reicht ein
# cd /usr/local/nagvis/etc/maps/ # rm -f demo-*.cfg
Die rotate maps kann man über die nagvis.ini.php steuern.
# vim /usr/local/nagvis/etc/nagvis.ini.php
Finden kann man den Bereich ca. ab Zeile 410
; ---------------------------- ; Rotation pool definitions ; ---------------------------- ; in this example the browser switches between the maps demo and demo2 every 15 ; seconds, the rotation is enabled by url: index.php?rotation=demo [rotation_root] ; These steps are rotated. The single steps may have optional prefixes like "Demo2:" ... ; instead of the map name. maps="Deutschland" ; rotation interval (seconds) interval=15
Der Bereich maps greift auf die Karten unter /usr/local/nagvis/etc/maps/ zurück. Dateiname ohne die Endung .cfg :)
Neue Benutzer für ICINGA anlegen
Einfach via passwd
# htpasswd /etc/icinga/htpasswd.users neuerbenutzer
Quellen
Ich habe mir das natürlich nicht alles selber ausgedacht :)
ICINGA und idoutils im ICINGA Wiki
NAGVIS und ICINGA von Daniel
Howtoforge
NAGVIS Main Config
Nachwort
Wünsche, Anregungen und Änderungsvorschläge sind natürlich erwünscht! Ich habe das obige quick&dirty aus dem Kopf nachgebaut. Dieses HowTo wird weiter angepasst sobald ich den nächsten Monitoring Server in die Testumgebung nehme.
Aufgrund der Nachfrage werde ich nachträglich noch ein HowTo zum Thema ICINGA und DokuWiki verfassen.
@all, Ihr könnt auch Anfragen hier über die Kommentare verfassen. Es muss nicht immer via Mail sein :)
Pingback: ICINGA und DokuWiki | Linux Welten
Hallo, ich habe nach der Anleitung installiert. Hatt fast alles funktioniert. Danke für die Doku.
Wechsel ich in NagVis die backend_id von demo auf ndomy_1 kommt
„unable to fetch data from backend – falling back to input field“.
Vielleicht hat jemand eine Idee
Gruss
Nach dem ich den User icinga-idoutils mit den richtigen Kennwort in der nagvis.ini.php
versehen habe funktioniert nun alles.
Danke noch mal für die schöne Anleitung.
PS. Vielleicht gibt es mal eine Anleitung für NConf
Eventuell schaffe ich es in diesem Herbst noch. Ich schreibe immer nur nebenbei. Und meine Testumgebungen sind derzeit etwas begrenzt :)
NConf ist eine tolle Geschichte. Danke für deinen Kommentar und dein Reply!! Schön das es funktioniert hat.
Hallo,
nettes Tutorial :-)
Ich kriege leider bei Nagvis folgenden Fehler:
Der Instanz-Name „default“ im Backend „ndomy“ ist nicht gültig.
Kann jemand damit was anfangen ?
Schau mal ob der Hinweis des Monitoring Portals hilft: http://www.monitoring-portal.org/wbb/index.php?page=Thread&threadID=12162