]> granicus.if.org Git - icinga2/commitdiff
GelfWriter: Add 'check_command' to CHECK RESULT/* NOTIFICATION/STATE CHANGE messages 5331/head
authorMichael Friedrich <michael.friedrich@icinga.com>
Tue, 6 Jun 2017 18:14:21 +0000 (20:14 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Tue, 6 Jun 2017 18:23:26 +0000 (20:23 +0200)
This allows for much more easy filtering in Graylog web
similar to Graphite or InfluxDB and their template dashboards.

lib/perfdata/gelfwriter.cpp

index b9d43bdd9cc0be07a534b71556dfbd0c0120f7b9..f8798d4f684a1712426f35f09c2778937090d5df 100644 (file)
@@ -21,6 +21,7 @@
 #include "perfdata/gelfwriter.tcpp"
 #include "icinga/service.hpp"
 #include "icinga/notification.hpp"
+#include "icinga/checkcommand.hpp"
 #include "icinga/macroprocessor.hpp"
 #include "icinga/compatutility.hpp"
 #include "base/tcpsocket.hpp"
@@ -220,6 +221,11 @@ void GelfWriter::CheckResultHandlerInternal(const Checkable::Ptr& checkable, con
 
        fields->Set("_reachable", checkable->IsReachable());
 
+       CheckCommand::Ptr commandObj = checkable->GetCheckCommand();
+
+       if (commandObj)
+               fields->Set("_check_command", commandObj->GetName());
+
        double ts = Utility::GetTime();
 
        if (cr) {
@@ -317,6 +323,7 @@ void GelfWriter::NotificationToUserHandlerInternal(const Notification::Ptr& noti
 
        if (service) {
                fields->Set("_type", "SERVICE NOTIFICATION");
+               //TODO: fix this to _service_name
                fields->Set("_service", service->GetShortName());
                fields->Set("short_message", output);
        } else {
@@ -332,6 +339,11 @@ void GelfWriter::NotificationToUserHandlerInternal(const Notification::Ptr& noti
        fields->Set("_notification_type", notificationTypeString);
        fields->Set("_comment", authorComment);
 
+       CheckCommand::Ptr commandObj = checkable->GetCheckCommand();
+
+       if (commandObj)
+               fields->Set("_check_command", commandObj->GetName());
+
        SendLogMessage(ComposeGelfMessage(fields, GetSource(), ts));
 }
 
@@ -371,6 +383,11 @@ void GelfWriter::StateChangeHandlerInternal(const Checkable::Ptr& checkable, con
                fields->Set("_last_hard_state", host->GetLastHardState());
        }
 
+       CheckCommand::Ptr commandObj = checkable->GetCheckCommand();
+
+       if (commandObj)
+               fields->Set("_check_command", commandObj->GetName());
+
        double ts = Utility::GetTime();
 
        if (cr) {