pixel
Select Page

NETWAYS Blog

Icinga for Windows: Troubleshooting, Debugging, Performance

Im Zusammenhang mit Icinga for Windows bekomme ich immer wieder ähnliche Fragen gestellt oder darf mich wundern, dass das ein oder andere Feature unbekannt und unbenutzt bleibt. Das Ganze versuche ich jetzt mal zu ändern.

Troubleshooting

Das Icinga for Windows PowerShell Framework bietet zahlreiche Cmdlets, welche Informationen über die Umgebung preisgeben können. Vorallem dann nützlich, wenn es darum geht in der Community nach Hilfe zu fragen oder auch, wenn man auf GitHub ein Issue aufmachen möchte.

Natürlich bringt einen dann ein Get-IcingaAgentVersion ans Ziel, aber schönen noch ist es die Icinga Management Console zu benutzen. Dort findet man unter dem Overview-Prompt zahlreiche Informationen zur Umgebung. Darunter die installierten und vorhandenen Versionen der einzelnen installierten Komponenten, wie z.B. agent, framework, plugins und service. Außerdem noch Allerhand zu getätigter Konfiguration, Versionen der PowerShell und benutzten Pfaden, sowie User-Informationen und mehr zur Umgebung.

Debugging

Wie bekanntlich führen viele Wege nach Rom und so auch hier. Man kann sich bis auf Weiteres auf die konventionellen Varianten verlassen, also nach C:\Program Files\ICINGA2\sbin navigieren und .\icinga2.exe genauso, wie auf Linux benutzen. Oder man nutzt die Gegebenheiten des Frameworks anstattdessen.

Aus .\icinga2.exe feature enable debuglog wird dann entsprechend ein Enable-IcingaAgentFeature debuglog. Zusätzlich spart man sich das lästige Wechseln nach C:\Program Files\ICINGA2\sbin. Mal davon abgesehen das man unter C:\ProgramData\icinga2\var\log\icinga2 respektive icinga2.log und debug.log findet, kann man auch einfach Read-IcingaAgentLogFile und Read-IcingaAgentDebugLogFile benutzen. Oder je nach persönlicher Präferenz noch besser im hiesigen Eventlog nachlesen, wo sich gegebenenfalls eine Custom View anbietet für Icinga 2 / Icinga for Windows / Icinga for Windows Service.

Performance

Zuletzt sei erwähnt, dass das die Checks des Frameworks durchaus merkbar sind für die CPU. Um diese Last zu reduzieren kann der API Check Forwarder benutzt werden. Dieser benötigt zwar zusätzliche Konfiguration, jedoch profitiert die Performance des Systems merkbar dadurch.

Anstatt den Check dann unmittelbar in der PowerShell auszuführen wird das ganze an einen Daemon deligiert, der den Command ausführt. Das sorgt dafür, dass nicht in jeder neuen PowerShell-Instanz der volle Umfang des Frameworks geladen werden muss und reduziert somit die Performance-Last auf dem System.

Was noch?

Es gibt noch haufenweise weitere Sachen im IfW-Kosmos, die Übersehen werden, aber das muss für den Moment reichen. Wer noch nicht genug von Icinga for Windows hat, der kann gerne einen Blick werfen auf den Icinga-Blog-Post zum letzten Release des Frameworks.

Alexander Stoll
Alexander Stoll
Consultant

Alex hat seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services abgeschlossen und ist nun im Consulting tätig. Vereinzelt kommt es auch vor das er an Programmierprojekten mitarbeitet. Auch privat setzt er sich sehr viel mit Informationstechnologie auseinander, aber jenseits davon ist auch viel Zeit für Fußballabende, Handwerkerprojekte und das ein oder andere Buch.

Vom Auszubildenden zum Consultant

Ich bin jetzt schon ein paar Jahre bei der NETWAYS Professional Services GmbH angestellt, aber erst ein paar Monate nicht mehr als Auszubildender, sondern eben als Consultant. Doch mir ist eben gerade erst aufgefallen das ich noch gar nicht richtig reflektiert habe.

Wie wars noch gleich?

