ICINGA und NAGVIS unter Ubuntu 12.04 LTS

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-sqlite rsync 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.

7 Gedanken zu „ICINGA und NAGVIS unter Ubuntu 12.04 LTS

  1. Soeldner Beitragsautor

    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 :)

    Antworten
  2. Pingback: ICINGA und DokuWiki | Linux Welten

  3. Rudi

    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

     

     

    Antworten
    1. Rudi

      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

       

    2. Soeldner Beitragsautor

      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.

  4. Jan

    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 ?

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.