mirror of
https://github.com/Icinga/icinga2.git
synced 2025-04-08 17:05:25 +02:00
parent
d59054feee
commit
7c4fa22715
@ -71,7 +71,7 @@ void CheckResultReader::ReadTimerHandler(void) const
|
||||
{
|
||||
CONTEXT("Processing check result files in '" + GetSpoolDir() + "'");
|
||||
|
||||
Utility::Glob(GetSpoolDir() + "/c??????.ok", boost::bind(&CheckResultReader::ProcessCheckResultFile, this, _1));
|
||||
Utility::Glob(GetSpoolDir() + "/c??????.ok", boost::bind(&CheckResultReader::ProcessCheckResultFile, this, _1), GlobFile);
|
||||
}
|
||||
|
||||
void CheckResultReader::ProcessCheckResultFile(const String& path) const
|
||||
@ -117,6 +117,8 @@ void CheckResultReader::ProcessCheckResultFile(const String& path) const
|
||||
<< boost::errinfo_errno(errno)
|
||||
<< boost::errinfo_file_name(crfile));
|
||||
|
||||
Checkable::Ptr checkable;
|
||||
|
||||
Host::Ptr host = Host::GetByName(attrs["host_name"]);
|
||||
|
||||
if (!host) {
|
||||
@ -126,15 +128,20 @@ void CheckResultReader::ProcessCheckResultFile(const String& path) const
|
||||
return;
|
||||
}
|
||||
|
||||
Service::Ptr service = host->GetServiceByShortName(attrs["service_description"]);
|
||||
if (attrs.find("service_description") != attrs.end()) {
|
||||
Service::Ptr service = host->GetServiceByShortName(attrs["service_description"]);
|
||||
|
||||
if (!service) {
|
||||
Log(LogWarning, "CheckResultReader")
|
||||
<< "Ignoring checkresult file for host '" << attrs["host_name"]
|
||||
<< "', service '" << attrs["service_description"] << "': Service does not exist.";
|
||||
if (!service) {
|
||||
Log(LogWarning, "CheckResultReader")
|
||||
<< "Ignoring checkresult file for host '" << attrs["host_name"]
|
||||
<< "', service '" << attrs["service_description"] << "': Service does not exist.";
|
||||
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
checkable = service;
|
||||
} else
|
||||
checkable = host;
|
||||
|
||||
CheckResult::Ptr result = new CheckResult();
|
||||
String output = CompatUtility::UnEscapeString(attrs["output"]);
|
||||
@ -145,18 +152,13 @@ void CheckResultReader::ProcessCheckResultFile(const String& path) const
|
||||
result->SetExecutionStart(Convert::ToDouble(attrs["start_time"]));
|
||||
result->SetExecutionEnd(Convert::ToDouble(attrs["finish_time"]));
|
||||
|
||||
service->ProcessCheckResult(result);
|
||||
checkable->ProcessCheckResult(result);
|
||||
|
||||
Log(LogDebug, "CheckResultReader")
|
||||
<< "Processed checkresult file for host '" << attrs["host_name"]
|
||||
<< "', service '" << attrs["service_description"] << "'";
|
||||
<< "Processed checkresult file for object '" << checkable->GetName() << "'";
|
||||
|
||||
{
|
||||
ObjectLock olock(service);
|
||||
|
||||
/* Reschedule the next check. The side effect of this is that for as long
|
||||
* as we receive check result files for a service we won't execute any
|
||||
* active checks. */
|
||||
service->SetNextCheck(Utility::GetTime() + service->GetCheckInterval());
|
||||
}
|
||||
/* Reschedule the next check. The side effect of this is that for as long
|
||||
* as we receive check result files for a host/service we won't execute any
|
||||
* active checks. */
|
||||
checkable->SetNextCheck(Utility::GetTime() + checkable->GetCheckInterval());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user