diff --git a/doc/6-object-types.md b/doc/6-object-types.md index 1f1a041fa..28c588a8f 100644 --- a/doc/6-object-types.md +++ b/doc/6-object-types.md @@ -562,6 +562,7 @@ Configuration Attributes: 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. 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. 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. @@ -1182,6 +1183,7 @@ Configuration Attributes: 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. 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. 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. diff --git a/lib/icinga/checkable.ti b/lib/icinga/checkable.ti index d94aeb5f7..f3621e8f7 100644 --- a/lib/icinga/checkable.ti +++ b/lib/icinga/checkable.ti @@ -57,6 +57,7 @@ abstract class Checkable : CustomVarObject return TimePeriod::GetByName(GetCheckPeriodRaw()); }}} }; + [config] Value check_timeout; [config] double check_interval { default {{{ return 5 * 60; }}} }; diff --git a/lib/icinga/pluginutility.cpp b/lib/icinga/pluginutility.cpp index 803b9e7a0..bdc4a74bb 100644 --- a/lib/icinga/pluginutility.cpp +++ b/lib/icinga/pluginutility.cpp @@ -88,7 +88,12 @@ void PluginUtility::ExecuteCommand(const Command::Ptr& commandObj, const Checkab return; 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)); }