EventHandler einrichten

  • Hallo,


    ich versuche gerade einen EventHandler einzurichten, der bei einem Statuswechsel eines Hosts ein Script aufruft. Hierzu habe ich folgendes in der command.conf als Platzhalter definiert:


    object EventCommand "event-submit-state" {
    import "plugin-event-command"


    command = "touch /tmp/eventtest.txt"


    }


    Laut Doku "Unlike notifications event commands are called on every host/service execution
    if one of these conditions match"
    sollte ja nun unter /tmp eine Datei angelegt werden, sobald ein Service/Host den Status wechselt, korrekt?


    Habe einen überwachten Service beendet und es nichts passiert. Wo habe ich hier einen Fehler gemacht, bin für jede Hilfe dankbar.


    Sonstige Infos:
    Icinga 2 Version 2.0.1
    mysql-ido


    Gruß
    Daniel

  • Hi,


    Update wurde durchgeführt.


    In den Services habe ich bisher nicht definiert. Muss der EventHandler ebenfalls über apply Eventhandler eingesetzt werden?


    Gruß
    Daniel

  • Ja, macht durchaus Sinn.


    Habe jetzt in einer speraten events.conf folgendes definiert:


    apply EventCommand "event_test" {
    import "event-submit-state"


    assign where "linux-servers" in host.groups
    assign where "windows-servers" in host.groups
    }


    Bei einem checkconfig bekomme ich folgenden Output:


    [2014-09-03 09:41:48 +0200] critical/config: Location:
    /etc/icinga2/zones.d/ha-master/defaults/events.conf(1): apply EventCommand "event_test" {


    /etc/icinga2/zones.d/ha-master/defaults/events.conf(2): import "event-submit-state"
    /etc/icinga2/zones.d/ha-master/defaults/events.conf(3):


    Config error: 'apply' cannot be used with type 'EventCommand'
    [2014-09-03 09:41:48 +0200] critical/config: 1 errors, 0 warnings.

  • Hi,


    danke für deine Hilfe, hab es jetzt hinbekommen.


    Anmerkung: Laut Doku sollte enable_event_handler bei Hosts default auf true sein, bei mir nicht. Ich musste in der Hosttemplate enable_event_handler = 1 setzten damit es funkitoniert.


    Gruß
    Daniel

  • Hab jetzt ein schönes Beispiel wie man Event Commands in Icinga 2 einbaut, für die Dokumentation eingebaut. Findet sich dann in der 2.1.1 wieder.


    https://dev.icinga.org/issues/7070

    @dnsmichi
    Zu der Doku hab ich ein paar Fragen/Anregungen, da ich selber am Freitag versucht hatte, einen ersten EventHandler zu bauen, aber hier und dort einige Stolpersteine hatte. Hab ihn gerade endlich zum Laufen gebracht.
    Quelle: https://docs.icinga.com/icinga…arch=event#event-commands
    1.)
    /* pass event commands through ssh */
    object EventCommand "event_by_ssh" {
    command = [ PluginDir + "/check_by_ssh" ]
    [...]


    Fehlt hier nicht der import "plugin-event-command" ?

    Code
    1. /* pass event commands through ssh */
    2. object EventCommand "event_by_ssh" {
    3. import "plugin-event-command"
    4. command = [ PluginDir + "/check_by_ssh" ]

    2.)
    Wenn es ein "generic EventCommand object event_by_ssh which can be used for all event commands triggered using ssh:" ist, warum wird es als Object und nicht als Template definiert?
    3.)
    //vars.event_by_ssh_identity = "/home/icinga/.ssh/id_rsa.pub"
    Muss es hier nicht der Private key sein? Also /home/icinga/.ssh/id_rsa ?
    Des Weiteren habe ich keinen User "icinga" auf meinem System, sondern "nagios" ^^ 
    4.)
    Beim Service Objekt wäre ein Hinweis, dass auch Apply Regeln funktionieren, recht nett, da wir ja alle schreibfaul sind und nicht für jedes Event auf einem Host eine neues Service Objekt Schreiben wollen :D 
    Bsp.:


    Sofern gewünscht, kann ich gerne über GitHub einen Pull Request verfassen um die Punkte mit in die Doku zu nehmen.


    Gruß,


    Marcus

  • 1.) Nein, weil es in der 2.6 default templates gibt.
    2.) Weil man Templates nicht via "event_command" in anderen Objekten referenzieren kann. Ergibt einen Validierungsfehler.
    3.) Ist nur ein Beispiel und auch schon über zwei Jahre her, hat vmtl Fehler. Das Beispiel gehört überarbeitet, Patches gerne.
    4.) Stammt noch aus der Zeit, wo in der Dokumentation mehrheitlich auf Objekte referenziert wurde, um den Benutzer mit Apply nicht zu überfordern. Mittlerweile wissen wir aber, dass viele einfach nur Copy-Paste machen und nicht nachdenken ;-) Insofern du da Apply einbauen willst, kannst du auch gleich die Variablenzuweisung anpassen, von "$host.vars.blubb$" auf host.vars.blubb.

  • 1.) Nein, weil es in der 2.6 default templates gibt.
    2.) Weil man Templates nicht via "event_command" in anderen Objekten referenzieren kann. Ergibt einen Validierungsfehler.
    3.) Ist nur ein Beispiel und auch schon über zwei Jahre her, hat vmtl Fehler. Das Beispiel gehört überarbeitet, Patches gerne.
    4.) Stammt noch aus der Zeit, wo in der Dokumentation mehrheitlich auf Objekte referenziert wurde, um den Benutzer mit Apply nicht zu überfordern. Mittlerweile wissen wir aber, dass viele einfach nur Copy-Paste machen und nicht nachdenken ;-) Insofern du da Apply einbauen willst, kannst du auch gleich die Variablenzuweisung anpassen, von "$host.vars.blubb$" auf host.vars.blubb.

    hey michi, danke und willkommen zurück. Zu 2. ich bekam keinen validierungsfehler als ich den event by SSH als template definiert hab ^^