ICINGA (NAGIOS FORK) INSTALL FAQ AUF DEBIAN SQUEEZE

Aus OPPServer.net Wiki | OPPs Wiki
Zur Navigation springen Zur Suche springen

ICINGA (NAGIOS FORK) INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 16.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]

Hier unsere Server/Client Beispiele dieser Anleitung:

ICINGA Server, Debian Squeeze 6.0x, IP 192.168.1.12, Hostname icinga.domain.de
Client 1/Homeserver, Debian Squeeze 6.0x, IP 192.168.1.13, Hostname homeserver.domain.de


Als erstes als User root einloggen:

sudo -s


SERVER PART

Benoetigte Pakete installieren (Debian Backports wird benoetigt):

aptitude install apache2 libapache2-svn mysql-server mysql-admin libdbd-mysql libapache2-mod-php5 php5-cgi php5-xsl php5-mcrypt php5-curl php5-imagick php5-mysql php5-pgsql php5-tidy php5-dev php5-cli phpmyadmin nagios-nrpe-plugin 
aptitude -t squeeze-backports install icinga icinga-idoutils icinga-doc icinga-phpapi


Apache mod_rewrite aktivieren:

a2enmod rewrite
/etc/init.d/apache2 reload


Konfiguriere icinga-cgi

Bitte waehlen Sie, welche Apache-Server fuer Icinga eingerichtet werden sollen. Hier waehlen wir apache2, damit icinga nachher per http://domain.de/icinga erreichbar ist.

Bitte geben Sie das Passwort fuer den Benutzer »icingaadmin« ein. Hier geben wir das neue Passwort fuer das icinga Webinterface an.


Konfiguriere icinga-idoutils

Konfigurieren der Datenbank fuer icinga-idoutils mit dbconfig-common? 
Ja
Datenbanktyp, der durch das Paket icinga-idoutils benutzt werden soll
mysql
Passwort des administrativen Datenbank-Benutzers:
mysql root Passwort

icinga Mysql Passwort einfach leer lassen, dann wird automatisch eins erzeugt.


Icinga stopen:

/etc/init.d/icinga stop

ido2db stopen:

/etc/init.d/ido2db stop


In /etc/icinga/objects/contacts_icinga.cfg aendern wir zuerst die Kontaktinformationen, damit die Benachrichtigungen auch an das richtige Ziel gehen.


Nun richten wir in /etc/icinga/icinga.cfg den cfg_dir fuer die zu ueberwachende Server/Clients ein:

cfg_dir=/etc/icinga/servers
mkdir /etc/icinga/servers

Hier kommen nun die .cfg Dateien fuer die einzelnen Server/Clients rein. Beispiel: /etc/icinga/servers/homeserver.cfg

##### Homeserver Definition #####
define host{
        use                     generic-host            ; Name of host template to use
        host_name               homeserver.domain.de
        alias                   Homeserver
        address                 192.168.1.13
        }

# Definiert ein Service zum ueberpruefen des Pings
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       homeserver.domain.de
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}

# Definiert ein Service zum ueberpruefen der Speicherauslastung der root Partition.
# Warnung bei weniger als 10% freien Speicherplatz, Kritisch bei weniger als 5% freien Speicherplatz.
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       homeserver.domain.de
        service_description             Disk Space
        check_command                   check_nrpe!check_all_disks!10%!5%
        }

# Definiert ein Service zum ueberpruefen der zur Zeit eingeloggten User.
# Warnung bei mehr als 20 User, Kritisch bei mehr als 50 User.
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       homeserver.domain.de
        service_description             Current Users
        check_command                   check_nrpe!check_users!20!50
        }

# Definiert ein Service zum ueberpruefen der zur Zeit laufenden Prozesse.
# Warnung bei mehr als 250 Prozessen, Kritisch bei mehr als 400 Prozessen.
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       homeserver.domain.de
        service_description             Total Processes
        check_command                   check_nrpe!check_procs!250!400
        }