Die Ausbildung hat mir eine Menge beigebracht – wäre auch äußerst traurig wenn nicht. Aber damit meine ich nicht nur fachliches Wissen. Sondern auch wie ich zu Themen stehe denen ich in meiner professionellen Karriere begegnen werde. Und damit meine ich auch was ich machen kann und möchte.

Während der Ausbildung wurde mir Einsicht in so ziemlich alle Themen- sowie Aufgabenbereiche gewährt mit denen ich irgendwann konfrontiert werden könnte. Damit der Verlauf der Zeit zeigt, in welche Richtung ich mich entwickeln kann und möchte. Eine zeitlang erschließt man neue Themenbereiche und andere schottet man etwas ab bis man sein Feld gefunden hat in dem man sich spezialisieren möchte.

The more things change the more they stay the same

Natürlich darf ein etwas blöder Spruch nach dem Motto –  Man lernt nie aus – nicht fehlen. Aber so ist es nun mal und aus dem Register gäbe es noch eine ganze Menge.

In der Informatik ist es nun mal so, dass nichts stehen bleibt. Alles entwickelt sich weiter und in einer Geschwindigkeit die einen leicht abhängt, wenn man nicht immer an sich und seinen Fachgebieten arbeitet.

Ehrlich gesagt fühlt sich nichts anders an im Verhältnis zur Ausbildung. Für ungefähr drei Jahre bin ich einem Wissensstand nachgejagt um mich Consultant nennen zu dürfen. Jetzt heißt es für mich diesen nicht nur zu halten, sondern den Vorsprung auszubauen. 

Vielleicht hab ich in dir ja das Interesse geweckt auch eine Ausbildung bei NETWAYS anzufangen. Eines kann ich dir versprechen. Es wird nie langweilig und kein Tag ist wie der Andere.

Alexander Stoll
Alexander Stoll
Consultant

Alex hat seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services abgeschlossen und ist nun im Consulting tätig. Vereinzelt kommt es auch vor das er an Programmierprojekten mitarbeitet. Auch privat setzt er sich sehr viel mit Informationstechnologie auseinander, aber jenseits davon ist auch viel Zeit für Fußballabende, Handwerkerprojekte und das ein oder andere Buch.

Icinga for Windows: Tools, Wrapper, Management

Immer wieder Mal lasse ich hier ein paar Worte zum Thema PowerShell und Icinga for Windows fallen und so ist es auch dieses Mal wieder. In meinem letzten Blogpost Plugins, Provider, PowerShell habe ich schon ein bisschen ein Blick in die einzelnen Repositories im Zusammenhang mit Icinga for Windows gegeben.

Dieses Mal betrachten wir das Framework, beziehungsweise dessen Komponenten und Tools, welche wichtig oder praktisch für Plugin-Entwicklung und Troubleshooting sind.

Tools

Mit den Tools des Frameworks lässt sich einiges an Arbeit sparen, diese befinden sich im icinga-powershell-framework repository unter /lib/core/tools. Natürlich können diese Tools auch außerhalb des Icinga-Kosmoses Anwendung finden.

Unter den Tools finden sich die verschiedenste Module, wie zum Beispiel Convert-Bytes, dessen Aufgabe es ist die Einheit entsprechender Byte Werte umzurechnen. Während der Anwendungsfall von Convert-Bytes sehr offensichtlich ist, gibt es ebenso Tools, welche Nischen bedienen, wie zum Beispiel ConvertTo-IcingaIPBinaryString, welches in der Bestimmung des Network-Interfaces mittels Get-IcingaNetworkInterface eine Rolle spielt.

Genauso wie im Developer-Guide beschrieben, sollten Custom-Plugins, sowie Tools, die von euch selbst geschrieben werden in ein separates Modul gespeichert werden. Falls der bisherige Funktionsumfang eines Tools nicht ausreichend ist für ein Custom Plugin oder Provider, dann sollte wenn möglich auf der Basis des Tools weiterentwickelt werden, wenn das möglich ist – aber natürlich innerhalb eines separaten Moduls.

Wie immer sind Pull-Request und Feature-Anfragen auch für Tools des Frameworks mehr als willkommen.

