Abhängigkeiten funktionieren nicht (Icinga2/Director/StatusMap)

  • Hallo zusammen,


    ich bin relativ neu in der Materie Icinga. Ich habe ein funktionierendes Monitoring am laufen (130 Hosts, > 1000 Services) aber scheitere daran Abhängigkeiten für meine Status Map zu generieren. Das System:

    Icinga2 2.4.1

    Icinga Director 1.3.1

    StatusMap (https://github.com/invliD/icingaweb2-module-statusmap)


    Ich habe so ziemlich jeden Beitrag hier im Forum, wie auch im gesamten Internet gelesen und versucht zu verstehen, wie ich mein Vorhaben realisieren kann - ich habe es bisher nicht verstanden. Ich wäre für eine einfache Step-by-Step Anleitung mehr als dankbar. Was bisher geschah:


    Ich habe im Director zwei Datenfelder definiert: "child_host_name" und "parent_host_name", diese kann ich beiden Hosts nach Belieben ausfüllen, das interessiert meine Status Map nicht wirklich, siehe Bild:


    Ich habe gelesen, dass ich der Fileshipper dazu genutzt wird und habe ihn laut Anleitung editiert: (Ich weiss ehrlich gesagt garnicht ob ihn wirklich brauche!)

    /etc/icingaweb2/modules/fileshipper/directories.ini:

    Code
    1. [KUNDE]source = /etc/icinga2/KUNDE
    2. target = zones.d/director-global/KUNDE
    3. extensions = .conf


    /etc/icinga2/KUNDE/dependencies.conf:


    Code
    1. apply Dependency "Abhängigkeit" to Host {
    2. parent_hostname = host.vars.parent_host_name
    3. disable_checks = true
    4. disable_notifications = true
    5. assign where host.vars.parent_host_name
    6. }


    Ich bin mit meinem Latein am Ende und weiss nicht ob ich etwas vergessen oder falsch gemacht habe. Bin für eine Anfängerfreundliche Unterstützung sehr dankbar!


    Viele Grüße

  • Greift denn diese Apply-Regel (etwa: icinga2 object list --type Dependency) und stehn diese Relationen dann auch in der icinga_hostdependencies Tabelle, die das StatusMap-Modul da anziehen versucht? (Habe das noch nie getestet, da das Modul fremden Code ins Monitoring-Modul einbettet, kann also dort schon kaputt sein).

  • Der Befehl "icinga2 object list --type Dependency" gibt keine Ergebnisse aus.


    Wo finde ich die icinga_hostdependencies Tabelle?

  • Die Tabelle brauchst du dann gar ned angucken (die liegt in der Icinga Datenbank), da die Konfigurationsobjekte gar ned mal existieren.


    Bist du dir sicher dass a) die Custom-Attribute richtig gesetzt sind b) die Apply-Regel für Dependencies wirklich von Icinga 2 geladen wird?


    Code
    1. icinga2 object list --type Host --name *irgendeinhostname*
    2. icinga2 daemon -C -x notice | grep dependencies.conf
  • Bei dem ersten Befehl bekomme ich die Objekte angezeigt. Dort sehe ich auch die Variablen "parent_host_name"


    Der zweite Befehl hat keine Ausgabe.


    Gibt es kein Mini-Howto wie das ablaufen soll? Das Problem ist, dass auf jeder Internetseite etwas anderes steht. Beispiel: Ist das Feld "parent_host_name" ein String oder Directorobject? Oder ist das egal?


    Und ob ich den Fileshipper brauche weiss ich immernoch nicht, geschweige denn ob ich alles richtig konfiguriert habe. In der Weboberfläche habe ich noch garnichts diesbezüglich konfiguriert... nur die o.a. Textfiles :/

  • Vermutlich tut der Fileshipper nicht so wie gedacht, da die Dependency-Regel in deinem Konfigurationsdeployment nicht auftaucht. Du kannst diese aber auch einstweilen woanders hinlegen, etwa in der icinga2.conf inkludieren und dann weitertesten. Dann kannst du dich immer noch mit dem Fileshipper beschäftigen, wenn das mal klappt.

  • Hallo Michi,


    vielen Dank - der Tipp mit dem Includen der dependencies.conf in der icinga2.conf führte zum Erfolg (siehe Bild anbei). Für jemanden, der das gleiche Problem hat: Das steht in der dependencies.conf:


    Code
    1. apply Dependency "Abhängigkeit" to Host {
    2. parent_host_name = host.vars.parent_host_name
    3. disable_checks = true
    4. disable_notifications = true
    5. assign where host.vars.parent_host_name
    6. }


    Kann ich die vielen einzelnen Hosts, die nicht in Abhängigkeit zu einem "Standort" stehen in eine Gruppe packen, das sieht aktuell etwas unübersichtlich aus. Oder geht das nur mit Abhängigkeit von einem "Host"? Das meiste davon sind WTS-Server im RZ und die würde ich gerne in eine "optische Gruppe" packen.


    Danke und Gruß

    Daniel

  • Ich kenne das Modul nicht, ob man da was drehen oder gruppieren kann. Frag doch mal freundlich in einem Feature-Request danach.


    Sei dir aber dessen bewusst, dass das Modul relativ alt ist, ich weiss nicht obs noch entwickelt wird :)

  • Ok, vielen Dank soweit. Setze damit den Beitrag als gelöst. Gibt es denn eine aktuelle Map die zu empfehlen ist? NagVis? Oder etwas anderes, was ich noch nicht entdeckt habe!? Ist denn für Icinga2 wieder etwas integriertes geplant?

  • Geplant ist aktuell nix, aber mit den bestehenden Web 2 Modulen kann man sich sicherlich eigene Module zaubern.


    Mir gefällt aktuell das Map-Modul von nicolaiB sehr gut: https://github.com/nbuchwitz/icingaweb2-module-map

  • Ich hatte mir das Modul vor einer Weile mal angeschaut es aber schnell wieder verworfen. Eventuell darf ich demnächst für ein Kundenprojekt etwas Ähnliches stricken, kann aber noch nicht sagen wann ich da mehr zu sagen kann.


    Wenn du ein bisschen JS/PHP verstehst ist es aber auch keine schwarze Magie ein eigenes Modul anzufangen :-)

  • Mit wenig Aufwand konnte ich die Notwendigkeit der IDO-Klassen durch ein normales Statement austauschen. Weiterhin werden jetzt eventuelle Filter-Einschränkungen der Benutzer berücksichtigt (Kunde A kann z.B. nur seine eigenen Hosts sehen). Ein PR steht noch aus.


    Die Dokumentation des zur Visualisierung verwendeten Frameworks (vis.js) lässt mich hoffen, dass man die Host-Objekte vernünftig gruppieren kann.


    https://github.com/nbuchwitz/icingaweb2-module-statusmap

  • Das Custom-Attribut is eine gute Idee, da die Dependencies eh nicht ganz genau das abbilden können was du brauchst. Zumal die Tables nur Host-Host und Service-Service hergeben, kein Mischverhalten wie es Icinga 2 kann.


    Ich finde, die Bubbles brauchen mehr Pepp. Aktuell sieht das ein bisserl Meh aus, aber das is nur meine Meinung.


    Bei Icinga Web 1 gabs mal JS, das sich bei Klick auf den Knoten zentriert hat in der Ansicht, inkl Drag-Ziehen. Geht das mit dem aktuellen Modul auch? :-)

  • Vielleicht gibts auch was in JS, das neuer und besser ist. Web1 ist ja auch schon 8 Jahre her.


    https://github.com/Icinga/icin…s/Icinga/Cronks/StatusMap



    vis.js schaut an sich ned schlecht aus, nur der ovale Bubble stört mich. Ebenso der weisse Hintergrund ... muss damit mal spielen, wenn ich dein Map-Modul durch hab ;)


    Lizenztechnisch is vis.js MIT, was sich gut mit GPL verträgt. Du kennst mein Spiel ja schon, sonst hätte ich auf was anderem bestanden ;)


    http://visjs.org/index.html#licenses

  • Ich denke man kann da am Design bestimmt noch was machen. Hier gibt es ja ein bisschen Input.


    Vielleicht kann man ja mal in einem neuen Thread kurz ein paar Punkte sammeln, die ein solches Modul mitbringen sollte und dann bereite ich etwas für den Hackathon vor, an dem man dann gemeinsam arbeiten kann. Vielleicht kann man das ja zusammen mit dem Mikesch machen :-) ?

  • Hi,


    ich empfehle NagVis (http://nagvis.org) . Es ist ein sehr gut funktionierendes Visualisierungstool um aus Icinga2 gute und ansprechende Visualisierung-Darstellung von Host, Service, Hostgroup, etc. zu erstellen. Das wichtigste aber ist, der Maintainer - Lars Michelsen - es aktiv pfegt und Feature und Bugfix schnell einarbeitet.


    Mit dem icingabweb2-module-nagivs (

    https://github.com/Icinga/icingaweb2-module-nagvis) kann man es gut integrieren.


    Wenn du von NagVis die volle Kraft wirklich ausschöpfen willst, dann solltest du folgendes beachten.


    * Alle Hosts sollten irgendwie sinnvoll mit "Parents" verknüpft sein

    * Ein Host sollte immer mindestens Mitglied einer Hostgruppe sein

    * Verwende als Zugriff das Datebankbackend und nicht den LiveStatus

    * Verwende die Möglichkeit von "automap" - beginnend bei einem "root-Knoten", die ergeben sich dann automatisch durch die "parents"

    * Eine Auto-Fehlermap - die sich nicht zu sehr aufbläht - bekommt man in NagVis ebenso gut hin


    All die Dinge die brauchst gibt es in NagVis!!! Es ist nur eine Frage der Konfiguration! und des Aufbaus deines Monitorings.


    NagVis setzte ich seit Nagios/Icinga Zeiten ein und ist eines der besten Tools um eine gute visuelle Darstellung zu erreichen.

  • Ich denke man kann da am Design bestimmt noch was machen. Hier gibt es ja ein bisschen Input.


    Vielleicht kann man ja mal in einem neuen Thread kurz ein paar Punkte sammeln, die ein solches Modul mitbringen sollte und dann bereite ich etwas für den Hackathon vor, an dem man dann gemeinsam arbeiten kann. Vielleicht kann man das ja zusammen mit dem Mikesch machen :-) ?

    Klingt sehr gut :) Du kannst es aber auch einfach in Github issues in deinem Fork packen, dann können wir alle bis dahin noch diskutieren, oder holen noch mehr Feedback ab. Du könntest auch mal den Originalauthor fragen, ob er noch was macht an dem Modul.