Automate Icinga 2 Agent Configuration for Installer

bild02Icinga 2 wird inzwischen oft mit dem Icinga 2 Web Module Director verwaltet. Verbreitet sind die Möglichkeit aus anderen Datenbanken wie cmdb, Configuration Management Database, Informationen über installierte Hosts automatisch in den Director zu importieren. Bei diesen Importjobs können Filter die Quelldaten automatisch anpassen oder durch DNS-Abfragen ergänzen. Icinga 2 wird dann aus dem Director mit Informationen über Hosts und Checks und deren Anwendung beliefert um Verfügbarkeiten von Datenbanken, Webservern und vielen anderen Diensten regelmäßig zu prüfen. Die Ergebnisse werden dann protokolliert und natürlich bei Ausfall von Diensten sofort alarmiert.
Zum Ausführen dieser Prüfungen werden oft verschiedene Commandbridges wie beispielsweise NRPE oder SSH verwendet. Bei Icinga 2 gibt es heute die Möglichkeit anstatt dieser “Brücken”, “richtige” Agenten einzusetzen die den Vorteil bieten, über aktuelle Protokolle zu arbeiten. Die Kommunikation zwischen Icinga 2 und solchen Icinga-Agenten oder Satelliten erfolgt mit SSL, Secure Socket Layer, verschlüsselt inklusive sicherer Authentisierung. Wichtige Funktion ist hier die gegenseitige Authentisierung aller Kommunikationspartner mit x509 Zertifikaten. Für diese Agenten ist ein dediziertes Setup zur Konfiguration und Erstellen der Zertifikate und Authorisationstickets erforderlich. Das stellt sicher das nur vom Administrator definierten Agenten die Kommunikation gestattet wird und alle anderen Kommunikationsversuche zuverlässig ausgesperrt bleiben.
Icinga führt Checks durch aufrufen der Kommandos in unterschiedlicher Weise aus.
1. Icinga direkt und der check kommuniziert mit dem Ziel
2. Remote via “Brücken” wie NRPE und am Zielsystem wird der Check ausgeführt
3. Verteilt auf Satelliten und Agenten die hier die Checks ausführen
Satelliten und Agenten erfordern eine Konfiguration der Kommunikation und Verteilung von Checks. Zur Konfiguration der Kommunikation ist für alle Kommunikationsendpunkte ein PKI, Public Key Infrastructure, Setup erforderlich. Und zum Management werden Zonen definiert die ein Who is Who im Icingasystem ermöglichen. Darauf bauen dann Einstellungen auf die festlegen wer was prüfen soll. Hier erleichtert der Director diese Verwaltung durch strukturierte Konfiguration von Hosts, Checks und “apply”, Anwendungsregeln in einem modernen GUI, Garphical User Interface. Beliebte Funktionalität ist die intelligente Aufteilung der Konfiguration in sogenannte Templates und Hostdefinitionen. Mit solchen Templates wird von vielen Hosts verwendete Information nur einmal definiert und dann in den Host-Definitionen darauf verwiesen. Und so bietet sich für Agenten ein Template an das die Agenteneinstellung beschreibt. Sind diese Agenten definiert steht die Installation der Agentensoftware und deren Konfiguration an.
Für jeden definierten Agenten kann im Director ein Skriptvorschlag abgerufen werden. Viele Anwender betreiben heute automatisierte Software Verteiler und deren Installer. Solche Installer führen auch Konfigurationskripte aus. Die benötigte Information zur Konfiguration der Agenten ist im Director vorhanden  und PKI Setups als auch Authtentisierungsstickets werden benötigt. Und so bietet sich eine Realisierung als Skript an.
Ein solches Skript sollte
1. Die Hosts mit Agent aus der Directordatenbank auslesen
2. Die Konfigurationsdateien für den Installer erzeugen
Eine solche Skriptingmöglichkeit habe ich in zwei Teilen erstellt.
Im ersten Teil stelle ich ein Skript zum erzeugen dieser Konfigurationsdateien vor. Dieses Skript benötigt vorbereitete Teilskripte für die jeweiligen Betriebssysteme wie zum Beispiel Windows oder Linux und eine Liste die den Hostnamen und die Betriebssystemvariante enthält. Ich stelle hier ein Konfigurationsskript für Linux vor.
Im zweiten Teil beschreibe ich ein Skript zum Auslesen von Hosts mit Agent aus dem Director.
Erstes Skript
Dieses Skript kann auf zwei Arten angewendet werden. Im ersten Fall werden eine oder mehrere Konfigurationsdateien eingelesen und oder direkt aus stdin im zweiten Fall. Das Skript fügt die Hostinformation mit den vorbereiteten Teilskripten zu vollständigen Installerskripten je Host mit Agent zusammen und legt diese in einem Unterverzeichnis ab, bereit für einen Installer.
Ein Beispiel einer Host-liste

