Seite wählen

NETWAYS Blog

Icinga for Windows v1.6.0 – Einfacher. Zentraler. Sicherer.

Die Kollegen von Icinga haben letzte Woche Icinga for Windows in Version v1.6.0 veröffentlicht. Auch wenn diese Version keine neuen Plugins für die Überwachung bietet, hat sich im Bereich des Icinga PowerShell Frameworks einiges getan. Dadurch ist die Lösung nicht nur einfacher zu verwenden, sondern auch noch zentraler verwaltbar und sicherer.

Dürfen wir vorstellen: Die IMC

Die IMC (Icinga Management Console) wurde im Rahmen vergangener Icinga for Windows als experimental eingeführt. Ziel war es, ein einfaches Management zu schaffen, um die meisten Funktionalitäten über eine UI abbilden zu können. Dadurch ist es nicht mehr notwendig, sich alle Befehle von Icinga for Windows zu merken oder diese zu kennen – sondern die Konfiguration erfolgt direkt darüber.

Im Zuge der Einführung der IMC, wurde ebenfalls ein neuer Setup Wizard generiert, welcher nicht nur einfacher und intuitiver ist als der alte, sondern auch noch über eine Hilfe verfügt, welche einem erklärt, welche Eingaben im jeweiligen Bereich notwendig sind und was diese bedeuten. Die Konfiguration ist hierbei im nicht-advanced Modus auf die absoluten Grundlagen beschränkt, um schnell ans Ziel zu kommen. Die restlichen Einstellungen im advanced Teil, können simpel eingesehen und geändert werden, wurden jedoch so ausgewählt, dass man in vielen Umgebungen auf eine Änderung sogar verzichten könnte.

Zentrale Verwaltung mit Repositories

Einer der großen Kritikpunkte an Icinga for Windows war die Komponenten Installation. Bisher musste jede Komponente einzeln heruntergeladen und mit einem Pfad bei der Installation hinterlegt werden. Mit Icinga for Windows v1.6.0 wurde nun ein Repository-Management hinzugefügt. Hierdurch können direkt entweder die offiziellen Repositories von Icinga for Windows auf packages.icinga.com angebunden werden oder ein eigenes, zentrales. Icinga for Windows bietet dabei die Möglichkeit, vorhandene Repositories zu synchronisieren, um diese in seiner lokalen Umgebung zu spiegeln. Dadurch kann die Installation von Systemen, welche nicht in das Internet können, deutlich vereinfacht werden. Ein Beispiel wäre hier, die offiziellen Icinga Repositories auf seinen Icinga 2 Master zu synchronisieren, um dort ein Repository für alle Systeme bereitzustellen.

Im Falle von DMZ Systemen kann das Repository wiederum von zentralen Icinga 2 Master auf Icinga Satellitensysteme synchronisiert oder aber auf zentrale File-Shares abgelegt werden, um von dort die Komponenten zu installieren. Für das Update von Repositories gibt es ebenfalls Kommandos, die eine Aktualisierung ermöglichen.

Der Vorteil des Repositories liegt darin, dass direkt die aktuellen Versionen der jeweiligen Komponenten installiert oder mit einem simplen Befehl die gesamte Umgebung aktualisiert werden kann. Sollte es aus bestimmen Gründen notwendig sein, kann die Version von einzelnen Komponenten auch gelockt werden. Das bedeutet, sofern eine ältere Version installiert ist, wird bis zur gelockten Version aktualisiert. Ist bereits die gelockte Version installiert und eine neue verfügbar, wird diese übersprungen.

Weitere Details hierzu gibt es direkt in der Icinga for Windows Repository Dokumentation.

Mehr Sicherheit durch JEA

JEA steht für Just-Enough-Administration und ist eine Lösung von Microsoft für PowerShell. Durch JEA können einzelne Benutzer, welche keine Administratoren sind, Befehle mit erhöhten Rechten im System Kontext ausführen. Die Funktionalität ist dabei ähnlich wie sudo auf Linux.

