Implement support for overriding check command timeout

fixes #9283
This commit is contained in:
Michael Friedrich 2016-04-07 15:07:17 +02:00
parent d2f5008557
commit 2b2e250def
3 changed files with 9 additions and 1 deletions

View File

@ -563,6 +563,7 @@ Configuration Attributes:
check\_command |**Required.** The name of the check command. check\_command |**Required.** The name of the check command.
max\_check\_attempts|**Optional.** The number of times a host is re-checked before changing into a hard state. Defaults to 3. max\_check\_attempts|**Optional.** The number of times a host is re-checked before changing into a hard state. Defaults to 3.
check\_period |**Optional.** The name of a time period which determines when this host should be checked. Not set by default. check\_period |**Optional.** The name of a time period which determines when this host should be checked. Not set by default.
check\_timeout |**Optional.** Check command timeout in seconds. Overrides the CheckCommand's `timeout` attribute.
check\_interval |**Optional.** The check interval (in seconds). This interval is used for checks when the host is in a `HARD` state. Defaults to 5 minutes. check\_interval |**Optional.** The check interval (in seconds). This interval is used for checks when the host is in a `HARD` state. Defaults to 5 minutes.
retry\_interval |**Optional.** The retry interval (in seconds). This interval is used for checks when the host is in a `SOFT` state. Defaults to 1 minute. retry\_interval |**Optional.** The retry interval (in seconds). This interval is used for checks when the host is in a `SOFT` state. Defaults to 1 minute.
enable\_notifications|**Optional.** Whether notifications are enabled. Defaults to true. enable\_notifications|**Optional.** Whether notifications are enabled. Defaults to true.
@ -1158,6 +1159,7 @@ Configuration Attributes:
check\_command |**Required.** The name of the check command. check\_command |**Required.** The name of the check command.
max\_check\_attempts|**Optional.** The number of times a service is re-checked before changing into a hard state. Defaults to 3. max\_check\_attempts|**Optional.** The number of times a service is re-checked before changing into a hard state. Defaults to 3.
check\_period |**Optional.** The name of a time period which determines when this service should be checked. Not set by default. check\_period |**Optional.** The name of a time period which determines when this service should be checked. Not set by default.
check\_timeout |**Optional.** Check command timeout in seconds. Overrides the CheckCommand's `timeout` attribute.
check\_interval |**Optional.** The check interval (in seconds). This interval is used for checks when the service is in a `HARD` state. Defaults to 5 minutes. check\_interval |**Optional.** The check interval (in seconds). This interval is used for checks when the service is in a `HARD` state. Defaults to 5 minutes.
retry\_interval |**Optional.** The retry interval (in seconds). This interval is used for checks when the service is in a `SOFT` state. Defaults to 1 minute. retry\_interval |**Optional.** The retry interval (in seconds). This interval is used for checks when the service is in a `SOFT` state. Defaults to 1 minute.
enable\_notifications|**Optional.** Whether notifications are enabled. Defaults to true. enable\_notifications|**Optional.** Whether notifications are enabled. Defaults to true.

View File

@ -57,6 +57,7 @@ abstract class Checkable : CustomVarObject
return TimePeriod::GetByName(GetCheckPeriodRaw()); return TimePeriod::GetByName(GetCheckPeriodRaw());
}}} }}}
}; };
[config] Value check_timeout;
[config] double check_interval { [config] double check_interval {
default {{{ return 5 * 60; }}} default {{{ return 5 * 60; }}}
}; };

View File

@ -88,7 +88,12 @@ void PluginUtility::ExecuteCommand(const Command::Ptr& commandObj, const Checkab
return; return;
Process::Ptr process = new Process(Process::PrepareCommand(command), envMacros); Process::Ptr process = new Process(Process::PrepareCommand(command), envMacros);
process->SetTimeout(commandObj->GetTimeout());
if (checkable->GetCheckTimeout().IsEmpty())
process->SetTimeout(commandObj->GetTimeout());
else
process->SetTimeout(checkable->GetCheckTimeout());
process->Run(boost::bind(callback, command, _1)); process->Run(boost::bind(callback, command, _1));
} }