pixel
Select Page

NETWAYS Blog

Icinga: Installer, Diagnostics, Support Collector

Beim letzten Mal habe ich über Troubleshooting, Debugging und Performance innerhalb von Icinga for Windows geredet und heute wird das Ganze mal etwas Allgemeiner für Icinga und zwar ein paar Projekte, die dem ein oder anderen gar nicht bekannt sind, beziehungsweise deren Nützlichkeit in Hinsicht auf Informationsbeschaffung und Testen, was fürs Troubleshooting und Debugging auch nicht gerade unwichtig ist.

Icinga Installer

Zum einen wäre da der Icinga Installer, welcher eine exzellente Möglichkeit darstellt, schnell und einfach eine Icinga-Instanz zum Laufen zu bringen. Entsprechend einfach ist es auch, sich schnell mit ein oder zwei virtuellen Maschinen eine Icinga-Testumgebung zu zaubern, ohne viel Zeit in Konfigurationsdateien zu verbringen.

Hierbei bietet der Icinga-Installer unterschiedliche Installations-Szenarien an. Respektive ‘server-ido-mysql’ & ‘server-ido-pgsql’ für Icinga-Master; ‘worker’ für Icinga-Satelliten; und ‘agent’ für Icinga-Agenten.

Die Installation des Icinga-Installers ist ebenso denkbar simpel, da dieser im NETWAYS Packages Repository enthalten ist. Einfach das entsprechende Repository hinzufügen und daraufhin mit dem Paketmanager der Wahl installieren. Mehr dazu ist auch hier zu finden: https://github.com/NETWAYS/icinga-installer

Darüber hinaus kann der Installer auch im produktiven Betrieb zum Konfigurationsmanagement eingesetzt werden.

Icinga 2 diagnostics

Bei Icinga 2 diagnostics handelt es sich, um ein Bash-Script, das Daten der Umgebung sammelt und gegebenenfalls Anomalien entdeckt. Eigentlich ist das Skript zwar dafür gedacht, dass Daten gesammelt werden können, um diese mit entsprechenden Kanälen zu teilen, aber im Zweifelsfall kann es durchaus auch aufschlussreich sein, um einen simplen Fehler zu finden. Und das Skript findet ihr hier: https://github.com/Icinga/icinga2-diagnostics

Aber Vorsicht beim Teilen der Umgebungsinformationen in der Community. Immerhin enthält dieser mitunter auch Passwörter.

Support Collector

Wenn man schon Icinga 2 diagnostics erwähnt, dann kann man da genauso gut auch noch den Support Collector, welcher im eigenen NETWAYS Supports Anwendung findet, erwähnen. Dieses Projekt ist hier Zuhause: https://github.com/NETWAYS/support-collector

Genauso wie Icinga2 diagnostics ist auch der Support Collector eine gute Wahl um Konfiguration zu prüfen und erinnert vor allem den Laien daran, welche Datei dieser noch vergessen hat. Auch hier ist wieder Vorsicht geboten, die gesammelten Daten zu teilen, immerhin sind auch hier Passwörter enthalten.

Was noch?

An der Stelle ist final noch anzumerken, wie hilfreich es ist, sich Backups von Konfigurationen der Umgebung zu machen. Hierzu sollte man natürlich manuell und kontrolliert Backups anfertigen und weder Icinga2 diagnostics noch den Support Collector als Alternative betrachten, aber gelegentlich einen Abzug der Umgebung zu haben durch eines der beiden Tools ist schon praktisch. Auch der Installer kann zur Sicherung der Konfiguration und deren Wiederherstellung genutzt werden.

Es ist nicht selten der Fall, dass man glaubt, man hätte gar nichts geändert und ein diff zwischen der aktuellen zones.conf und der aus dem Support-Collector vor drei Wochen behauptet das Gegenteil.

Und eine entsprechende Testumgebung, die mit dem Icinga-Installer binnen 10 Minuten stehen könnte, gibt einen die Möglichkeit neue Konfiguration vorher an anderer Stelle als der Produktivumgebung zu testen, beziehungsweise die Möglichkeit Fehler nachzustellen und somit fehlerhafte Konfiguration zu identifizieren. Oder um es anders auszudrücken, ein Fehler ist einfacher zu beheben, wenn man klar weiß, wie er entstanden ist.

Und wenn dann der Fehler noch immer nicht gefunden ist, dann bleibt einem noch die Community oder NETWAYS Support, um dem Problem auf die Spur zu kommen.

 

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: 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.