Wrapper

Um nicht willkürlich unterschiedliche Funktionen zu nutzen und eine grundsätzliche Einheitlichkeit in der Entwicklung von Plugins und Modulen im Framework zu habe werden Wrapper genutzt. Es ist also zielführender, wenn man sich im Voraus erkundigt, ob bestehende PowerShell-Kommandos in einem Wrapper mit gegebenenfalls erweiterter Logik bereits genutzt werden. Um ein paar Beispiele hierfür zu nennen, Restart-IcingaService ist im eigentlichen ein Wrapper für das PowerShell-Kommando Restart-Service. Dabei nutzt Restart-IcingaService aber Module, wie zum Beispiel Write-IcingaConsoleNotice oder Write-IcingaConsoleWarning, die dann entsprechend dafür sorgen, dass via Write-IcingaConsoleOutput entsprechende Informationen in einheitlicher Formatierung ausgegeben werden.

Ein ähnliches Szenario liegt auch vor für Start-IcingaService, Stop-IcingaService für Start-Service und Stop-Service. Im Falle dieser drei Wrapper wurde das Error-Handling im Icinga-Kontext verbessert im Vergleich zu den einzelnen zugrunde liegenden Kommandos.

Prominentestes Beispiel für die Plugin-Entwicklung jedoch ist wahrscheinlich Get-IcingaWindowsInformation, mehr oder weniger ein Wrapper für Get-WmiObject und Get-CimInstance. Get-IcingaWindowsinformation hilft hierbei nur WmiObjects aufzurufen, welche vom Framework unterstützt werden, beziehungsweise weißt es auf fehlende Berechtigungen hin und beschreibt eventuelle Fehler genauer bei der Plugin-Entwicklung. Sollten also in einem Provider CimObjects oder WimObjects benötigt werden, dann sollten diese mittels Get-IcingaWindowsInformation aufgerufen werden.

Selbiges wie bei den Tools gilt natürlich auch hier. Wenn Kommandos mit logischen Strukturen für das icinga-powershell-framework verbessert werden können, zum Beispiel in Form eines Wrappers, dann sind Vorschläge stets erwünscht.

Management

Hier ein kleiner Einblick in ein bisher noch experimentelles Feature und zwar die Management-Konsole. Die Funktion Invoke-IcingaCommand oder gemeinhin eher icinga, sollte bekannt sein, aber nichts desto trotz hier noch einmal. Der icinga Befehl ist grundsätzlich dafür da um Framework-Befehle in einer neuen PowerShell-Instanz auszuführen, was das Testen von neuen Plugins schnell und angenehm gestaltet.

Als Beispiel kann somit direkt durch geschweifte Klammern ein Skriptblock übergeben werden:
PS> icinga { Get-IcingaCPUs }               
Name             Value                      
----             -----                      
0                {specs, errors, metadata}  

Alternativ kann ohne Parameter, beziehungsweise Klammern, eine Icinga-Konsole aufgerufen werden, die wie beim gebrauch von Use-Icinga die Framework-Funktionalitäten lädt:
PS> icinga                                  
********************************************
**       Icinga for Windows v1.5.0        **
**  Copyright (c) 2021 Icinga GmbH | MIT  **
**       User environment Test\Test       **
********************************************
icinga> Get-IcingaCPUs                      
Name             Value                      
----             -----                      
0                {specs, errors, metadata} 

Jetzt aber zur Management-Konsole, die wird aufgerufen durch das Benutzen von icinga -Manage. Es ist notwendig den Befehl auf einer Administrator-Shell auszuführen, ansonsten stehen nicht alle Funktionalitäten zur Verfügung. Durch das Ausführen des Befehls landet man in einem Interaktiven Menü, mit den folgenden Punkten und Aktionsmöglichkeiten:
[0] Installation                       
[1] Update environment                 
[2] Manage environment                 
[3] Remove components                  
[x] Exit Continue [h] Help [m] Main
Input (Default 0 and c):               

