Server Monitoring · 11 min read · Oct 18, 2025
Serverüberwachung mit Icinga auf Debian Squeeze - Seite 2
3 Icinga konfigurieren
server1.example.com:
Die Hauptkonfigurationsdatei von Icinga ist /etc/icinga/icinga.cfg, zusätzliche Konfigurationen werden in /etc/icinga/commands.cfg und /etc/icinga/resource.cfg gespeichert. In der Regel ist die Standardkonfiguration in Ordnung, sodass Sie diese Dateien nicht ändern müssen.
Das erste, was Sie ändern sollten, sind die Kontaktdaten in /etc/icinga/objects/contacts_icinga.cfg, damit Benachrichtigungen an die richtige E-Mail-Adresse gesendet werden:
vi /etc/icinga/objects/contacts_icinga.cfg| [...] define contact{ contact_name root alias Falko Timme 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 [email protected] } [...] |
Die Dienstprüfungen für localhost (= server1.example.com) sind in /etc/icinga/objects/localhost_icinga.cfg definiert - werfen Sie einen Blick in diese Datei:
cat /etc/icinga/objects/localhost_icinga.cfg| # Eine einfache Konfigurationsdatei zur Überwachung des lokalen Hosts # Dies kann als Beispiel für die Konfiguration anderer Server dienen; # Benutzerdefinierte Dienste, die spezifisch für diesen Host sind, werden hier hinzugefügt, aber Dienste # die in icinga-common_services.cfg definiert sind, können ebenfalls gelten. # define host{ use generic-host ; Name der zu verwendenden Hostvorlage host_name localhost alias localhost address 127.0.0.1 } # Definieren Sie einen Dienst zur Überprüfung des Speicherplatzes der Root-Partition # auf der lokalen Maschine. Warnung, wenn < 20% frei, kritisch, wenn # < 10% freier Speicherplatz auf der Partition. define service{ use generic-service ; Name der zu verwendenden Dienstvorlage host_name localhost service_description Disk Space check_command check_all_disks!20%!10% } # Definieren Sie einen Dienst zur Überprüfung der Anzahl der derzeit angemeldeten # Benutzer auf der lokalen Maschine. Warnung, wenn > 20 Benutzer, kritisch # wenn > 50 Benutzer. define service{ use generic-service ; Name der zu verwendenden Dienstvorlage host_name localhost service_description Current Users check_command check_users!20!50 } # Definieren Sie einen Dienst zur Überprüfung der Anzahl der derzeit laufenden Prozesse # auf der lokalen Maschine. Warnung, wenn > 250 Prozesse, kritisch, wenn # > 400 Prozesse. define service{ use generic-service ; Name der zu verwendenden Dienstvorlage host_name localhost service_description Total Processes check_command check_procs!250!400 } # Definieren Sie einen Dienst zur Überprüfung der Last auf der lokalen Maschine. define service{ use generic-service ; Name der zu verwendenden Dienstvorlage host_name localhost service_description Current Load check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 } |
Die check_command-Befehle (wie check_all_disks) sind in den Nagios-Plugin-Konfigurationsdateien im Verzeichnis /etc/nagios-plugins/config definiert:
ls -l /etc/nagios-plugins/configroot@server1:~# ls -l /etc/nagios-plugins/config
total 144
-rw-r--r-- 1 root root 277 May 23 04:55 apt.cfg
-rw-r--r-- 1 root root 182 May 23 04:55 breeze.cfg
-rw-r--r-- 1 root root 458 May 23 04:55 dhcp.cfg
-rw-r--r-- 1 root root 909 May 23 04:55 disk.cfg
-rw-r--r-- 1 root root 1722 May 23 04:55 disk-smb.cfg
-rw-r--r-- 1 root root 321 May 23 04:55 dns.cfg
-rw-r--r-- 1 root root 673 May 23 04:55 dummy.cfg
-rw-r--r-- 1 root root 146 May 23 04:55 flexlm.cfg
-rw-r--r-- 1 root root 159 May 23 04:55 fping.cfg
-rw-r--r-- 1 root root 414 May 23 04:55 ftp.cfg
-rw-r--r-- 1 root root 320 May 23 04:55 games.cfg
-rw-r--r-- 1 root root 157 May 23 04:55 hppjd.cfg
-rw-r--r-- 1 root root 3579 May 23 04:55 http.cfg
-rw-r--r-- 1 root root 818 May 23 04:55 ifstatus.cfg
-rw-r--r-- 1 root root 748 May 23 04:55 ldap.cfg
-rw-r--r-- 1 root root 195 May 23 04:55 load.cfg
-rw-r--r-- 1 root root 2062 May 23 04:55 mail.cfg
-rw-r--r-- 1 root root 708 May 23 04:55 mailq.cfg
-rw-r--r-- 1 root root 385 May 23 04:55 mrtg.cfg
-rw-r--r-- 1 root root 567 May 23 04:55 mysql.cfg
-rw-r--r-- 1 root root 2355 May 23 04:55 netware.cfg
-rw-r--r-- 1 root root 420 May 23 04:55 news.cfg
-rw-r--r-- 1 root root 491 May 23 04:55 nt.cfg
-rw-r--r-- 1 root root 466 May 23 04:55 ntp.cfg
-rw-r--r-- 1 root root 426 May 23 04:55 pgsql.cfg
-rw-r--r-- 1 root root 2026 May 23 04:55 ping.cfg
-rw-r--r-- 1 root root 511 May 23 04:55 procs.cfg
-rw-r--r-- 1 root root 240 May 23 04:55 radius.cfg
-rw-r--r-- 1 root root 397 May 23 04:55 real.cfg
-rw-r--r-- 1 root root 315 May 23 04:55 rpc-nfs.cfg
-rw-r--r-- 1 root root 5550 May 23 04:55 snmp.cfg
-rw-r--r-- 1 root root 753 May 23 04:55 ssh.cfg
-rw-r--r-- 1 root root 784 May 23 04:55 tcp_udp.cfg
-rw-r--r-- 1 root root 438 May 23 04:55 telnet.cfg
-rw-r--r-- 1 root root 155 May 23 04:55 users.cfg
root@server1:~#Lassen Sie uns die Datei /etc/nagios-plugins/config/disk.cfg ansehen:
cat /etc/nagios-plugins/config/disk.cfg| # Definition des 'check_disk'-Befehls define command{ command_name check_disk command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$' } # Definition des 'check_all_disks'-Befehls define command{ command_name check_all_disks command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e } # Definition des 'ssh_disk'-Befehls define command{ command_name ssh_disk command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" } #### # Verwenden Sie diese Prüfungen, wenn Sie die IPv4-Konnektivität auf IPv6-aktivierten Systemen testen möchten #### # Definition des 'ssh_disk_4'-Befehls define command{ command_name ssh_disk_4 command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" -4 } |
Wie Sie sehen, ist der Befehl check_all_disks definiert als /usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -e. Wenn Sie sich die Datei /etc/icinga/objects/localhost_icinga.cfg erneut ansehen, sehen Sie, dass wir die Zeile check_command check_all_disks!20%!10% darin haben. Icinga erlaubt es uns, Befehlszeilenargumente an Dienstprüfungen zu übergeben, indem wir sie mit einem Ausrufezeichen (!) trennen, sodass check_command check_all_disks!20%!10% bedeutet, dass wir 20% als erstes Befehlszeilenargument und 10% als zweites Befehlszeilenargument an den Befehl /usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -e übergeben, sodass es schließlich zu /usr/lib/nagios/plugins/check_disk -w ‘20%’ -c ‘10%’ -e übersetzt wird.
Wenn Sie ein Befehlszeilenargument übergeben möchten, das ein Ausrufezeichen enthält, müssen Sie das Ausrufezeichen mit einem Backslash maskieren: !
Die Nagios-Plugins (d.h. die Werkzeuge, die Icinga verwendet, um Prüfungen durchzuführen) befinden sich im Verzeichnis /usr/lib/nagios/plugins:
ls -l /usr/lib/nagios/pluginsroot@server1:~# ls -l /usr/lib/nagios/plugins
total 2476
-rwxr-xr-x 1 root root 106120 May 23 04:55 check_apt
-rwxr-xr-x 1 root root 5369 May 23 04:55 check_bgpstate
-rwxr-xr-x 1 root root 2242 May 23 04:55 check_breeze
-rwxr-xr-x 1 root root 46192 May 23 04:55 check_by_ssh
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_clamd -> check_tcp
-rwxr-xr-x 1 root root 32072 May 23 04:55 check_cluster
-rwxr-xr-x 1 root root 44816 May 23 04:55 check_dhcp
-rwxr-xr-x 1 root root 41392 May 23 04:55 check_dig
-rwxr-xr-x 1 root root 119216 May 23 04:55 check_disk
-rwxr-xr-x 1 root root 8726 May 23 04:55 check_disk_smb
-rwxr-xr-x 1 root root 45488 May 23 04:55 check_dns
-rwxr-xr-x 1 root root 28968 May 23 04:55 check_dummy
-rwxr-xr-x 1 root root 3053 May 23 04:55 check_file_age
-rwxr-xr-x 1 root root 6315 May 23 04:55 check_flexlm
-rwxr-xr-x 1 root root 44656 May 23 04:55 check_fping
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_ftp -> check_tcp
-rwxr-xr-x 1 root root 36584 May 23 04:55 check_game
lrwxrwxrwx 1 root root 10 Aug 23 12:14 check_host -> check_icmp
-rwxr-xr-x 1 root root 41136 May 23 04:55 check_hpjd
-rwxr-xr-x 1 root root 164624 May 23 04:55 check_http
-rwxr-xr-x 1 root root 49264 May 23 04:55 check_icmp
-rwxr-xr-x 1 root root 34536 May 23 04:55 check_ide_smart
-rwxr-xr-x 1 root root 15134 May 23 04:55 check_ifoperstatus
-rwxr-xr-x 1 root root 12598 May 23 04:55 check_ifstatus
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_imap -> check_tcp
-rwxr-xr-x 1 root root 6887 May 23 04:55 check_ircd
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_jabber -> check_tcp
-rwxr-xr-x 1 root root 40816 May 23 04:55 check_ldap
lrwxrwxrwx 1 root root 10 Aug 23 12:14 check_ldaps -> check_ldap
-rwxr-xr-x 1 root root 3407 May 23 04:55 check_linux_raid
-rwxr-xr-x 1 root root 36168 May 23 04:55 check_load
-rwxr-xr-x 1 root root 6026 May 23 04:55 check_log
-rwxr-xr-x 1 root root 20284 May 23 04:55 check_mailq
-rwxr-xr-x 1 root root 36264 May 23 04:55 check_mrtg
-rwxr-xr-x 1 root root 34440 May 23 04:55 check_mrtgtraf
-rwxr-xr-x 1 root root 45936 May 23 04:55 check_mysql
-rwxr-xr-x 1 root root 44688 May 23 04:55 check_mysql_query
-rwxr-xr-x 1 root root 36616 May 23 04:55 check_nagios
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_nntp -> check_tcp
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_nntps -> check_tcp
-rwxr-xr-x 1 root root 48720 May 23 04:55 check_nt
-rwxr-xr-x 1 root root 46288 May 23 04:55 check_ntp
-rwxr-xr-x 1 root root 44880 May 23 04:55 check_ntp_peer
-rwxr-xr-x 1 root root 42224 May 23 04:55 check_ntp_time
-rwxr-xr-x 1 root root 60912 May 23 04:55 check_nwstat
-rwxr-xr-x 1 root root 8326 May 23 04:55 check_oracle
-rwxr-xr-x 1 root root 40400 May 23 04:55 check_overcr
-rwxr-xr-x 1 root root 40656 May 23 04:55 check_pgsql
-rwxr-xr-x 1 root root 48848 May 23 04:55 check_ping
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_pop -> check_tcp
-rwxr-xr-x 1 root root 114640 May 23 04:55 check_procs
-rwxr-xr-x 1 root root 40624 May 23 04:55 check_radius
-rwxr-xr-x 1 root root 40464 May 23 04:55 check_real
-rwxr-xr-x 1 root root 9581 May 23 04:55 check_rpc
lrwxrwxrwx 1 root root 10 Aug 23 12:14 check_rta_multi -> check_icmp
-rwxr-xr-x 1 root root 1137 May 23 04:55 check_sensors
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_simap -> check_tcp
-rwxr-xr-x 1 root root 127216 May 23 04:55 check_smtp
-rwxr-xr-x 1 root root 152008 May 23 04:55 check_snmp
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_spop -> check_tcp
-rwxr-xr-x 1 root root 36688 May 23 04:55 check_ssh
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_ssmtp -> check_tcp
-rwxr-xr-x 1 root root 37832 May 23 04:55 check_swap
-rwxr-xr-x 1 root root 49328 May 23 04:55 check_tcp
-rwxr-xr-x 1 root root 38128 May 23 04:55 check_time
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_udp -> check_tcp
-rwxr-xr-x 1 root root 44560 May 23 04:55 check_ups
-rwxr-xr-x 1 root root 36168 May 23 04:55 check_users
-rwxr-xr-x 1 root root 2936 May 23 04:55 check_wave
-rwxr-xr-x 1 root root 38152 May 23 04:55 negate
-rwxr-xr-x 1 root root 36104 May 23 04:55 urlize
-rw-r--r-- 1 root root 1938 May 23 04:55 utils.pm
-rwxr-xr-x 1 root root 862 May 23 04:55 utils.sh
root@server1:~#Um herauszufinden, welche Befehlszeilenargumente ein Plugin annehmen kann, rufen Sie dieses Plugin mit dem –help-Schalter auf. Um beispielsweise herauszufinden, wie das Plugin check_disk verwendet werden kann, führen Sie aus:
/usr/lib/nagios/plugins/check_disk --helpMit diesem Wissen können Sie die Dienstprüfungen in /etc/icinga/objects/localhost_icinga.cfg nach Ihren Wünschen anpassen, und Sie können Plugin-Konfigurationen im Verzeichnis /etc/nagios-plugins/config hinzufügen/ändern.
Angenommen, wir möchten eine Dienstprüfung für MySQL hinzufügen, dann sehen wir uns zuerst die entsprechende Plugin-Konfiguration an:
cat /etc/nagios-plugins/config/mysql.cfg| # Definition des 'check_mysql'-Befehls define command{ command_name check_mysql command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' } # Definition des 'check_mysql_cmdlinecred'-Befehls define command{ command_name check_mysql_cmdlinecred command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } # Definition des 'check_mysql_database'-Befehls define command{ command_name check_mysql_database command_line /usr/lib/nagios/plugins/check_mysql -d '$ARG3$' -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } |
Der Befehl, den ich verwenden möchte, ist check_mysql_cmdlinecred - dieser nimmt einen MySQL-Benutzernamen und ein Passwort als Argumente (neben der Hostadresse, die aus dem Parameter host_name der Dienstprüfungsdefinition übernommen wird). Ich möchte den MySQL-Benutzer nagios mit dem Passwort howtoforge verwenden, also füge ich den folgenden Abschnitt zu /etc/icinga/objects/localhost_icinga.cfg hinzu:
vi /etc/icinga/objects/localhost_icinga.cfg| [...] define service{ use generic-service host_name localhost service_description MySQL check_command check_mysql_cmdlinecred!nagios!howtoforge } |
Bevor wir Icinga neu starten, müssen wir den MySQL-Benutzer nagios mit dem Passwort howtoforge erstellen:
mysql -u root -pGRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';
FLUSH PRIVILEGES;quit;(Das USAGE-Recht ist ein Synonym für ‘keine Rechte’, d.h. der Benutzer nagios kann sich mit MySQL verbinden, aber keine Daten ändern oder lesen.)
Jetzt starten wir Icinga neu, damit unsere Änderungen wirksam werden:
/etc/init.d/icinga restartWenn Sie jetzt die Dienste von localhost in der Icinga-Weboberfläche überprüfen, sollten Sie sehen, dass eine Prüfung für MySQL hinzugefügt wurde:

