Auf dieser Seite beschreibe ich die Installation des Powershell-Frameworks Icinga for Windows auf einem Windows-Host sowie die Einbindung in den Icinga2 Monitoring-Host.

Als, so ziemlich einzige Voraussetzung haben wir Windowsseitig das .Net-Framework 4.7 sowie die PowerShell in der Version 5.1. Im Icinga2 Host sollte es eine Hostgruppe für die Windows-Hosts geben, da wir die Anbindung mit der Self-Service-API des Icinga-Directors machen und dafür benötigen wir den jeweiligen Self-Service API-Key. Diesen finden wir auf dem Agent-Tab in der jeweiligen Host-Gruppe und notieren ihn für die Installation.

Nun führen wir in einer administrative PowerShell auf dem Windows-Host die Installation des Powershell-Frameworks für Icinga aus. Hierzu müssen wir ein paar Module von PSGallery installieren.

Je nach Stand des Windows-Hosts, ob er „frisch“ ist oder in wie weit er gepached ist führt die Ausführung dazu das die Powershell meldet, dass keinerlei Übereinstimmigkeiten mit dem Paketnamen gefunden werden konnten. Falls dieses passiert prüfen wir zunächst ob überhaupt ein Powershell-Repository verfügbar ist.

Get-PSRepository

Sollte die Powershell melden, dass keine Paketquellen gefunden werden konnten.

Müssen wir die Paketquellen einmal neu registrieren mit dem folgenden Befehl.

Register-PSRepository -Default -Verbose

Anschließend sollte ein erneuter Aufruf des Get-PSRepository Commandlets die folgende Ausgabe liefern.

Jetzt erfolgt die eigentliche Installation des Powershell-Frameworks von Icinga for Windows mit dem folgenden Commandlet.

Install-Module -Name icinga-powershell-framework

Sollte es zu der Fehlermeldung: Unable to resolve package source ‘https://www.powershellgallery.com/api/v2’ kommen schaft abhilfe:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Die Installation des Agents führen wir mit Hilfe des AgentWizards durch. Hierzu benötigen wir unter anderem den Selfservice API-Key aus dem Icinga2-Host und auch das CA-Zertifikat welches wir uns vom Icinga2-Host auf den Windowa-Host kopieren. Dieses trägt in der Regel den Namen ca.crt. Wie kopieren dieses der Einfhachheit halber nach C:\. Jetzt starten wir den Agent Install Wizard der direkt dazu führt das unser Windows-Host per Selfservice im Director des Icinga2-Hosts als neuer Windows-Host registriert wird.

Use-Icinga
Start-IcingaAgentInstallWizard -ServiceUser "LocalSystem"

Wir beantworten die Fragen …siehe BILDER!!!

Anschliessend sollten wir im Aktivitätslog des Directors im Icinga2-Host den neuen Windows-Host sehen und deployen können.

Als nächstes installieren wir das Framework-Service Binary.

$ServiceData = Get-IcingaFrameworkServiceBinary;
Install-IcingaFrameworkService -Path $ServiceData.ServiceBin -User 'LocalSystem';
Get-Service 'icingapowershell'
Register-IcingaBackgroundDaemon -Command 'Start-IcingaServiceCheckDaemon';

Restart-IcingaService 'icingapowershell';

Nun installieren wir die Powershell-Plugins und testen die Icinga-Agent Konfiguration.

Install-Module 'icinga-powershell-plugins';
Test-IcingaAgentConfig

Der Icinga2 Dienst ist mit dem Konto „Netzwerkdienst“ konfiguriert. Da dies mit einigen Checks nicht korrekt funktioniert ändern wir das von diesem Dienst genutzte Konto auf „LokalesSystem“.

Jetzt können wir schon in der Powershellkonsole einen Icinga-Check aufrufen um zu sehen dass alles wie gewünscht funktioniert.

Invoke-IcingaCheckUpdates

Als nächste Aufgabe werden wir den Windows-Host im Director deployen, so dass wir ihn normal verwenden können. Dazu gehen wir in den Director und deployen die Konfigurationsänderung. Kurze Zeit später sehen wir den neuen Host und es wird standardmäßig per host-alive die Verfügbarkeit geprüft.


Ersteinrichtung der Framework-Plugin-Checkdefinitionen im Icinga Director. Wenn der Director für die Konfiguration im Icinga2 verwendet wird, so kann man ein Konfigurationsbasket vom Icinga-Agent auf dem Windows-Host erstellen lassen, der alle Check-Commandos importiert. So braucht man nicht alle Kommandos händisch anzulegen, dies erspart bei der Erstkonfiguration eine Menge Arbeit.

Hierzu öffnen wir auf dem Windows-Host eine admistrative Powershell und geben die folgenden Befehle ein.

Use-Icinga
Get-IcingaCheckCommandConfig -OutDirectory 'C:\'

Dies erstellt uns unter C:\ eine JSON-Datei die wir direkt im Director importieren können. Hierzu wechseln wir in den Director und klicken auf „Konfigurationsbaskets“.

Jetzt klicken wir auf „Hochladen“.

Jetzt wählen wir die auf dem Windows-Host erstellte Konfigurationsbasket (JSON) Datei aus, vergeben einen Namen und klicken auf den Button „Hochladen“.

Die Daten werden eingelesen und die Inhalte dieses Baskets werden angezeigt. Dann klicken wir auf Absenden.

Nach dem Absenden erscheint oben ein neuer Tab mit dem Namen „Snapshot“. Wenn wir hier drauf klicken bekommen wir den Inhalt des neuen Snapshots mit den Daten aus dem Basket angezeigt. Hier sehen wir das dieser Snapshot 41 neue Datenlisten, 25 Kommands und 230 Datenfelder enthält. Nun klicken wir den Snapshot selbst an. (Zeile mit den Datenlisten, Kommandos und Datenfeldern).

Hier können wir nun detailliert sehen welche Daten neu angelegt oder vielleicht auch geändert werden. Dort klicken wir nun auf „Wiederherstellen“.

Jetzt wählen wir die korrekte Director-Datenbank aus. Falls nur eine vorhanden ist ist diese schon selektiert und wir klicken auf Wiederherstellen.

Geraume Zeit später können wir im Aktivitätslog des Directors sehen dass es neue Änderungen gibt die wir deployen können. Dies sind die neuen Check-Kommandos zur Nutzung des Powershellframeworks.


  • Deinstallation und Neuaufnahme – ok mit deinstall Commandlet
  • parallele NS++ Client Installation – ok mit dem 2048bit Key Hotfix von TK

NSClitent++

Map Module for Icinga Web 2

Location Datatype Module for Icinga Director