Abhängig von der Installation der Umgebung sind Punkte abgeschaltet und aus gegraut. Die Hilfe gibt zu jeden einzelnen Punkt und Schritt in den jeweiligen Untermenüs Informationen. Dadurch dass die vielen Untermenüs und Schritte zahlreich sind, sollte sich das jeder selbst genauer anschauen, beispielsweise ähnelt der erste Punkt, der der Installation sehr dem Interaktiven-Menü des Kickstarts-Skripts. Während die anderen Punkte, wie Update, und Manage environment es einen Nutzer erlauben auch mit geringen Kenntnisstand über Framework-Funktionen, die Funktionalitäten auszukosten. Wer also kein Freund von Befehlen wie Invoke-IcingaFrameworkUpdate oder Install-IcingaFrameworkComponent ist, kann die Sache hiermit unter einem Hut einfach zusammenfassen. Genau das Gleiche gilt auch für Befehle wie Uninstall-IcingaFrameworkComponent mit Punkt 3.

Wir würden uns wirklich sehr darüber freuen, wenn ihr das experimentelle Feature ausprobieren könntet und uns dazu Feedback zu kommen lassen würdet.

Icinga PowerShell Management Console

Alexander Stoll
Alexander Stoll
Consultant

Alex hat seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services abgeschlossen und ist nun im Consulting tätig. Vereinzelt kommt es auch vor das er an Programmierprojekten mitarbeitet. Auch privat setzt er sich sehr viel mit Informationstechnologie auseinander, aber jenseits davon ist auch viel Zeit für Fußballabende, Handwerkerprojekte und das ein oder andere Buch.

Lessons learned: Das nehme ich mit ins neue Jahr

Dieses Jahr war wieder ein aufregendes Jahr aus den verschiedensten Gründen, wie sich viele von euch vorstellen können. Insbesondere für mich, als Auszubildender. Ich durfte mich mit den unterschiedlichsten Dingen auseinandersetzen, einen kleinen Einblick habt ihr ja schon Anfang des Jahres erhalten.

Ich hätte niemals gedacht, dass ich in diesem Jahr so viel Abwechslung erfahren würde, Schulungen, Weiterbildungen, Evaluationen, Kundentermine, Remote-Arbeit und noch viele weitere Projekte.

Support

Ein großer Zeitraum in diesem Jahr war geprägt durch die Arbeit im Support, welche ich ja bereits hier angekündigt habe. Der Sinn dahinter Auszubildende in den Support zu stecken ist Erfahrungen zu sammeln. Derartige Erfahrungen, wie man sie im Support macht, helfen einem Consultant später Vorort oder wie ich später im Jahr auch lernen sollte, bei der Remote-Arbeit, enorm weiter. Nicht zu vergessen arbeitet man im Support immer im Team und als Team, hat Kollegen die einen jederzeit unterstützen können und ihr Wissen teilen.

Webentwicklung

Zwar hat das Thema Webentwicklung für mich und als Consultant keinen direkten hohen Stellenwert, aber es war für mich ein persönliches Highlight dieses Jahr und auch als Consultant kann ich bestimmte Aspekte davon ganz gut gebrauchen.

Im Icinga-Kontext oder speziell Icinga Web 2 sind Kenntnisse in PHP nicht zu unterschätzen, wenn es darum geht Troubleshooting zu betreiben. Immer wieder mal sich mit PHP, HTML, CSS auseinanderzusetzen macht durchaus Spaß und demnächst dürft ihr euch auf die Früchte eines kleinen Projektes von mir freuen, wenn es um Icinga Web 2 Themes geht.

Mein Schlusswort zu 2020

Ich habe hier eigentlich nur Positives zu sagen, auch wenn für viele das Jahr 2020 mit Schicksalsschlägen und der derzeitigen weltweiten Situation behangen ist kann ich sagen, dass es mir gut geht. Wenn mir das Jahr 2020 aus persönlicher Sicht etwas beigebracht hat, dann ist es bescheidener zu sein und mich für meine guten Position dankbar zu zeigen. 

Persönlich glaube ich fest daran, dass das nächste Jahr besser wird und selbst wenn nicht, dann mach ich für mich persönlich das Beste daraus, was mir möglich ist.

