Icinga Director is up and running

Icinga 2 Director – die Einrichtung

Dieser Artikel entstand, als der Director noch alpha war. Aufgrund der enormen Nachfrage ist er jedoch mit dem Erscheinen von Director in Version 1.3.0 komplett überarbeitet. Die Installation erfolgte auf einem Debian 8-System.

Mit dem »Icinga Director« hat Thomas Gelf ein Stück Software erstellt, das ich unglaublich sexy finde — und hier notiere ich mal auf, wie ich es installiert habe

Die Voraussetzungen erfüllen

Sofern es noch nicht geschehen ist: das ist nun der richtige Moment, das dringend benötigte php5-curl zu installieren — denn tust du es nicht, so kommt es zu… naja, nichts halt 😉

$ apt-get install php5-curl

Außerdem muss das Feature api in Icinga 2 aktiviert werden, falls es noch nicht angeschaltet ist:

$ icinga2 api setup

Du wirst für den Director einen API-User brauchen — richte ihn schon einmal ein und starte den Dienst anschließend durch:

## /etc/icinga2/conf.d/api-users.conf
[...]
object ApiUser "director" {
  password = "totalgeheim"
  permissions = [ "*" ]
}
$ service icinga2 restart

Das Modul

Hiermit hast du dir Voraussetzungen soweit erfüllt; nun kannst du das Modul an Ort und Stelle packen:

$ cd /usr/share/icingaweb2/modules
$ git clone https://github.com/Icinga/icingaweb2-module-director.git director
Cloning into 'director'...
remote: Counting objects: 20702, done.
remote: Total 20702 (delta 0), reused 0 (delta 0), pack-reused 20702
Receiving objects: 100% (20702/20702), 5.36 MiB | 2.52 MiB/s, done.
Resolving deltas: 100% (12831/12831), done.
Checking connectivity... done.

Icinga 2 Director ResourceIm Webinterface Icinga Web 2 kannst du das Modul nun in Betrieb nehmen: Configuration → Modules → director → Klick auf enable. Director wird dich darauf hinweisen, dass er eine Datenbank benötigt, und diese legen wir ihm nun an.

Die Datenbank

Die Datenbank muss zwingend UTF-8 encodiert sein.

mysql> CREATE DATABASE director CHARACTER SET 'utf8';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT ALL ON director.* TO director@localhost IDENTIFIED BY 'totalgeheim';"
Query OK, 0 rows affected (0.00 sec)

Icinga Director create database schemaIn Icinga Web 2 wird diese Datenbank nun als Ressource hinzugefügt. Per Configuration → Application → Resources → Create a new resource gelangt man zur Eingabemaske, in der man die geforderten Angaben macht. Einmal als Ressource hinterlegt, kann die Datenbank nun im Webinterface dem Director zugeordnet per Klick auf »Create database schema« und mit Leben gefüllt werden. (In der Tat ist es wünschenswert, den Kickstart Wizard zu verwenden und kein Datenbank-Schema manuell einzuspielen.)

Die Inbetriebnahme

Director Kickstart WizardSobald dem Director eine valide Datenbank untergeschoben wurde, möchte er seine Konfiguration vervollständigen. Trage im nun erscheinenden Formular den vorhin erstellten API-User mit dem dazugehörigen Passwort ein; Endpoint name bezeichnet den Namen, auf den das Zertifikat ausgestellt wurde (vgl. /etc/icinga2/pki). Und wenn das alles geklappt hat — dann ist das Ganze betriebsbereit.

Icinga Director first deploymentDer Director präsentiert nach dem Ausführen des Kickstarts gleich mal > 200 Änderungen, die er aufgegriffen hat; versuche es! Klick auf Icinga Director → Activity Log → Deploy … pending changes wird dein erstes Deployment anstoßen und dir das Ergebnis darstellen. Willkommen also, Icinga Director!

UnterschriftDie Einrichtung ist die eine, die Inbetriebnahme und Nutzung dann wieder eine andere Sache — und hierzu habe ich einen eigenen Artikel verfasst.