In der Vergangenheit gab es des Öfteren Probleme, das diverse Überwachungsmöglichkeiten nicht genutzt werden können, da der Benutzer beispielsweise nicht in der Hyper-V Administrator Gruppe ist und deshalb den Status der virtuellen Maschinen nicht abfragen kann. Ein weiteres Problem ergibt sich auch, wenn man diverse Services oder Tasks überwachen möchte, welchen mit einem normalen Standardbenutzer nicht eingesehen werden können.

Durch ein JEA-Profil wird es erlaubt, dass ein bestimmter Benutzer diese Plugins nun im Systemkontext mit erhöhten Rechten ausführt. Dabei wird von Icinga for Windows ein Profil basierend auf allen installierten Komponenten erstellt. Dieses Profil deckt jedoch nur die notwendigen Befehle zum Ausführen von Plugins und Komponenten ab. Für Icinga for Windows notwendigen Befehle für das Management der Umgebung, werden dabei nicht berücksichtigt.

Um das ganze abzurunden und die Trennung perfekt zu machen, bietet Icinga for Windows die Möglichkeit an, einen Managed User mit dem Namen icinga anzulegen. Dieser Benutzer ist ein lokaler Benutzer auf dem System, ohne Berechtigungen sich lokal oder per RDP anzumelden. Der einzige Zweck ist, dass er als Service Benutzer fungiert und den Icinga Agent sowie den Icinga for Windows Dienst startet. Im Zusammenspiel mit dem von Icinga for Windows generierten JEA-Profil, kann dann das System vollständig überwacht werden. Die Verwaltung des Benutzers obliegt dabei vollständig Icinga for Windows und im Rahmen der Erstellung des Benutzers oder bei diversen Änderungen an den Services während der Icinga for Windows Installation oder Updates, wird jedes Mal ein neues, zufälliges 60-stelliges Password generiert und dem Benutzer zugewiesen. Dieses Password wird nach Ende der jeweiligen Installationsschritte intern wieder verworfen und wird nirgends abgelegt. Hierdurch wird eine Kompromittierung des Systems ohne bereits vorhandene Administratorrechte deutlich erschwert.

Weitere Details sowie Anforderungen, finden sich direkt in der Icinga for Windows JEA Dokumentation.

Performance Gewinn durch API-Check Forwarder

Ein weiteres Thema welches mit Icinga for Windows v1.6.0 von experimental als stabil gilt, ist der API-Check Forwarder, welcher in vergangenen Versionen eingeführt wurde. Hintergrund dieser Lösung ist, dass das Starten sowie die Ausführung von PowerShell Befehlen innerhalb der von Icinga 2 gestarteten Shells vor allem bei Systemen mit weniger Kernen eine erhöhte Systemlast verursachen. Durch den API-Check Forwarder wird zumindest der Ausführungsteil ausgelagert, da alle Befehle für die Plugin-Ausführung innerhalb des Icinga for Windows Dienstes durchgeführt und lediglich das Ergebnis an die lokale Shell weitergereicht wird.

Für diese Lösung werden zwei zusätzliche von Icinga bereitgestellte Komponenten benötigt, um eine REST-Api bereitzustellen sowie die Checks per API auszuführen. Beides kann direkt über die neuen Icinga Repositories installiert werden. Für eine sichere Verbindung werden direkt die Zertifikate des Icinga Agent verwendet. Nach Bedarf können jedoch auch eigene Zertifikate verwendet werden. Wichtig dabei ist, dass eine Erstellung des REST-Api Sockets ohne ein TLS Zertifikat nicht möglich ist.

In der zugehörigen Dokumentation zum API-Check Forwarder von Icinga for Windows gibt es weitere Details.

Was bringt die Zukunft?

