ICINGA (NAGIOS FORK) INSTALL FAQ AUF DEBIAN SQUEEZE
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