Mögliche Stolpersteine

  • Das Feature api lässt sich nicht aktivieren → Überprüfe die Requirements, hier wird Icinga2 ≥ 2.4.3 benötigt
  • directordb lässt sich nicht als Database backend einstellen → hast du das Schema mysql.sql fehlerfrei eingespielt?
  • Nach Klick auf »submit« im »kickstart wizard« wird der Button grau und es tut sich überhaupt nichts mehr → php5-curl installieren, vgl. Bug #10929
  • Nach Klick auf »submit« im »kickstart wizard« kommt die Fehlermeldung »Parsing JSON result failed: Syntax error« → stelle sicher, dass du die korrekten Login-Daten von API-User director eingegeben hast, denn ein falsches Passwort kann zu dieser Fehlermeldung führen, vgl. Bug #11286
  1. Danke für deinen Post. Ich nutze Icinga zum Glück nur zum „Ein bisschen rumspielen“ zu Hause, und hatte da früher nur das klassiche Icinga, zusammen mit einer nagiosql-Installation auf einem Raspberry Pi 1 laufen.
    Nach einem Hardwareupgrade habe ich es auf nem Pi 3 erstmal mit Prometheus versucht, aber wurde damit nicht so wirklich warm, und bin gerade dabei, Icinga2 mit Web2-Frontend einzurichten. Was da alles an neuen Features hinzukommt ist erstmal verwirrend, da hat mir die offizielle ansible-Role und dein Post sehr geholfen. Danke.

  2. Vielen Dank. Ich habe meine Docker Images angepasst, so dass es sehr einfach ist, ein funktionierendes Icinga2IDO mit IcingaWeb2 und Director-Modul aufzusetzen:

    https://github.com/mwaeckerlin/icinga2ido
    https://github.com/mwaeckerlin/icingaweb2

  3. Hi,
    jetzt habe ich erst im Nachhinein den Kommentar von Mictu gelesen, Danke dafür! Das lässt hoffen. Aber sag bitte trotzdem deine Meinung.

  4. Hallo,
    erst mal vielen Dank für deine richtig Klasse geschriebenen Beiträge…
    Bisher hat sich ein Kollege um das Monitoring mit Nogios gekümmert, der ist jetzt nicht mehr am Start. Da ich das jetzt übernehme möchte ich mit Icinga2 neue in das Thema einsteigen. Frage:
    Meinst du es ist jetzt bereits möglich gleich mit Debian 9 (stretch) eine Neuinstallation zu beginnen?
    Was dann gelichzeitig die Frage aufwirft, ob der Icanca2 Director auch mit php7 (php7.0-curl) läuft?
    Grüße,
    Gerd Peter

    • Hi Gerd,

      der Director läuft definitiv mit PHP 7 (fände es auch ziemlich dämlich, wenn das nicht der Fall wäre). Ich sehe da für Debian 9 keine Probleme, aaaaaber ausprobiert habe ich es bislang nicht 😉 Aber du kannst ja mal berichten, wie es geklappt hat!

      Viele Grüße,
      Marianne

      • Hallo Marianne,

        okay und danke für die Info,
        Probiere ich also auf jeden Fall (erst mal) aus, aaaaaber frühstens über die Osterfereien und sach Bescheid,

        Grüße,
        gerd

        PS: war echt ein witziger Zufall, das ganze: cebit – c’t Stand – ix gesehen mit Workshop über ZFS, als Proxmox’er und ZFS benutzer gekauft – den Artikel über Icinga-Director gelesen – im Internet recherchiert – auf deiner Seite gelandet – dann erst gemerkt, dass die Autorin und du die selbe Person ist.
        Finde ich total witzig! 😉

        • Oha, dann hättest du mich mal besuchen sollen — unser Stand war nur einige Schritte vom Heise-Stand entfernt 😀 Und: so wie dir ging es offenbar vielen, einschließlich meiner eigenen Kollegen, die mich mit dem Heft in der Hand auf dem Flur verfolgten *grins*.

  5. Hi – diesmal ein Tipp von mir:
    Ab Ubuntu 16.04 wird per Standard nur noch PHP7.0 angeboten. PHP5.6-CURL ist zwar mit Aufwand möglich aber nicht so schön.
    Ich habe ein apt-get install php7.0-curl installiert. Aber dann läuft es noch nicht.
    Damit es läuft muss man in der /etc/php/7.0/cli/php.ini und /etc/php/7.0/apache2/php.ini jeweils die extension anpassen.
    Aus einem ;extension=php_curl.dll muss ein extension=curl.so gemacht werden. Apache neu starten und schon lief der Director Import problemlos.
    Vielleicht magst Du das ja noch in Deiner Beschreibung aufnehmen. Hat mich einige Zeit gekostet.

  6. Ich bekomme immer einen Curl-Timeout, wenn ich versuche das Datenbankschema zu übertragen via Kickstart-Assisten: CURL ERROR: Connection timed out after 3000 milliseconds

    Jemand eine Idee, wie ich das weg bekomme?

    Grüße

  7. Hallo Frau Spiller,

    die Anleitung ist super. Nur kommt auf meinem System bei der Inbetriebnahme der Reiter Configuration nicht. Warn kann das denn liegen? Bis dahin wer die Installation kein Problem.

    MFG Faust

    • Sicher? Also ich meine: ganz sicher? 😉

      Ich habe es gerade mal mit meinen Installationen abgeglichen: Configuration → Modules → director ergibt bei mir (aktiv) Module: director und als inaktiven Reiter Configuration.

      Ich habe in /etc/icingaweb2/modules/director eine config.ini mit dem folgenden Inhalt, also der Datenbank, die für den Director verwendet werden soll:

      [db]
      resource = "Director"

      Auf die Art ließe sich das Graphische ggf. umgehen, aber wenn der Reiter wirklich verschwunden sein sollte, wäre das wohl einen Bugreport an den Maintainer wert 🙂

  8. Anonymous

    Thank you!!!

  9. Ich bekomme bei der Konfiguration den Fehler: „CURL ERROR: Failed to connect to localhost port 5665: Verbindungsaufbau abgelehnt“, kann jemand helfen? Bin nicht soo mega Linux versiert

  10. Hallo,

    ich habe das Problem, dass wenn ich die Datenbank Resource im Director einstellen will dies nicht funktioniert. Ich kriege angezeigt „Form successfully sent“ aber die Resource ist nicht ausgewählt und muss neu eingestellt werden. Vielleicht eine Idee?

    Ich wäre über jeden Tipp dankbar.

    • Welche Version des Director verwendest du denn?

      • Ich habe den Icinga Director gestern von GIT geclont. Icinga 2 und Icinga Web 2 sind die neuesten Versionen. Betriebsystem ist Debian 8.4

        • Philipp

          Hat hier schon jemand eine Lösung gefunden? Ich habe genau das gleiche Problem. Sobald ich die DB Resource auswähle, erhalte ich ebenfalls die Meldung „Form has successfully been sent“.

          Das Datenbankschema wurde erfolgreich angelegt (72 Tabellen) und nach Anlegen der Resource in Icingaweb2 kann dort auch erfolgreich die Konfiguration validiert werden.

          Connection to icinga2director as director on localhost: successful
          protocol_version: 10
          version: 5.5.49-0+deb8u1
          version_compile_os: debian-linux-gnu

    • Thomas Gelf

      Servus,

      ich vermute dass der Director seine Konfiguration nicht schreiben darf. Sprich: aus irgend einem Grund sind die Berechtigungen in /etc/icingaweb2 falsch. Dass dir kein Fehler angezeigt wird ist ein Bug, eigentlich müsste da (jedenfalls wenn ich mit meiner Vermutung richtig liege) der Inhalt der zu erstellenden Konfiguration angezeigt werden, damit du ihn alternativ manuell anlegen kannst.

      Unabhängig davon bin ich mir aber ziemlich sicher was meine Vermutung angeht. Ich denke du hast da irgendwie manuell reingegrätscht und entweder /etc/icingaweb2/modules oder /etc/icingaweb2/modules/director mit falschen Berechtigungen erstellt. Die Datei die er anlegen möchte ist nämlich /etc/icingaweb/modules/director/config.ini, sie muss auch nur eine einzige Einstellung enthalten:

      [db]
      resource = „director“

      Wobei „director“ hier der Name deiner Datenbank-Resource ist. Im Grunde könntest die Datei auch manuell anlegen, du kommst dann weiter. Berechtigungen geradebiegen wäre definitiv die bessere Lösung. Ein fehlendes „director“-Verzeichnis wäre auch kein Problem, die Rechte von „modules“ müssen aber passen.

      Lieben Gruß
      Tom

      PS: Dass der Fehler an der Stelle nicht angezeigt wird ist gefixt, allerdings leider noch nicht im Master. Du findest die entsprechende Änderung hier:

      https://github.com/Icinga/icingaweb2-module-director/commit/31163b070831946024d2be81102e433e923f9360

      Wenn du diese Änderung einspielst müsstest du eine entsprechende Fehlermeldung sehen. Oder du wartest auf das nächste Release. Oder korrigierst das mit den Berechtigungen. Im Zweifel bitte einfach ein Support-Ticket auf dev.icinga.org öffnen.

      • Philipp

        Hallo Tom,

        vielen Dank für die schnelle Antwort.
        Komischerweise sind die Berechtigungen des Verzeichnisses /etc/icingaweb2/modules wie vermutet abweichend zu den anderen Verzeichnissen des Ordners.
        Nach der Anpassung dieser Berechtigung ist die Auswahl der DB Resource wie beschrieben möglich.

        Vielen Dank nochmals!

        Gruß,
        Philipp

  11. Leider lässt sich die Datenbank bei mir nicht als Database Backend einstellen.
    Ich habe wie beschrieben das Schema mysql.sql eingespielt.
    Irgendeine Idee was es noch sein könnte? 🙁

  12. Hallo alle zusammen,
    wie die Endpunktname hinzuzufügen, weil ich diesen Fehler in meiner Konfiguration haben
    „Failed to load icinga_zone … “ und ich weiß nicht, wie es zu lösen.

  13. Hi everybody,

    how to add the Endpoint Name because i have this error in my configuration
    „Failed to load icinga_zone … “ and i don’t know how to resolve it.

  14. Hallo zusammen,

    die Installation an sich kein Problem. Nach dem die Freischaltungen in der FW erfolgt sind (unser Icingaweb2 steht in der DMZ) konnte auch der director eigentlich intuitiv angebunden werden. Sofort waren die endpoints,commands und zones sichtbar. nun beginnt die eigentliche arbeit: Zuordnen der Endpoints zu den eingelesen zones. Aber auch hier ist Arbeit eigentlich selbsterklärend. Einen Blick in die Preview: sieht so aus wie in der Umgebung ==> kann also schon einmal nicht falsch sein 😉

    Und nun beginnt das Drama : Imporieren der bestehden Config (user, usregroup… ) alles noch einmal eingeben und pflegen ? ne das kann es nicht sein.

    • Das dachte ich mir auch, ich verweise an dieser Stelle mal auf diesen Bug Report, den ich geöffnet habe — wir sollten wohl die Füße still halten, bis in den nächsten Tagen das Release nebst Dokumentation fertig gestellt ist 😉 Und dann mal schauen…

      Viele Grüße!

  15. Hi, freut mich mich zu „hören“ :-)Die Einrichtung ist in der Tat nochmal eine Sache für sich, vor allem dann, wenn eine bestehende Konfig übernommen werden soll; ich verweise an der Stelle mal auf https://dev.icinga.org/issues/11300 :)Am Montag soll das Release fertig sein – und mit ihm auch Dokumentation. Mal abwarten. Ansonsten schreibe ich gerade am Artikel zur Einrichtung, aber ich ringe da stellenweise auch noch mit der Technik. Ich denke, in den nächsten Tagen sind wir alle schlauer… :-)Viele Grüße!

  16. Danke für deine Anleitung. Werde ich morgen gleich mal ausprobieren.

  17. Deine Installationsanleitung ist sehr viel hilfreicher als die bisher vorhandene im git! 🙂

    Im allerersten Anlauf dachte ich erst, er holt sich das director Schema selbst, aber in diesem Schritt gibt es ja wenigstens noch eine eindeutige Fehlermeldung.

    Es macht jetzt schon einen guten Eindruck und mit dem Stable release wird es bestimmt richtig nützlich sein.

  18. @sys_adm_ama sehr gerne! Aber das solltest du ja schon wissen das ich zur Not doof nachfrage 😉

  19. @NewPythonL0ver Cool! Rückmeldung erwünscht 🙂

  20. @sys_adm_ama werde ich nachher direkt mal ausprobieren

  21. @sys_adm_ama Icinga2 steht bei mir auf dem Homeserver auch noch an…

Reposts

  • Daniel Koller
  • Henry N
  • Icinga

Mentions

  • Fuchsi
  • Michael Friedrich

Schreibe einen Kommentar

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

Do NOT follow this link or you will be banned from the site!