"\t" "event_handler_enabled=" << CompatUtility::GetCheckableEventHandlerEnabled(checkable) << "\n";
if (cr) {
- fp << "\t" << "check_execution_time=" << Convert::ToString(Service::CalculateExecutionTime(cr)) << "\n"
- "\t" "check_latency=" << Convert::ToString(Service::CalculateLatency(cr)) << "\n";
+ fp << "\t" << "check_execution_time=" << Convert::ToString(cr->CalculateExecutionTime()) << "\n"
+ "\t" "check_latency=" << Convert::ToString(cr->CalculateLatency()) << "\n";
}
Host::Ptr host;
double end = cr->GetExecutionEnd();
std::pair<unsigned long, unsigned long> time_bag_end = CompatUtility::ConvertTimestamp(end);
- double execution_time = Service::CalculateExecutionTime(cr);
+ double execution_time = cr->CalculateExecutionTime();
fields1->Set("start_time", DbValue::FromTimestamp(time_bag_start.first));
fields1->Set("start_time_usec", time_bag_start.second);
fields1->Set("command_args", Empty);
fields1->Set("command_line", CompatUtility::GetCommandLine(checkable->GetCheckCommand()));
fields1->Set("execution_time", Convert::ToString(execution_time));
- fields1->Set("latency", Convert::ToString(Service::CalculateLatency(cr)));
+ fields1->Set("latency", Convert::ToString(cr->CalculateLatency()));
fields1->Set("return_code", cr->GetExitStatus());
fields1->Set("output", CompatUtility::GetCheckResultOutput(cr));
fields1->Set("long_output", CompatUtility::GetCheckResultLongOutput(cr));
fields->Set("percent_state_change", CompatUtility::GetCheckablePercentStateChange(host));
if (cr) {
- fields->Set("latency", Convert::ToString(Service::CalculateLatency(cr)));
- fields->Set("execution_time", Convert::ToString(Service::CalculateExecutionTime(cr)));
+ fields->Set("latency", Convert::ToString(cr->CalculateLatency()));
+ fields->Set("execution_time", Convert::ToString(cr->CalculateExecutionTime()));
}
fields->Set("scheduled_downtime_depth", host->GetDowntimeDepth());
fields->Set("percent_state_change", CompatUtility::GetCheckablePercentStateChange(service));
if (cr) {
- fields->Set("latency", Convert::ToString(Service::CalculateLatency(cr)));
- fields->Set("execution_time", Convert::ToString(Service::CalculateExecutionTime(cr)));
+ fields->Set("latency", Convert::ToString(cr->CalculateLatency()));
+ fields->Set("execution_time", Convert::ToString(cr->CalculateExecutionTime()));
}
fields->Set("scheduled_downtime_depth", service->GetDowntimeDepth());
Log(LogWarning, "Checkable", "Unknown checkable type for statistic update.");
}
}
-
-double Checkable::CalculateExecutionTime(const CheckResult::Ptr& cr)
-{
- if (!cr)
- return 0;
-
- return cr->GetExecutionEnd() - cr->GetExecutionStart();
-}
-
-double Checkable::CalculateLatency(const CheckResult::Ptr& cr)
-{
- if (!cr)
- return 0;
-
- double latency = (cr->GetScheduleEnd() - cr->GetScheduleStart()) - CalculateExecutionTime(cr);
-
- if (latency < 0)
- latency = 0;
-
- return latency;
-}
Endpoint::Ptr GetCommandEndpoint(void) const;
- static double CalculateExecutionTime(const CheckResult::Ptr& cr);
- static double CalculateLatency(const CheckResult::Ptr& cr);
-
static boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, const MessageOrigin::Ptr&)> OnNewCheckResult;
static boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, StateType, const MessageOrigin::Ptr&)> OnStateChange;
static boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, std::set<Checkable::Ptr>, const MessageOrigin::Ptr&)> OnReachabilityChanged;
ScriptGlobal::Set("HostUp", HostUp);
ScriptGlobal::Set("HostDown", HostDown);
}
+
+double CheckResult::CalculateExecutionTime(void) const
+{
+ return GetExecutionEnd() - GetExecutionStart();
+}
+
+double CheckResult::CalculateLatency(void) const
+{
+ double latency = (GetScheduleEnd() - GetScheduleStart()) - CalculateExecutionTime();
+
+ if (latency < 0)
+ latency = 0;
+
+ return latency;
+}
public:
DECLARE_OBJECT(CheckResult);
+ double CalculateExecutionTime(void) const;
+ double CalculateLatency(void) const;
+
static void StaticInitialize(void);
};
CheckResult::Ptr cr = host->GetLastCheckResult();
+ if (!cr)
+ continue;
+
/* latency */
- double latency = Host::CalculateLatency(cr);
+ double latency = cr->CalculateLatency();
if (min_latency == -1 || latency < min_latency)
min_latency = latency;
count_latency++;
/* execution_time */
- double execution_time = Host::CalculateExecutionTime(cr);
+ double execution_time = cr->CalculateExecutionTime();
if (min_execution_time == -1 || execution_time < min_execution_time)
min_execution_time = execution_time;
CheckResult::Ptr cr = service->GetLastCheckResult();
+ if (!cr)
+ continue;
+
/* latency */
- double latency = Service::CalculateLatency(cr);
+ double latency = cr->CalculateLatency();
if (min_latency == -1 || latency < min_latency)
min_latency = latency;
count_latency++;
/* execution_time */
- double execution_time = Service::CalculateExecutionTime(cr);
+ double execution_time = cr->CalculateExecutionTime();
if (min_execution_time == -1 || execution_time < min_execution_time)
min_execution_time = execution_time;
if (cr) {
if (macro == "latency") {
- *result = Convert::ToString(Service::CalculateLatency(cr));
+ *result = Convert::ToString(cr->CalculateLatency());
return true;
} else if (macro == "execution_time") {
- *result = Convert::ToString(Service::CalculateExecutionTime(cr));
+ *result = Convert::ToString(cr->CalculateExecutionTime());
return true;
} else if (macro == "output") {
*result = cr->GetOutput();
if (cr) {
if (macro == "latency") {
- *result = Convert::ToString(Service::CalculateLatency(cr));
+ *result = Convert::ToString(cr->CalculateLatency());
return true;
} else if (macro == "execution_time") {
- *result = Convert::ToString(Service::CalculateExecutionTime(cr));
+ *result = Convert::ToString(cr->CalculateExecutionTime());
return true;
} else if (macro == "output") {
*result = cr->GetOutput();
if (!host)
return Empty;
- return (Service::CalculateLatency(host->GetLastCheckResult()));
+ CheckResult::Ptr cr = host->GetLastCheckResult();
+
+ if (!cr)
+ return Empty;
+
+ return cr->CalculateLatency();
}
Value HostsTable::ExecutionTimeAccessor(const Value& row)
if (!host)
return Empty;
- return (Service::CalculateExecutionTime(host->GetLastCheckResult()));
+ CheckResult::Ptr cr = host->GetLastCheckResult();
+
+ if (!cr)
+ return Empty;
+
+ return cr->CalculateExecutionTime();
}
Value HostsTable::PercentStateChangeAccessor(const Value& row)
if (!service)
return Empty;
- return (Service::CalculateLatency(service->GetLastCheckResult()));
+ CheckResult::Ptr cr = service->GetLastCheckResult();
+
+ if (!cr)
+ return Empty;
+
+ return cr->CalculateLatency();
}
Value ServicesTable::ExecutionTimeAccessor(const Value& row)
if (!service)
return Empty;
- return (Service::CalculateExecutionTime(service->GetLastCheckResult()));
+ CheckResult::Ptr cr = service->GetLastCheckResult();
+
+ if (!cr)
+ return Empty;
+
+ return cr->CalculateExecutionTime();
}
Value ServicesTable::PercentStateChangeAccessor(const Value& row)
fields->Set("_current_check_attempt", checkable->GetCheckAttempt());
fields->Set("_max_check_attempts", checkable->GetMaxCheckAttempts());
- fields->Set("_latency", Service::CalculateLatency(cr));
- fields->Set("_execution_time", Service::CalculateExecutionTime(cr));
+ fields->Set("_latency", cr->CalculateLatency());
+ fields->Set("_execution_time", cr->CalculateExecutionTime());
fields->Set("_reachable", checkable->IsReachable());
if (cr) {
SendMetric(prefix_metadata, "state_type", checkable->GetStateType(), ts);
SendMetric(prefix_metadata, "reachable", checkable->IsReachable(), ts);
SendMetric(prefix_metadata, "downtime_depth", checkable->GetDowntimeDepth(), ts);
- SendMetric(prefix_metadata, "latency", Service::CalculateLatency(cr), ts);
- SendMetric(prefix_metadata, "execution_time", Service::CalculateExecutionTime(cr), ts);
+ SendMetric(prefix_metadata, "latency", cr->CalculateLatency(), ts);
+ SendMetric(prefix_metadata, "execution_time", cr->CalculateExecutionTime(), ts);
}
SendPerfdata(prefix_perfdata, cr, ts);
SendMetric(prefix, "state_type", checkable->GetStateType(), ts);
SendMetric(prefix, "reachable", checkable->IsReachable(), ts);
SendMetric(prefix, "downtime_depth", checkable->GetDowntimeDepth(), ts);
- SendMetric(prefix, "latency", Service::CalculateLatency(cr), ts);
- SendMetric(prefix, "execution_time", Service::CalculateExecutionTime(cr), ts);
+ SendMetric(prefix, "latency", cr->CalculateLatency(), ts);
+ SendMetric(prefix, "execution_time", cr->CalculateExecutionTime(), ts);
SendPerfdata(prefix, cr, ts);
}
}
SendMetric(metric + ".current_attempt", tags, checkable->GetCheckAttempt(), ts);
SendMetric(metric + ".max_check_attempts", tags, checkable->GetMaxCheckAttempts(), ts);
- SendMetric(metric + ".latency", tags, Service::CalculateLatency(cr), ts);
- SendMetric(metric + ".execution_time", tags, Service::CalculateExecutionTime(cr), ts);
+ SendMetric(metric + ".latency", tags, cr->CalculateLatency(), ts);
+ SendMetric(metric + ".execution_time", tags, cr->CalculateExecutionTime(), ts);
}
void OpenTsdbWriter::SendPerfdata(const String& metric, const std::map<String, String>& tags, const CheckResult::Ptr& cr, double ts)