# Kommentar
host1.firma.de windows
host2.firma.fr ubuntulinux
# host3.firma.de suselinux

Das Skript gen_agent_scripts

mkdir: created directory ‘gen_agent_scripts.out’
gen_agent_scripts: write file test14.out/Icinga2Agent-host1.firma.de.psm1
gen_agent_scripts: write file test14.out/Icinga2Agent-host2.firma.fr.sh
gen_agent_scripts: 2 config scripts written to gen_agent_scripts.out
execute a script on an agent
‘/etc/icinga2/zones.conf’ -> ‘/etc/icinga2/zones.conf.20161107_040216.bak’
information/base: Writing private key to '/etc/icinga2/pki/host2.fr.key'.
information/base: Writing X509 certificate to '/etc/icinga2/pki/host2.fr.crt'.
information/pki: Writing certificate to file '/etc/icinga2/pki/trusted-master.crt'.
information/cli: Writing signed certificate to file '/etc/icinga2/pki/host2.fr.crt'.
information/cli: Writing CA certificate to file '/etc/icinga2/pki/ca.crt'.

Dieses Skript liest Host-listen ein und erzeugt damit je Agent eine spezifisches Konfigurationsskript, bereit zur automatischen Konfiguration dieser Agenten. Die Optionen des Skripts sind ein oder mehrmals -l und eine oder mehrere Listendateien.
icinga-agent-linux.name.sh
Diese komplettierte Agentskript erzeugt eine Zonenkonfiguration, erweitert die Einstellungen in api.conf und erledigt die PKI Konfiguration.
Die Skripte stehen auf github zum download bereit und viele weitere information zu Icinga 2 hier.

Icinga Director 1.2.0 veröffentlicht

Gerade mal 4 Monate sind seit eploer 1.1.0 vergangen, und wenig mehr als 7 Monate seit unserer ersten stabilen Release. Der Icinga Director reifte schnell, und aus einem kleinen Icinga Web 2 Modul ist mittlerweile ein ziemlich großes Projekt erwachsen. Gestern haben wir die Version 1.2.0 freigegeben, vollgestopft mit neuen Features, Bugfixes und Usability-Verbesserungen.

Berechtigungen

Dies ist die erste Release mit offizieller Unterstützung für Berechtigungen. Die Aufgabe eines Icinga-Administrator ist es, Commands, Service- und Host-Vorlagen zu definieren und eventuell alle Schritte von Import/Sync bis zum Deployment der Konfiguration zu automatisieren. Hier setzt der Director an, er ist zuallererst ein mächtiges Automatisierungstool.
Viele wenn nicht gar die meisten Umgebungen haben aber dennoch immer noch so einige Aufgaben die sich schwer automatisieren lassen. Wer kennt nicht den Mitarbeiter der sich zweimal am Tag umentscheidet, ob den nun der Schwellwert für seine seit Monaten volle Platte bei 99,9 oder doch besser bei 99,8% liegen soll. Stehen gerade 3000 neue Router an, die (nachdem jeweils ein Ticket erstellt wurde) im Laufe der nächsten Monate überwacht werden sollen? Diese Aufgaben sind prädestiniert dafür, an andere delegiert zu werden!
Audit log
Konfigurationsvorschau, Core API inspection oder das Auditlog können sensible Informationen beinhalten. Solcherlei Berechtigungen gibt man also besser nur denen, die sie wirklich brauchen. Soll ein Auditor alle Änderungen sehen aber keinen administrativen Zugang erhalten? Auch das ist jetzt möglich. Alle Aktivitäten lassen sich jetzt außerdem zusätzlich ins Syslog schreiben, für den Fall dass man es anderweitig archivieren möchte.
 

