sdecoret - stock.adobe.com

Windows-Systeme mit Icinga for Windows überwachen

Für das Monitoring von Windows-Servern mit der bekannten Open-Source-Lösung Icinga steht mit Icinga for Windows ein spezielles Windows-Modul zur Verfügung.

Icinga gehört zu den bekanntesten Überwachungslösungen für Server und andere Geräte im Netzwerk. Zu der Open-Source-Lösung haben wir bereits das kostenlose eBook Netzwerk-/Serverüberwachung mit Icinga 2 veröffentlicht.

Seit Version 1 von Icinga for Windows lassen sich auch Windows-Server ohne Umwege überwachen. Icinga 1.x für Windows unterstützt, neben aktuellen Windows-Versionen wie Windows Server 2019 und Windows 10 auch Windows 7 und Windows Server 2008 R2.

Im Schwerpunkt zur Überwachung und Einrichtung setzen die Entwickler auf die PowerShell. Das Paket für Windows besteht aus drei Komponenten:

  • Icinga PowerShell Framework. Das Framework enthält die Cmdlets, um Icinga über die PowerShell zu steuern.

  • Icinga PowerShell Service: Damit können der Agent und das Modul als Systemdienst definiert werden.

  • Icinga PowerShell Plugins: Hiermit lassen sich die Überwachungsfunktionen erweitern.

Nach der Installation stehen 200 neue Cmdlets zur Überwachung zur Verfügung. Diese lassen sich natürlich auch in Skripten anbinden. Zu den Cmdlets gehören auch Read-IcingaAgentLogFile und Read-IcingaAgentDebugLogFile.

Damit lassen sich Protokolldateien auf den überwachten Windows-Servern direkt auslesen. Mit den Cmdlets können nicht nur die Überwachungsaufgaben auf Windows-Servern ausgeführt und an Icinga-Server geschickt werden. Auch die Bereitstellung der Komponenten inklusive des Agenten ist über die PowerShell-Module möglich. Die Installation der Icinga-2-Komponenten auf dem Server lässt sich jetzt ebenfalls über die PowerShell abrufen.

Zusätzlich ist eine ständige Erweiterung der Überwachungsfunktionen geplant. Die dazu notwendigen Module und Erweiterungen sollen in der Microsoft PowerShell Gallery zur Verfügung stehen. In Zukunft sollte es auch möglich sein, verschiedene Serverdienste in Windows mit Icinga for Windows flexibler zu überwachen. Dazu gehören zum Beispiel Active Directory, Exchange und Hyper-V.

Icinga für Windows installieren

Um Icinga für Windows zu installieren, können Sie die Einrichtung manuell vornehmen oder das vorbereitete Kickstart-Script verwenden. Das Skript steht auf Github zur Verfügung. Die Skripte können Sie auch in Azure Automation einbinden. Um das Modul zu installieren, verwenden Sie in der PowerShell den Befehl:

Install-Module -Name icinga-powershell-framework

Abbildung 1: Installation des Icinga-Agenten für Windows in der PowerShell.
Abbildung 1: Installation des Icinga-Agenten für Windows in der PowerShell.

Mit dem Befehl get-command -module icinga-powershell-framework werden die verfügbaren Befehle angezeigt. Besonders wichtig ist hier „Use-Icinga“

In der PowerShell kann nach der Installation mit „Use-Icinga“ sichergestellt werden, dass die entsprechenden Cmdlets zur Verwendung und Einrichtung des Moduls zur Verfügung stehen.

Das PowerShell Framework bietet Lösungen, um den Agenten selbst zu steuern. Mit dem folgenden Befehl können Sie die Protokolldatei auslesen:

Use-Icinga; Read-IcingaAgentLogFile

Abbildung 2: Anzeigen der übergeordneten Systemdaten des PowerShell-Moduls icinga-powershell-framework.
Abbildung 2: Anzeigen der übergeordneten Systemdaten des PowerShell-Moduls icinga-powershell-framework.

Das funktioniert natürlich erst dann, wenn auch ein Protokoll durch Icinga angelegt wurde. Hier gibt es auch die Möglichkeit nach Check-Commands zu suchen und andere Einträge anzuzeigen. Dazu können Sie zum Beispiel den folgenden Befehl nutzen:

Use-Icinga; Find-IcingaAgentObjects -Find ‘*CheckMemory*’

Die Installation des Agenten lässt sich ähnlich überprüfen:

Use-Icinga; Test-IcingaAgent

Die generelle Einrichtung des Frameworks erfolgt über einen Assistenten. Diesen starten Sie mit:

Use-Icinga

Start-IcingaAgentInstallWizard;

Anschließend erfolgt das Eingeben der Verbindungsdaten zum Icinga-2-Server. Wie bei anderen Servern senden die Befehle des PowerShell-Moduls hier anschließend die Daten zur Überwachung.