Ich wünsche euch allen schöne Feiertage und ein gesundes neues besseres Jahr!

 

Alexander Stoll
Alexander Stoll
Consultant

Alex hat seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services abgeschlossen und ist nun im Consulting tätig. Vereinzelt kommt es auch vor das er an Programmierprojekten mitarbeitet. Auch privat setzt er sich sehr viel mit Informationstechnologie auseinander, aber jenseits davon ist auch viel Zeit für Fußballabende, Handwerkerprojekte und das ein oder andere Buch.

Windows: One Framework to Monitor them all by Christian Stein | OSMC 2019

This entry is part 4 of 4 in the series OSMC 2019 | Recap

At the Open Source Monitoring Conference (OSMC) 2019 in Nuremberg, Christian Stein captivated the entire conference room with his presentation “Windows: One Framework to Monitor them all”. His demo was the highlight of his presentation, which ended up with enthusiastic applause. You have missed him speaking? We have got something for you: Watch the video of Christian’s presentation and read a short summary (below).

At OSMC international monitoring experts meet annually to set and discuss future trends and objectives. Since 2006 the event takes place every autumn in Nuremberg, Germany. Leading specialists present the full scope of Open Source monitoring and are ready to answer your hardest questions. Discuss with top developers, exchange knowledge and learn wen techniques.

You want more? In-depth workshops the day prior to the conference and a Hackathon provide further possibilities to extend your skills and deepen your knowledge in IT monitoring and management.

The next OSMC takes place in 2021 in Nuremberg.

More information and tickets at osmc.de.


Windows: One Framework to Monitor them all

Christian Stein signed up with a talk titled “Windows: One Framework to Monitor them all” and the intention to turn the Windows side of Icinga upside down. After giving a short run down of the the current issue with “Icinga for Windows” and his attempts at fixing them, we get to the good stuff.

An Icinga PowerShell Framework supported by Powershell 4.0 or higher, but let‘s get into the juicy details: The framework comes with a lot of features, to easily extend it within your environment and to simplify monitoring on Windows as well. Additionally, there is a dev-toolkit, which offers plenty of possibilities for developers to give the framework their own tweak. As of now, there are four repositories beyond the framework itself. Up first and most important to mention is icinga-powershell-kickstart, which provides a basic PowerShell script to interactively install the framework. Also rather essential for the framework is the icinga-powershell-plugins repository, which provides a collection of Windows check plugins.

Want to run the framework as a service? Glad you asked. There is a repository for that as well. It’s also covered by the kickstart wizard. Check icinga-powershell-service to find out more or to give some feedback. If you’ve always asked yourself why you should run appliances as a service, there are several benefits. Like the service running before a user logs on and continuing to run, without a logged on user.

Last but not least, even most essential, the framework itself. If we look at the current ways to make Icinga work on windows, they are good, but not great. The icinga-monitoring-framework provides tools and configuration to make icinga monitoring on windows possible, almost natively, except for said repositories.

Having said all that and more, Christian went on with a live demo of the Framework, gave some installation advice and by that I mean, delved deeper into the kickstart script. He also showed off some features and gave some best practice advice. So, all that was left to say is… whats next?

Christian announced, that it will be available on PowerShell Gallery, which will not only help the project grow, but make it even more available as is. And of course, there will be more plugins. For those eagerly waiting for one of these, the next release hopefully provides MSSQL, Active-Directory, Exchange and Hyper-V plugins.

The community’s and the customer’s interest in better windows monitoring is undeniable, but we depend on your feedback and support on this, the respective repository is the place to be, and if you can’t figure, which one it fits, just post your issue at: https://github.com/Icinga/icinga-powershell-framework/issues

Alexander Stoll
Alexander Stoll
Consultant

Alex hat seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services abgeschlossen und ist nun im Consulting tätig. Vereinzelt kommt es auch vor das er an Programmierprojekten mitarbeitet. Auch privat setzt er sich sehr viel mit Informationstechnologie auseinander, aber jenseits davon ist auch viel Zeit für Fußballabende, Handwerkerprojekte und das ein oder andere Buch.