Icinga Director mit Windows Agent und NSClient

0

Da das SNMP Feature aus Windows entfernt wird und SNMP nur eine begrenzte Möglichkeit hat, Werte zu monitoren (zumindest im Standard), lohnt sich ein Blick auf den Icinga2 Agent und das NSClient++ Addon. Mit meiner Icinga2 Instanz monitore ich auch Remote Windows Server und habe mittels Icinga2 Director eine schöne Verwaltung.

Bisher habe ich noch keine effektive / gute Möglichkeit des Icinga Agent Auto Update gefunden – daher ist diese Anleitung nicht unbedingt für sehr viele Hosts gedacht, sofern kein zusätzliches Software Deployment stattfindet. In einer weiteren Anleitung werde ich auf die Einrichtung des Icinga Powershell Frameworks eingehen, womit Auto Updates einfacher möglich sind.

Die Vorteile des Icinga2 Agents mit dem NSClient++ Modul sind die weiterführenden Checks, die durchgeführt werden können – u.a.:

  • Logfiles
  • Eventlog
  • Prozess und Service Checks

Vorbereitung

Voraussetzung für dieses Konstrukt ist, dass Icinga2 mit Director konfiguriert wurde und die API Schnittstelle eingerichtet wurde – näheres dazu hier im Blog. Auch sollten bereits Host- und Servicevorlagen angelegt sein – diese haben nur generelle Einstellungen zu den Checks selbst.

Auf dem zu überwachenden Windows Host muss jeweils das Icinga2 Installationsprogramm heruntergeladen und installiert werden. Nach der Installation muss der Icinga2 Agent Wizard gestartet werden.

Konfiguration des Agents

Beim Aufruf des Icinga Agent Wizards wird automatisch der Hostname ausgefüllt. Wichtig ist, den API Endpoint darunter zu definieren. Der Hostname des Endpoints ist der Hostname des Icinga Servers. Den kannst du auch in der Modulkonfiguration des Directors nachsehen, da du ihn hier hinterlegt hast:

Die Verbindung muss auf Port 5665 geöffnet werden, damit der Agent mit eurem Icinga Master / Satelliten über diesen Port kommunizieren kann. Außerdem die ausgewählten Haken so übernehmen. Damit könnt ihr vom Master Befehle schicken und auch Konfigurationsänderungen. Der NSClient++ wird nun installiert.

Installation des NSClient++

Die Installation des NSClients ist unkompliziert. Da wir Icinga verwenden, muss er als generic Dienst installiert werden:

Als Empfehlung habe ich aus einem anderen Blog mitgenommen, dass man die Beispielkonfigurationen mitinstallieren soll:

Nach einer weiteren Seite kommt nun der wichtigste Schritt: das Password herauskopieren für Icinga (das ist das NSCP API Passwort) und die entsprechenden Haken samt Secure Option setzen, wenn die Server extern gehostet sind und die Anmeldedaten über das Internet gehen. Im Intranet reicht safe mode.

Unter Allowed Hosts müssen nun alle Hosts eingetragen werden, die später auf die NSClient Checks zugreifen sollen. Ich setze hier immer den Hostname des Icinga-Servers ein (was das Debugging direkt an den NSClient einfacher macht) und den Hostnamen des Clients selbst, da ich es schonmal bei manchen Checks erlebt habe, dass sie einen 403 zurückliefern, weil der eigene Clients nicht erlaubt war.

Auch hier später die Firewallsettings beachten, da Regeln automatisch für den NSClient hinzugefügt werden.

Damit bestimmte Checks wie Eventlog ausgeführt werden können, muss man noch die nsclient.ini unter C:\Program Files\NSClient++ bearbeiten und die entsprechenden Dienste aktivieren (hier empfiehlt sich Notepad++):

Nach dem Speichern den Dienst neustarten unter Dienste.

Icinga2 Konfiguration

Damit sich der Agent mit dem Master Icinga verbinden kann, sollte man die Icinga2 Konfiguration überprüfen. Es empfiehlt sich immer eine FQDN zu nehmen, da sonst die Verbindung nicht zu klappen scheint. Überprüf daher die Dateien zones.conf und constants.conf.

In der constants.conf muss für const ZoneName und const NodeName der volle Hostname der Agent Maschine gesetzt sein.

Die zones.conf muss beim object Endpoint + Host den gleichen Namen haben wie der endpoint unter object Zone „master“. Außerdem muss der volle Hostname der Agent Maschine aus der constants.conf unter dem eigenen object zone + Endpoint gesetzt sein. Ich habe das farblich passend hervorgehoben:

Nach dem Speichern den Dienst ebenfalls neustarten unter Dienste.

Firewall Einstellungen

Es müssen zwei Firewallsettings auf der Windows Agent Maschine getroffen werden, damit die Ports / Dienste nicht für jedermann offen im Netz verfügbar sind.

Icinga2 benötigt den Port 5665 (TCP) für die Kommunikation zum Agent. Dieser Port muss für eingehende Verbindungen nur für die Icinga Master IP erlaubt angelegt werden:

Und für den NSClient++ muss man bei der bereits bestehenden Firewallregel ebenfalls die IP-Adresse von extern einschränken:

Icinga CA signieren

Zu allerletzt muss der Fingerprint des Clients in der Icinga VM signiert werden:

icinga2 ca list

Dann den kompletten fingerprint kopieren und

icinga2 ca sign [fingerprint]

Nun kann der Host im Director angelegt werden und anschließend ausgerollt.


Du möchtest regelmäßig Neuigkeiten von meinem Blog? Trag dich für meinen Newsletter ein:

Leave A Reply

Your email address will not be published.