Dies ist eine alte Version des Dokuments!
Icinga 2 - Überwachung von Clients/Hosts bzw. Services auf Hosts
Mit Icinga kann man sehr leicht und einfach umfangreiche und komplexe IT-Infrastrukturen und Dienste überwachen.
Tiefer gehende Informationen zur Konfiguration der Icinga 2 Clients selbst findet man auf der Icinga 2 - Client Seite im WWW, die bei der Erstellung dieser Dokumentationsseite wertvolle Hilfe geleistet hat!
Bei der Anbindung und Überwachung von Remote-Clients stehen uns folgende Varianten zur Verfügung:
- Bridging:
Die zu überwachenden Hosts haben keinerlei lokal vorgehaltene Konfigurationsbestandteile. Der Master-Node (Icinga 2 Monitoring-Host) baut zu den Clients eine Verbindung auf und übermittelt die zu testenden Befehle und nimmt die Rückgabewerte über diese Verbindung auch entgegen. Im Grunde kann man hier von einem automatisierten gescripteten Überwachungsfunktionen via SSH1) sprechen. - Slave zu Master:
Hier sind alle Services und Checks lokal auf den jeweiligen Hosts konfiguriert. Die Clients senden bei dieser Ankoppelungsvariante die Daten zum Master-Node, dem Monitoring-Server. - Master zu Slaves:
Hier werden alle Konfigurationen auf dem Monitoring-Host (Icinga 2 Master) definiert und zu den betreffenden Clients übertragen. Man nennt diese Variante auch Cluster Configuration Synchroinistion.
Konfiguration
Paketfilter/Firewall
Bei den beiden Varianten Slave zu Master sowie Master zu Slaves erfolgt die Kommunikation über TCP/Port 5665. Die Kommunikation kann dabei sowohl vom Client/Slave zum Server/Maste erfolgen oder umgekehrt. Die Kommunikationsverbindung kann also bidirektional erfolgen; derjenige Host, der die Verbindung zu erst aufbaut, hat dan gewonnen. Somit werden wir diese Kommunikationsbeziehungen bei unseren Hosts entsprechend berücksichtigen.
Unter CentOS 7 wird als Standard-Firewall die dynamische firewalld verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbindungen kurz getrennt werden. Sondern unsere Änderungen können on-the-fly aktiviert oder auch wieder deaktiviert werden.
In unserem Konfigurationsbeispiel hat unser Icinga 2-Server die IP-Adresse 10.0.0.117 und zwei Hosts/Rechner mit den IP-Adressen 10.0.0.87 und 10.0.0.97
Icinga 2 Monitoring-Server
Aus Sicht unseres Monitoring-Servers brauchen wir also eine Firewall-Definition, die ausschließlich Verbindungen von den beiden Adressen 10.0.0.87 und 10.0.0.97 (Source-IP) auf die Destination-IP 10.0.0.117 auf Port 5665 TCP gestattet.
Mit Hilfe des Programms firewall-cmd legen wir nun eine permanente Regel in der Zone public, dies entspricht in unserem Beispiel das Netzwerk-Interface eth0 mit der IP 10.0.0.117 an. Als Source-IP geben wir die beiden IP-Adressen der Hosts, also die 10.0.0.87 und 10.0.0.97 an. Genug der Vorrede, mit nachfolgendem Befehl wird diese restriktive Regel angelegt.
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.87/32" port protocol="tcp" port="5665" destination address="10.0.0.117/32" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.97/32" port protocol="tcp" port="5665" destination address="10.0.0.117/32" accept"
Zum Aktivieren brauchen wir nun nur einen reload des Firewall-Daemon vornehmen.
# firewall-cmd --reload
Fragen wir nun den Regelsatz unserer iptables-basieten Firewall ab, finden wir in der Chain IN_public_allow unsere aktivierten Regeln.
# iptables -nvL IN_public_allow
Chain IN_public_allow (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 10.0.0.87 10.0.0.117 tcp dpt:5665 ctstate NEW 0 0 ACCEPT tcp -- * * 10.0.0.97 10.0.0.117 tcp dpt:5665 ctstate NEW 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 ctstate NEW
Icinga 2 überwachter Host/Client
Auf den beiden Client-Rechnern definieren wir nun auch jeweils eine Regel, die definiert, dass ausschließlich der Icinga 2-Monitoring-Server Verbindungen auf Port 5665 des Clients entgegen nimmt.
- Client 10.0.0.87:
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.117/32" port protocol="tcp" port="5665" destination address="10.0.0.87/32" accept"
Zum Aktivieren brauchen wir nun nur einen reload des Firewall-Daemon vornehmen.
# firewall-cmd --reload
- Client 10.0.0.97:
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.117/32" port protocol="tcp" port="5665" destination address="10.0.0.97/32" accept"
Zum Aktivieren brauchen wir nun nur einen reload des Firewall-Daemon vornehmen.
# firewall-cmd --reload