# Definiert ein Service zum ueberpruefen der Server load. 
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       homeserver.domain.de
        service_description             Current Load
        check_command                   check_nrpe!check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }


Nun koennen wir auch alle Server/Clients mit ihren jeweiligen host_name in die /etc/icinga/objects/hostgroups_icinga.cfg in hostgroups unter member eintragen. z.B.:

# A list of your ssh-accessible servers
define hostgroup {
        hostgroup_name  ssh-servers
		alias           SSH servers
		members         localhost, homeserver.domain.de
        }

Genauso koennen wir hier auch neue hostgroups hinzufuegen, als Beispiel Mysql:

# A list of your mysql-accessible local servers
define hostgroup {
        hostgroup_name  mysql-servers-local
		alias           MYSQL servers Local
		members         localhost
        }

# A list of your mysql-accessible extern servers
define hostgroup {
        hostgroup_name  mysql-servers-extern
		alias           MYSQL servers Extern
		members         homeserver.domain.de
        }

Hierfuer muss natuerlich der passende service in /etc/icinga/objects/services_icinga.cfg definiert werden:

# check that mysql local services are running
define service {
        hostgroup_name                  mysql-servers-local
        service_description             MYSQL Local
        check_command                   check_mysql_cmdlinecred!icinga!p@ssw0rd
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

# check that mysql extern services are running
define service {
        hostgroup_name                  mysql-servers-extern
        service_description             MYSQL Extern
        check_command                   check_nrpe!check_mysql_cmdlinecred!icinga!p@ssw0rd
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

Man kann hier natuerlich noch zig weitere Services definieren, darauf gehen wir aber jetzt nicht genauer ein, man sollte sich dafuer mal in /usr/lib/nagios/plugins umgucken, was es alles fuer check_command gibt.


ido2db einrichten: Zuerst kopieren wir die /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample nach /etc/icinga/modules/idoutils.cfg

cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

Nun aendern wir darin folgendes:

path            /usr/sbin/idomod.o

in

path            /usr/lib/icinga/idomod.so

In /etc/icinga/objects/ido2db_check_proc.cfg muessen wir evtl. wieder den host_name anpassen, z.B.:

host_name                       localhost, homeserver.domain.de

In /etc/default/icinga noch folgendes aendern:

IDO2DB=no

in

IDO2DB=yes


Des weiteren schalten wir die check_external_commands in /etc/icinga/icinga.cfg auf 1. Fuegen den User www-data der Gruppe nagios hinzu:

usermod -G nagios www-data

Setzen die Rechte fuer /var/lib/icinga/rw/ richtig:

chmod g+x /var/lib/icinga/rw/

Und restarten den Apache Webserver neu:

/etc/init.d/apache2 restart


Jetzt zuerst ido2db starten:

/etc/init.d/ido2db start

Dann Icinga starten:

/etc/init.d/icinga start


SERVER UND CLIENT PART

check_mysql_cmdlinecred will natuerlich ein Benutzer (hier icinga) und Passwort (hier p@ssw0rd), welchen/s wir an jedem Server/Client erstellen muessen, der auch in der members der Mysql hostgroup eingetragen ist (in unserem Beispiel localhost und homeserver.domain.de):

mysql -u root -p
GRANT USAGE ON *.* TO icinga@localhost IDENTIFIED BY 'p@ssw0rd';
FLUSH PRIVILEGES;
quit;

Damit kann der Benutzer icinga zu Mysql verbinden, hat aber keine Rechte (aendern oder auch lesen).


CLIENT PART aptitude install nagios-nrpe-server Jetzt aendern oder fuegen wir in /etc/nagios/nrpe.cfg die folgenden Zeilen hinzu und erlauben damit icinga.domain.de (192.168.1.12) den Zugriff:

allowed_hosts=127.0.0.1,192.168.1.12
dont_blame_nrpe=1
command[check_users]=/usr/lib/nagios/plugins/check_users -w 20 -c 50
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 'icinga' -p 'p@ssw0rd'
/etc/init.d/nagios-nrpe-server restart