Die nächste Version von Icinga for Windows v1.7.0 ist bereits zur diesjährigen OSMC eingeplant. Hier werden wir noch weiter den Schwerpunkt auf Performance sowie eine Vielzahl von Optimierungen für Entwickler legen, um es noch einfacher zu machen eigene Plugins und Komponenten zu entwickeln. Ein entsprechender Talk ist ebenfalls eingereicht.

Wir freuen uns auf eine rege Teilnahme und wünschen bis dahin alles Gute!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Icinga for Windows – Webinar Kalender

Im Februar hat das Icinga-Team sehr erfolgreich die neue Lösung zur Überwachung von Windows-Systemen veröffentlicht. Hierbei handelt es sich um ein auf PowerShell-Basis bereitgestelltes Framework inklusive Plugins, welches individuell erweitert werden kann. Um den Einstieg zu erleichtern haben wir eine Reihe von Webinaren geplant, um sowohl die Installation und Grundeinrichtung aber auch die Entwicklung von eigenen Plugins und Modulen zu veranschaulichen.

Starten werden wir direkt am Mittwoch, den 11. März 2020 um 10:30 mit dem Webinar „Icinga for Windows – Einstieg“. Eine kostenfreie Registrierung und Teilnahme ist wie immer möglich. Anschließend werden wir das Webinar auf unserem YouTube-Kanal online stellen.

Darüber hinaus haben wir noch weitere Themen wie ein Webinar zur Plugin-Entwicklung und Daemon-Entwicklung geplant. Eine vollständige Übersicht stellen wir natürlich auch bereit:

Thema Datum Anmeldung
Icinga for Windows – Einstieg 11. März 2020 – 10:30 Uhr Anmeldung
Icinga for Windows – Custom Plugin Development 01. April 2020 – 10:30 Uhr Anmeldung
Icinga for Windows – Custom Daemon Development 06. Mai 2020 – 10:30 Uhr Anmeldung

Auf weitere Themen gehen wir gerne ein – Vorschläge können dabei direkt an uns übermittelt werden. Wer Unterstützung bei der Einrichtung, Erweiterung und dem Roll-Out benötigt, kann hierfür ebenfalls auf uns zukommen.
Eine Anfrage kann direkt über unser Kontaktformular eingekippt werden.

Wir freuen uns auf die Teilnahme sowie zahlreiches Feedback!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Icinga for Windows 1.0 – Eine neue Ära

Seit heute ist der erste offizielle, stabile Release des Icinga für Windows Pakets in Version 1.0 verfügbar. Das Paket besteht aus drei individuellen Komponenten – dem Icinga PowerShell Framework, dem Icinga PowerShell Service und den Icinga PowerShell Plugins. In Kombination bilden sie den Grundbaustein für die künftige Überwachung von Windows Systemen – inklusive Software, Hardware und alles was dazugehört.

Neben der klassischen Überwachung der Windows Systeme geht das Framework aber noch einen Schritt weiter: Mit über 200 Cmdlets wird nicht nur das Monitoring an sich sichergestellt, sondern auch das Deployment der einzelnen Komponenten inklusive Icinga 2 Agent. Darüber hinaus wird die Verwaltung des Agents, die Konfiguration, aber auch das Troubleshooting auf Windows System deutlich vereinfacht: Für die gängigsten Befehle wurden Wrapper-Cmdlets entwickelt, mit denen neben dem Logfile-Tracing auch Features aktiviert und deaktiviert werden können, Icinga 2 Objects auslesbar und durchsuchbar gemacht wurden oder die Funktionsfähigkeit der Icinga 2 Installation auf dem lokalen System überprüft werden kann.

Vereinfachte Installation

Folgt man der Installationsanleitung, dann stellt man fest, dass die meisten Schritte vereinfacht über einen Installations-Wizard durchgeführt werden können. Der große Vorteil dabei ist, dass die Grundinstallation nur auf einem System vollständig manuell durchgeführt werden muss. Ist der Wizard erst einmal durchgeklickt, erhält man einen Konfigurations-String, der auf einem anderen System einfach ausgeführt werden kann, nachdem dort das Framework über den Kickstart installiert worden ist. Somit ist der künftige Rollout der Systeme einfacher denn je.

