DateTime Object im Director verwenden - wie geht das?

  • Hallo,


    könnte mich jemand auf die Spur bringen, wie ich das aktuelle Datum in einem bestimmten Format als Command Parameter übergeben kann und das mit dem Director einrichte?


    Was ich will: mit dem Plugin check_elasticsearch_index.pl überprüfen, dass der ES-Index "logstash-%Y.%m.%d" existiert, also heute "logstash-2017.05.04"


    Was ich herausgefunden habe: mittels DateTime Objekten sollte das gehen, also in etwa "var es_index = "logstash-" + DateTime().format("%Y.%m.%d)"


    Aber wie ich das mit dem Director und seinen Datenfeldern hinbekomme, habe ich keine Ahnung...


    Danke!

  • Das würde auch inline code erfordern, und ich glaube nicht dass das aktuell geht. Da wirst du vermutlich nicht um eine lokale apply-Regel herumkommen, die du etwa mit dem fileshipper Modul dem Director einfüttern könntest.

  • Möglicherweise schadet es aber nicht, das auf GitHub als Feature-Request oder Gedanken zu hinterlegen. Ich glaube, die Anforderung kommt immer mal wieder vor, "inline" Icinga 2 DSL zu schreiben.

  • N'Abend,


    ich antworte mal hier, da ich nicht weiß wo das hingehört... Ich hab das wie oben beschrieben mit dem fileshipper gelöst - dachte ich. Konnte dann aber feststellen, dass die Zuweisung

    vars.elasticsearch_index = "logstash-" + DateTime().format("%Y.%m.%d")

    offenbar nur jedesmal beim Ausbringen der Konfiguration mit dem Director neu ausgewertet wird oder bei manuellem reload von icinga2. Danach prüft der Check stur auf das Datum, was eben beim letzten Neuladen aktuell war, auch noch Tage später.


    Das hat jetzt vmtl. weniger mit dem Director zu tun, trotzdem die Frage ob mein Vorhaben überhaupt realisierbar ist. Also dass eine Variable jedesmal bei Check-Ausführung neu ausgewertet wird.


    Zur Not bastel ich mir ein eigenes Check-Plugin, dass erscheint mir mittlerweile einfacher...



  • Probiers mal als Lamdba-Funktion, die zur Laufzeit beim Ausführen des Checks ausgewertet wird.

    Code
    1. vars.elasticsearch_index = {{ "logstash-" + DateTime().format("%Y.%m.%d") }}