Performance

Das Rendern der Konfiguration wurde enorm beschleunigt. In großen Live-Umgebungen benötigt das Deployment nur noch ein Fünftel der ursprünglichen Zeit. Eine mir bekannte Umgebung konnte heute übrigens ihr tausendstes (automatisiertes) Director-basiertes Deployment feiern. Das Ganze bei mehr als einer halben Million Einzeländerungen im Aktivitätslog.
 

Konfigurationsmöglichkeiten

Es ist jetzt möglich tief verschachtelte Assign-Regeln zu definieren, basierend auf allen Host- und/oder Service-Eigenschaften. Wer das “apply for” Feature von Icinga 2 vermisst hat darf sich jetzt auch freuen. Ein Team von Internap hat einen Großteils des Codes dafür beigetragen. Bei dieser Gelegenheit herzlichen Dank für die gute Arbeit!
Die Unterstützung für Icinga 2 DSL in Command-Definitionen wurde verbessert. Ein Blick auf die Screenshots im Support-Ticket #12928 gibt einen kleinen Eindruck von den schrägen Möglichkeiten, die sich dadurch ergeben. Ein paar versteckte Features wie die implizite Unterstützung von skip_key fanden ebenfalls ihren Weg in die neue Version.
Nested filter with apply forDirector - Icinga DSL Cluster Check Override inherited service vars Apply-for - Preview
 
Wolltest Du immer schon eine bestimmte Eigenschaft eines von einem Host-Template geerbten Services für nur einen Host überschreiben? Dies und ähnliche Features sind jetzt verfügbar!
DNS - Property Modifier

Automatisierung

Beim Arbeiten mit der Import/Sync-Funktionalität lassen sich viele kleine Verbesserungen entdecken. Es gibt neue “Property-Modifier”, und deren Ergebnis lässt sich jetzt auch dafür verwenden neue virtuelle Eigenschaften zu erstellen. Wer mit Datenfeldern arbeitet wird neben Usability-Verbesserungen die Möglichkeit entdecken, andere Objekte in einer Dropdown-Liste bereitzustellen und als String oder Array in Custom-Variablen zu nutzen.
 

Testing

Immer mehr Entwickler tragen Quellcode zum Icinga Director bei. Um den Einstieg zu erleichtern haben wir das Bootstrapping unserer Unit-Tests vereinfacht und entsprechende Dokumentation bereitgestellt.
 

GUI und Usability

Die Fehlerbehandlung in den Formularen wurde stark verbessert, eventuelle Exceptions werden an vielen Stellen gefangen und auf lesbare Weise dargestellt. Der Deployment-Button ist jetzt nicht mehr so versteckt, die Konfigurationsvorschau wurde verbessert und erlaubt jetzt vollständige Konfigurations-Diffs auch vor dem Ausrollen einer neuen Konfiguration.
Loop detection Multiedit - imports Confirm field removal
 
Loops bei der Vererbung werden jetzt freundlich dargestellt und lassen sich direkt im Frontend beheben. Ein verstecktes Juwel ist die “Multi-Edit”-Funktionalität. Mit SHIFT/ALT+Klick lassen sich mehrere Hosts auswählen. Deren Imports, Custom-Variablen und andere Eigenschaften lassen sich an dieser Stelle für alle ausgewählten Objekte auf einmal ändern. Fehler oder Warnungen in allen historischen Startup-Logs verlinken jetzt direkt zur entsprechenden Konfigurationsdatei und springen an die richtige Zeile.
 