Standardisiertes Monitoring

Plugins bieten die Möglichkeit, schnell und effizient einzelne Komponenten zu überwachen. Die Schwierigkeit liegt darin, den Output der Plugins richtig zusammen zu bauen und Performance-Metriken sauber zu kapseln. Zum Schluss bleibt dann nur noch das Einpassen in das standardisierte Threshold-Verhalten der Icinga Plugins sowie die Ausführung der bekannten Prüfung, ob ein Wert nun Ok, Warning, Critical oder vielleicht doch Unknown ist.

All das wird mit dem Icinga PowerShell Framework deutlich vereinfacht, denn es werden einige Funktionen bereitgestellt, die sich genau um diese Tasks kümmern. Am Ende des Tages holt man sich einfache seine Daten über PowerShell Cmdlets und packt diese in ein Icinga Check-Objekt. Mit den Informationen, die das Objekt erhält, kann anschließend geprüft werden, welchen Status das Objekt hat und mittels einem Check-Result Objekt in ein gültiges Icinga 2 Format gebracht werden. Der Output ist anschließend für alle Plugins standardisiert.

Zeitintervall-Metriken

In der Vergangenheit lag der große Vorteil von Lösungen wie NSClient++ darin, dass diese als Dienst gestartet werden konnten und dabei Metriken gesammelt haben. Hierdurch konnte man auch auf Windows beispielsweise die CPU-Load in Intervallen von 1, 3, 5 und 15 Minuten in den Performance-Daten abbilden. Installiert man das PowerShell Framework als Dienst, ist dieser Zustand für jedes Plugin ebenfalls abbildbar. Hierfür ist lediglich der Background-Daemon für den Service Check mittels

Register-IcingaBackgroundDaemon -Command ‚Start-IcingaServiceCheckDaemon‘

zu registrieren. Anschließend können einzelne Service-Checks für die regelmäßige Ausführung konfiguriert werden. Möchte man für die CPU-Load alle 30 Sekunden Metriken für die Intervalle 1, 3, 5 und 15 Minuten sammeln, registriert man den Service-Check entsprechend

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

Anschließend startet man den PowerShell Dienst neu und erhält alle Metriken in den gewünschten Intervallen:

Administrationsunterstützung

Wer den Icinga 2 Agent auf Windows administriert, muss auch hier öfter einmal die Konsole zur Hand nehmen und das Icinga 2 Binary mit diversen Befehlen starten. Das PowerShell Framework bietet auch hierfür einige Lösungen, da – wie bereits erwähnt – gängige Befehle in einem Wrapper-Cmdlet hinterlegt sind. Ein einfaches Parsen und stetiges Lesen der Logfiles erfolgt damit über einen einzigen Befehl – ohne am Ende in das Icinga Verzeichnis navigieren oder die Logdatei suchen zu müssen:

PS> Use-Icinga; Read-IcingaAgentLogFile
[2020-02-19 14:40:31 +0100] information/RemoteCheckQueue: items: 0, rate: 0/s (6/min 30/5min 90/15min);
[2020-02-19 14:40:41 +0100] information/RemoteCheckQueue: items: 0, rate: 0/s (12/min 60/5min 180/15min);

Sucht man mittels icinga2 object list nach bestimmten Check-Commands oder generellen Einträgen, gibt es auch hierfür eine elegante Lösung:

