Icinga 2 Windows Director
ONLINE

Icinga 2, Director und Windows

Nicht erst seit WannaCry ist es von Interesse, den Patch-Stand diverser Windosen im Auge zu behalten... und Ehrensache, hier kommt bei mir Icinga 2 ins Spiel.

Nicht erst seit WannaCry ist es von Interesse, den Patch-Stand diverser Windosen im Auge zu behalten… und Ehrensache, hier kommt bei mir Icinga 2 ins Spiel. Von der Installation bis hin zur Integration über den Director — kommt mal mit, so schwierig ist das gar nicht.

Installation unter Windows

Im ersten Schritt, ganz klar, muss Icinga 2 auf dem Host installiert werden; ich habe mich für den aktuellsten 64bit-Installer auf http://packages.icinga.com/windows/ entschieden. Die Installation ist… naja, eine Installation halt 😉 Ich musste zuvor packages.icinga.org in Systemsteuerung → Internetoptionen → Vertrauenswürdige Sites freigeben — vielleicht ist da auf euren Systemen auch etwas Zauber nötig, das wisst ihr sicher besser als ich.

Run Icinga 2 Setup Wizard hake ich im letzten Schritt nicht an, stattdessen führe ich das PowerShell-Script aus, das der Director mir bereitstellt — nachdem ich den Host im Director eingerichtet habe, deshalb ist das der nächste Schritt. Wie das geht, wisst ihr sicher alle? Im Reiter »Agent« findet ihr dann das Windows Kickstart Script, was nichts anderes als ein PowerShell-Script ist. Und ja, als völliger Microsoft-N00b musste ich hier bös googlen, bis ich die Zusammenhänge kapierte.

Wie auch immer: dieses Script muss kopiert und auf den Windows-Host transportiert werden. Ich habe hierzu eine Textdatei icinga.txt auf dem Desktop erstellt und den Inhalt hineinkopiert. Im Anschluss daran starte ich die PowerShell (als Administrator!), marschiere in das korrekte Verzeichnis und benenne die Datei von icinga.txt nach icinga.ps1 um. Ausführen kann ich sie jedoch nicht — die auf dem Host gesetzte Richtlinie verhindert das. Abhilfe schaffte für mich, diese Richtlinie kurzfristig per Set-ExecutionPolicy Unrestricted außer Kraft zu setzen, mein Script .\icinga.ps1 auszuführen und die Änderung an der Richtlinie hernach per Set-ExecutionPolicy AllSigned wieder rückgängig zu machen. Unter »Dienste« setzte ich dann noch Anmelden als auf Lokales Systemkonto, damit die Checks später nicht an irgendwelche Permission-Wände laufen.

Vorbereitung des Masters

Damit der Master die Commands auch kennt, muss die Konfiguration (sofern das nicht schon passiert ist) eingebunden werden; ich habe hierzu die /etc/icinga2/icinga2.conf erweitert und anschließend per service icinga2 restart durchgestartet. Mehr ist auf dem Master auch gar nicht zu tun — der nächste Schritt besteht dann schon darin, die Checks zu konfigurieren.

## /etc/icinga2/icinga2.conf
...
include <windows-plugins>
...

Services im Director

Kickstart run

Nun ist es ja so: wenn ihr die Windows-Plugins gerade erst in die Konfiguration aufgenommen, den Director aber schon länger am Start habt — dann kennt er diese neuen Commands nicht. Was benötigt wird: ein erneuter Lauf des Kickstarts, wie er auch bei der ersten Inbetriebnahme des Director ausgeführt wird. Damit der funktioniert, muss zuerst eine entsprechend angepasste Konfigurationsdatei angelegt werden.

## /etc/icingaweb2/modules/director/kickstart.ini
[config]
endpoint = <Your endpoint>
; host = 127.0.0.1
; port = 5665
username = <Icinga 2 API user for Director>
password = <Icinga 2 API password for Director>

Hernach kann der Kickstart initiiert werden. Läuft alles fehlerfrei, erscheinen im Director anschließend ziemlich viele Pending changes — eben alles, was nun neu importiert wurde. Nach dem Deploy stehen diese neuen Commands dann zur Verfügung und können über den Director genutzt werden.

$ icingacli director kickstart run

Windows Services

Icinga 2 Windows ServicesDie Services, zum Teil auch mit Datenfeldern, in den Director einzutickern, ist in erster Linie eines: ziemlich öde 😉 Also schnappt euch einen frischen Kaffee und etwas gute Musik und legt los. Wichtig ist natürlich, dass die Checks auf dem Endpoint ausgeführt werden, ihr also Run on agent auf yes setzt. Ein Preview meines update-windows liest sich folgendermaßen:

template Service "update-windows" {
    check_command = "update-windows"
    max_check_attempts = "5"
    check_period = "workhours"
    check_interval = 1h
    retry_interval = 1m
    enable_notifications = true
    enable_active_checks = true
    enable_passive_checks = true
    enable_event_handler = true
    enable_perfdata = true
    volatile = false
    zone = "zonename"
    command_endpoint = host_name
    vars.update_win_crit = "yes"
}

Zuordnung zu Hosts

Icinga 2 Windows Host TemplateDer Einfachheit halber habe ich meinem Host-Template Windows Agent via Icinga 2 Core diese Services zugeordnet; auf jedem Host, der dieses Template einbindet, werden automatisch diese Checks ausgeführt. Navigiert hierzu im Director über Hosts → Templates → Template auswählen → Reiter Services und fügt hinzu, was ihr an dieser Stelle sehen möchtet.

Icinga 2 Windows HostKlar, es ist eingeschränkter gewohnt, aber es ist okay. Und liefert Information, die man eigentlich unbedingt haben will — wenn ich schon Windosen im Netz ertragen muss, dann will ich wenigstens wissen, was da so drauf abgeht. Eine Einschränkung stellt derzeit Windows 2008 dar, hierzu hab ich mal einen Bug Report aufgemacht.

Berichtet doch mal, wie es geklappt hat 😉
Unterschrift

  1. Hallo,
    sehr schöner Artikel. Hat mir als Icinga-Newbee sehr geholfen. Allerdings habe ich noch das Problem, dass die Zeile “ command_endpoint = host_name“ beim Rendern der Config nicht aufgelöst werden kann. Wo muss ich ansetzen, um das Problem zu lösen?
    Dank und Gruß
    Morten

  2. Hi, welches check_command steckt hinter dem update-windows gibts da was auf github?

  3. Btw, wenn du packages.icinga.com nimmst, musst du die Ausnahme nicht einrichten. 🙂

    via twitter.com

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.