Verwandte Module

Es gibt mehr und mehr zusätzliche Module welche vom Director bereitgestellte Hooks implementieren. AWS-Import für EC2-Instanzen, ELBs und Autoscaling-Gruppen. Datei-Import für CSV, JSON, YAML und XML. Wir hörten von verschiedenen erfolgreichen Import-Source-Implementierungen in unterschiedlichen Projekten und würden uns sehr freuen, noch mehr davon als freie Software bereitgestellt entdecken zu dürfen!
 
Import from AWS Fileshipper - Import files
 

Download

Der Icinga Director v1.2.0 ist hier verfügbar, und das entsprechende GIT-Repository findet sich natürlich auf GitHub.
 

Thomas Gelf
Thomas Gelf
Principal Consultant

Der gebürtige Südtiroler Tom arbeitet als Principal Consultant für Systems Management bei NETWAYS und ist in der Regel immer auf Achse: Entweder vor Ort bei Kunden, als Trainer in unseren Schulungen oder privat beim Skifahren in seiner Heimatstadt Bozen. Neben Icinga und Nagios beschäftigt sich Tom vor allem mit Puppet.

Ist schon wieder Webinar Zeit?

netways Auch in der Hitze des Sommers gibt es natürlich weiterhin Bedarf an diversen IT-Dienstleistungen wie Outsourcing, Hosting, Monitoring, Configuration Management und natürlich allem voran Umweltüberwachung.
In den kommenden Monaten wollen wir genau diese Themen in unseren Webinaren ansprechen und – sofern möglich – anhand von Live-Demos veranschaulichen. Die nächsten Termine stehen dabei schon fest:

Titel Zeitraum Registrierung
NETWAYS Cloud: Der Weg zur eigenen VM 15. Juli 2016 – 10:30 Uhr Anmelden
Foreman: Berechtigungen 28. Juli 2016 – 10:30 Uhr Anmelden
Umweltüberwachung im Rechenzentrum 04. August 2016 – 10:30 Uhr Anmelden
SMS Alarmierung einrichten 25. August 2016 – 10:30 Uhr Anmelden
Foreman: Docker Integration 05. Oktober 2016 – 10:30 Uhr Anmelden

Alle unsere Webinare zeichnen wir auf, damit diese auch nachträglich noch einmal angesehen werden können. Hinterlegt werden Sie dann in unserem Webinar-Archiv.

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer 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".

Umstieg auf Icinga 2 gesucht?

Icinga Kaum hat man sein Nagios-System aufgebaut um Linux, Windows, ESXi und diverse Hardware-Komponenten wie Router und Switche zu überwachen, meint die Community im Jahr 2009 einen Fork mit dem Namen Icinga ins Leben zu rufen. Aufgrund vieler Bugfixes und Optimierungen ging es dann bei einer Vielzahl von Kunden in Richtung Migration auf Icinga – mit Erfolg. Als Dienstleister traten wir hier oft unterstützend und beratend zur Seite, bis der Kunde sein neues Monitoring in Betrieb nehmen konnte.
3 Jahre später kamen die Icinga Jungs dann auf die Idee Icinga 2 zu veröffentlichen, mit vielen neuen Features wie einem eingebauten Cluster, einer eigenen API, einem schnellen und dynamischen Webfrontend, einem fancy Web-Konfigurations Tool und vielem, vielem mehr.
Um allen einen einfachen Umstieg von sowohl Nagios als auch Icinga (oder natürlichem jedem anderen Monitoring-Tool) zu ermöglichen, bieten wir unsere Icinga 2 Starterpakete an. Innerhalb von 4 Tagen Dienstleistung bei Ihnen vor Ort bauen unsere Consultants gemeinsam mit Ihnen eine Icinga 2 Umgebung auf und fügen die ersten Services in das Monitoring hinzu. Selbstverständlich gehen wir auf die Unterschiede zu den Vorgänger-Versionen ein und zeigen auf, wie das neue Monitoring-Tool bedient werden kann.
Auf Wunsch installieren wir verschiedene Web-Module wie bspw. das Business-Process Addon, den Icinga Director oder ganz klassisch PNP4Nagios.
Unsere Starterpakete richten sich dabei nicht nur an Nagios / Icinga Benutzer, sondern natürlich auch an neue Kunden welche mit den Open Source Lösungen bisher noch keine Berührungspunkte hatten.
Warum sich ein Umstieg auf Icinga 2 lohnt? Hierzu kann man jetzt viele Vorteile schreiben. Am besten ist es aber man probiert das System selbst einmal über die bereitgestellten Vagrant-Boxen aus oder man schaut sich eines unserer Webinare zu Icinga 2 und Icinga Web 2 an, um einen besseren Eindruck zu bekommen.
Wer noch nicht überzeugt ist oder ein Angebot für ein Icinga 2 Starterpaket wünscht, kann gerne mit uns Kontakt aufnehmen. Wir freuen uns über jede Anfrage!

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer 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".