PS> Use-Icinga; Find-IcingaAgentObjects -Find ‚*CheckMemory*‘
Line #4948 => „Object ‚Invoke-IcingaCheckMemory‘ of type ‚CheckCommand‘:“
Line #4950 => “ * __name = „Invoke-IcingaCheckMemory““
Line #4955 => “ * value = „Use-Icinga; exit Invoke-IcingaCheckMemory““
Line #4958 => “ * value = „$IcingaCheckMemory_String_CriticalBytes$““
Line #4961 => “ * value = „$IcingaCheckMemory_Object_CriticalPercent$““
Line #4964 => “ * set_if = „$IcingaCheckMemory_Switchparameter_NoPerfData$““
Line #4967 => “ * value = „$IcingaCheckMemory_Int32_Verbosity$““
Line #4970 => “ * value = „$IcingaCheckMemory_String_WarningBytes$““
Line #4973 => “ * value = „$IcingaCheckMemory_Object_WarningPercent$““
Line #4986 => “ * name = „Invoke-IcingaCheckMemory““
Line #4994 => “ * templates = [ „Invoke-IcingaCheckMemory“, „plugin-check-command“, „PowerShell Base“, „plugin-check-command“, „plugin-check-command“ ]“

Damit wird die generelle Administration nicht nur einfacher, sondern mittels PowerShell Remote-Execution können auch mehrere Systeme gleichzeitg abgefragt und Statusinformationen eingesammelt werden.

Um sicherzustellen, dass der Agent korrekt ausgeführt wird, der Dienst gestartet werden kann und alle notwendigen Komponenten vefügbar sind, gibt es einen simplen Test, der alle Funktionalitäten überprüft:

Einfache Erweiterbarkeit

Alles in allem ist das Framework so gebaut, dass es eine solide Basis für weitere Entwicklungen bietet – sei es direkt von Seiten Icinga, NETWAYS oder aus der Community. Der Developer Guide bietet schon jetzt grundlegende Erklärungen und Erläuterungen und wird in den nächsten Wochen noch erweitert. Wer sein eigenes PowerShell Modul entwickeln möchte, um Plugins für die Überwachung oder eigene Background-Daemons bereitzustellen, der findet mit diesem Framework das nötige Werkzeug.

Live Webinar

Wer sich einen eigenen Eindruck über das Icinga PowerShell Framework und dessen zahlreiche Möglichkeiten machen möchte, der sei herzlich zu unserem Icinga for Windows – Einstieg“ Webinar am 11. März 2020 um 10:30 Uhr eingeladen. Wir freuen uns wie immer auf eine rege Teilnahme.

Wer Unterstützung bei der Installation und Konfiguration oder bei der Entwicklung eigener Plugins benötigt, kann natürlich gerne Kontakt mit uns aufnehmen. Ansonsten freuen wir uns natürlich über Feedback und breite Unterstützung aus der Community!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

nsClient++ mit ssl Teil 2/2

Da es mittlerweile schon etwas her ist, dass ich den ersten Teil dieses Posts geschrieben habe, fühlte ich mich diese Woche genötigt die damals angekündigten Informationen heute mal in einen neuen Blogpost zu gießen.
Heute soll es um den eigentliche Abfrage des NSClient gehen.

Zertifikate

Hierzu brauchen wir als erstes einen auf Windows installierten NSClient++. Dieser benötigt einen aktiven nrpe Server und ein paar Zertifikate. Die Zertifikate kann man auf dem klassischen Weg mit openSSL auf der Commandline erstellen oder man vereinfacht sich die Sache und nimmt ein grafisches Tool. Ich habe mich dabei für GnoMint entschieden, da hier die Komplexität so gering ist wie es noch nie vorher gesehen habe. Zusammengefasst muss man 5 Knöpfe drücken und hat zum Schluss zwei CA files, die jeweils ein Zertifikat autorisieren. Diese muss man in in zwei Ordner exportieren und anschließend dem Agent und dem Client unterschieben.
 

Anlegen und zuordnen der Zertifikate + CA

Anlegen und zuordnen der Zertifikate + CA


Man sieht in diesem Screenshot ganz gut dass das CA-file, welches auf dem Server liegen wird das Zertifikat autorisiert welches auf der Client Seite liegen wird und anders herum.