Ebenso können wir Prüfungen für SMTP, POP3 und IMAP hinzufügen - dies sind nur Verbindungsprüfungen, sodass wir keine Argumente benötigen:
vi /etc/icinga/objects/localhost_icinga.cfg| [...] define service{ use generic-service host_name localhost service_description SMTP check_command check_smtp } define service{ use generic-service host_name localhost service_description POP3 check_command check_pop } define service{ use generic-service host_name localhost service_description IMAP check_command check_imap } |
Starten Sie Icinga neu…
/etc/init.d/icinga restart… und einen Moment später sollten Sie die neuen Prüfungen in der Icinga-Weboberfläche sehen:

Vielleicht ist Ihnen aufgefallen, dass die SSH- und HTTP-Prüfungen für localhost, die nicht in /etc/icinga/objects/localhost_icinga.cfg definiert sind. Diese sind in den Hostgruppen in der Datei /etc/icinga/objects/hostgroups_icinga.cfg definiert. Eine Hostgruppe ermöglicht es uns, eine Dienstprüfung für mehrere Server durchzuführen und sie nur einmal zu definieren. Werfen Sie einen Blick in diese Datei:
cat /etc/icinga/objects/hostgroups_icinga.cfg| # Einige generische Hostgruppendefinitionen # Eine einfache Wildcard-Hostgruppe define hostgroup { hostgroup_name all alias Alle Server members * } # Eine Liste Ihrer Debian GNU/Linux-Server define hostgroup { hostgroup_name debian-servers alias Debian GNU/Linux-Server members localhost } # Eine Liste Ihrer Webserver define hostgroup { hostgroup_name http-servers alias HTTP-Server members localhost } # Eine Liste Ihrer SSH-zugänglichen Server define hostgroup { hostgroup_name ssh-servers alias SSH-Server members localhost } |
Wie Sie sehen, haben wir eine Hostgruppe namens http-servers und eine Hostgruppe namens ssh-servers, und localhost ist Mitglied jeder dieser Gruppen. Die Dienstprüfungen für die Hostgruppen sind in /etc/icinga/objects/services_icinga.cfg definiert. Diese Datei enthält Dienstprüfungen und verweist auf die Hostgruppen, auf die diese Prüfungen angewendet werden sollen, indem sie den Parameter hostgroup_name verwenden:
cat /etc/icinga/objects/services_icinga.cfg| # Überprüfen, ob Webdienste laufen define service { hostgroup_name http-servers service_description HTTP check_command check_http use generic-service notification_interval 0 ; set > 0, wenn Sie erneut benachrichtigt werden möchten } # Überprüfen, ob SSH-Dienste laufen define service { hostgroup_name ssh-servers service_description SSH check_command check_ssh use generic-service notification_interval 0 ; set > 0, wenn Sie erneut benachrichtigt werden möchten } |
Wie Sie sehen, sind die SSH- und HTTP-Dienstprüfungen hier definiert.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.