Icinga-PowerShell-Framework als Systemdienst in Windows betreiben

Es ist auch möglich das Framework als Windows-Dienst zu definieren. Dadurch lassen sich zum Beispiel auch CPU-Daten in verschiedenen Intervallen überwachen. Auf Windows-Servern wurde bisher hier auf den NSClient++ gesetzt. Dessen Aufgaben übernimmt das PowerShell-Framework, wenn es als Systemdienst konfiguriert wird. Hier können Sie anschließend weitere Plug-ins einbinden. Die Einrichtung kann über

Use-Icinga

Start-IcingaAgentInstallWizard;

auch automatisiert mit dem Assistenten erfolgen. Dazu müssen Sie die Service Binary von Github herunterladen. Die Entwickler empfehlen die ausführbare Datei des Dienstes im Verzeichnis C:\Program Files\Icinga-Framework-Service zu speichern. Diese Datei trägt die Bezeichnung icinga-service.exe. Die Installation führend Sie mit dem Icinga-PowerShell-Modul und diesem Befehl durch:

Install-IcingaFrameworkService -Path 'C:\Program Files\Icinga-Framework-Service\icinga-service.exe'

Abbildung 3: Plug-ins für Icinga können Sie mit der PowerShell hinzufügen und verwalten.
Abbildung 3: Plug-ins für Icinga können Sie mit der PowerShell hinzufügen und verwalten.

Für die Integration mit Icinga stellen die Entwickler ebenfalls Anleitungen zur Verfügung. Auf der Seite Icinga Basket Generator wird die Vorgehensweise zur Anbindung beschrieben.

Service-Checks mit Icinga für Windows konfigurieren

Um zum Beispiel CPU-Loads in verschiedenen Intervallen abzufragen, können Sie das nach der Installation des Frameworks als Dienst über den Background-Daemon in der PowerShell auf dem Windows-Server so konfigurieren:

Register-IcingaBackgroundDaemon -Command ‘Start-IcingaServiceCheckDaemon’

Danach lassen sich die einzelnen Service-Checks einrichten. Sollen zum Beispiel für den CPU-Load alle 30 Sekunden Metriken für die Intervalle 1, 3, 5 und 15 Minuten gesammelt werden, wird das mit dem folgenden Befehl registriert:

Register-IcingaServiceCheck -CheckCommand ‘Invoke-IcingaCheckCPU’ -Interval 30 -TimeIndexes 1, 3, 5, 15;

Wer sich etwas mit dem Thema auseinandersetzt, kann auch eigene Funktionen integrieren. Dazu stellen die Entwickler einen Developer Guide zur Verfügung. Hier sind vor allem die Cmdlets New-IcingaCheck und New-IcingaCheckPackage interessant. Hier lassen sich selbst eigene Checks schreiben.

Im Guide zeigen die Entwickler, wie man mit dem PowerShell-Framework eigene Checks erstellt und diese an Icinga anbindet. Hier arbeitet Icinga sehr eng mit der PowerShell zusammen. Mit den Standard-Plug-ins von Icinga für Windows können, neben den bereits gezeigten Checks, weitere erstellt werden. Beispiele dafür sind auf der Seite Icinga Plug-ins zu finden.

Erweiterungen für Icinga für Windows lassen sich mit der PowerShell installieren. Dazu wird zunächst das Modul für die Verwaltung der Plug-ins installiert:

Install-Module 'icinga-powershell-plugins';

Mit Use-Icinga lädt die PowerShell die Plug-ins, sodass diese in der aktuellen Sitzung verfügbar sind und konfiguriert werden können. Mit Get-IcingaHelpThresholds sind in der PowerShell die aktuellen Grenzwerte sowie Beispiele zu sehen. Um etwa Grenzwerte für die Überwachung der CPU in der PowerShell zu definieren, können Sie folgenden Befehl verwenden:

Invoke-IcingaCheckCpu -Warning 50 -Critical 75

Auf diesem Weg können Sie auch verschiedene Grenzwerte für unterschiedliche CPU-Kerne definieren:

Invoke-IcingaCheckCpu -Warning 50 -Critical 75

Auf Windows-Servern sind die Ereignisanzeigen natürlich besonders interessant. Hier lässt sich festgelegen, dass Icinga auch diese überwacht und die Daten an den angebundenen Icinga 2-Server schickt:

Invoke-IcingaCheckEventlog -LogName Application -IncludeEntryType Warning -Warning 100 -Critical 1000

Die Systemdienste auf den überwachten Servern lassen sich mit einem Plug-in ebenfalls anbinden und deren Status an Icinga übergeben. Dazu verwenden Sie den Befehl Invoke-IcingaCheckService.

Erfahren Sie mehr über Netzwerksoftware