Der Agent

Nachdem NSClient++ auf gewohnte weise installiert wurde muss man jetzt noch ein paar einstellungen anpassen.
mehr lesen…

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

nsClient++ mit ssl Teil 1/2

Sicherheit durch Verschlüsselung ist nicht nur auf den meisten Internetseiten und und im Emailverkehr (zumindest vom Client zum Server) mittlerweile Standard. Auch innerhalb von Unternehmen laufen immer mehr Verbindungen über SSL ab.
Im Monitoring sollte Sicherheit eigentlich ganz oben auf der Agenda stehen, jedoch ist gerade beim Windows Monitoring mit check_nrpe und ganz besonders check_nt nicht alles zum besten bestellt. Währen check_nrpe wenigstens eine grundlegende Verschlüsselung bietet sendet check_nt seine Daten in Klartext.
Heute möchte ich euch daher zeigen wie man eine Sichere Verbindung mit nsclient++ herstellt. Hierbei wird nsclient++ auf dem Windows Host als Server/Agent eingesetzt und auf Icinga-Seite als Client.
Zur Verschlüsselung und Authentifizierung wird SSL mit CA und Zertifikaten engesetzt.
Als erstes muss man sich auf Linux Seite nsclient++ kompilieren. Das ist nicht schwer, hält jedoch ein paar Fallstricke bereit. Ich beschreibe den Vorgang hier exemplarisch für ein Debian System,
Zuerst installieren wir die notwendigen Abhängigkeiten.
aptitude install -y git build-essential cmake python libssl-dev libboost-all-dev python-dev libprotobuf-dev protobuf-compiler
# Und zusätzlich
aptitude install libcrypto++-dev libcrypto++9
aptitude install libzmq1 libzmq-dev
aptitude install libtinyxml2-dev libtinyxml2.6.2

Jetzt können wir den Git Snapshot herunterladen. Auf grund eines Problems im aktuellen Source Code greifen die dabei auf den 0.4.1 Branch zurück.
git clone https://github.com/mickem/nscp.git
git checkout 0.4.1
# aktuellen Branch anzeigen:
git branch

Um einem weiteren kleinen Bug zu entgehen muss noch eine Datei im jetzt entstandenen Verzeichnis umbenannt werden.cd nscp/build
mv FindTinyXML2.cmake FindTINYXML2.cmake
Es ist tatsächlich wahr. Linux ist case-sensitive. Weil in dem libtinyxml2 Paket die Datei tinyxml2.cpp fehlt besorgen wir uns schnell eine neue und kopieren sie ins richtige Verzeichnis. Bei der Gelegenheit nehmen auch gleich noch eine passende tinyxml2.h mit.
wget https://raw.github.com/leethomason/tinyxml2/master/tinyxml2.cpp
wget https://raw.github.com/leethomason/tinyxml2/master/tinyxml2.h
mv tinyxml2.cpp /usr/include/
mv tinyxml2.h /usr/include/

Nach diesen ganzen Vorarbeiten kann es jetzt an das eigentliche kompilieren gehen. Zuerst erstellen wir ein neues Verzeichnis und wechseln hinein. Das ganze sollte folgendermaßen aussehen.
mkdir build
tree -L 1
.
├── build     # build verzeichnis
└── nscp      # git snapshot
cd build

Hier wird jetzt konfiguriert und anschließend kompiliert.
cmake ../nscp
make
# and check it
make test

Damit ist der Client fertig, jetzt ist der Windows Agent an der Reihe. Hier muss nichts kompiliert werden. Benutze einfach das fertige zip oder msi Paket von nsclient.org und installiere es.
Im nächsten Teil der Serie wird nsclient++ konfiguriert um SSL Verschlüsselung und Authentifizierung zu benutzen. Außerdem werde ich ein paar Überwachungsbeispiele angeben.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.