Frühlingsneuerungen bei NETWAYS – Neues Schulungskonzept für Icinga 2

training_sidebar_icinga_2_200x155 training_sidebar_icinga_2_advanced_200x155Da wir ständig darauf bedacht sind, die Qualität unserer Schulungen zu verbessern, haben wir unsere Icinga 2 Schulungen auf Icinga 2 Fundamentals und Icinga 2 Advanced umgestellt.
Mit dem Open Source Monitoring Framework Icinga 2 können alle verfügbaren Systeme in einem Netzwerk überwacht werden. Es alarmiert Sie im Problemfall und liefert die Daten für Ihr SLA-Reporting. Nach ausführlicher Überarbeitung des Schulungsprogrammes werden nun die neuen Schulungspakete Icinga 2 Fundamentals und Icinga 2 Advanced angeboten.
Die Icinga 2 Fundamentals Schulung ist speziell für Anfänger gedacht und fokussiert sich auf die Vermittlung von Basiswissen zur Installation von Icinga 2 und Icinga Web 2. Die gelernten Inhalte werden durch Praxisbeispiele und Best Practices für Icinga 2 Konfiguration, Integration von Remote Clients und PNP4Nagios als integrierte Graphinglösung vertieft. Auch die Virtualisierung Mit NagVis, Datenbank Monitoring, die grafische Konfiguration mittels Director sowie die Migration von anderen Monitoring Lösungen sind Inhalte dieser viertägigen Schulung.
Für Fortgeschrittene bieten wir die dreitägige Icinga 2 Advanced Schulung an. In dieser Schulung liegt der Schwerpunkt auf der Vermittlung von Kenntnissen, die für den Betrieb größerer und komplexerer Umgebungen notwendig sind. Nach einem Überblick über das Icinga 2 Setup lernen die Teilnehmer Details zum Icinga 2 Cluster und dessen Szenarien sowie zur graphischen Konfiguration von Icinga 2 inklusive Template-Erstellung und Anbindung externer Datenquellen. Im weiteren Verlauf der Schulung wird auf die Überwachung mit Java, Logs und VMware eingegangen. Auch der vertiefte Einblick in Icinga Web 2 und Performancegraphing mit Graphite sind neben der Icinga 2 API Bestandteile der Icinga 2 Advanced Schulung.
Im Schulungspaket mit inbegriffen sind Schulungsunterlagen, Kostenloser WLAN-Zugang, ein Schulungsnotebook für die Dauer des Trainings, Mittag- und Abendessen, sowie Verpflegung in alles Vor- und Nachmittagspausen.
Um die Qualität unserer Schulungen sicherzustellen und auf die Wünsche und Fragen unserer Schulungsteilnehmer optimal eingehen zu können, finden alle Schulungen in kleiner Gruppe statt.
Die Schulungsorte sind Nürnberg und Hamburg. Sollten Sie Interesse an einer Inhouse-Schulung haben, können Sie diese einfach bei uns buchen.