diff --git a/doc/3-monitoring-basics.md b/doc/3-monitoring-basics.md
index 18777d811..186e00e71 100644
--- a/doc/3-monitoring-basics.md
+++ b/doc/3-monitoring-basics.md
@@ -310,8 +310,8 @@ all available options. Our example defines warning (`-w`) and
critical (`-c`) thresholds for the disk usage. Without any
partition defined (`-p`) it will check all local partitions.
-Define the default check command custom attribute `wfree` and `cfree` freely
-definable naming schema) and their default threshold values. You can
+Define the default check command custom attribute `disk_wfree` and `disk_cfree`
+freely definable naming schema) and their default threshold values. You can
then use these custom attributes as runtime macros on the command line.
The default custom attributes can be overridden by the custom attributes
@@ -453,6 +453,49 @@ information in the check output (`-o`).
]
}
+### Command Arguments
+
+By defining a check command line using the `command` attribute Icinga 2
+will resolve all macros in the static string or array. Sometimes it is
+required to extend the arguments list based on a met condition evaluated
+at command execution. Or making arguments optional - only set if the
+macro value can be resolved by Icinga 2.
+
+ object CheckCommand "check_http" {
+ import "plugin-check-command"
+
+ command = PluginDir + "/check_http"
+
+ arguments = {
+ "-H" = "$http_vhost$"
+ "-I" = "$http_address$"
+ "-u" = "$http_uri$"
+ "-p" = "$http_port$"
+ "-S" = {
+ set_if = "$http_ssl$"
+ }
+ "-w" = "$http_warn_time$"
+ "-c" = "$http_critical_time$"
+ }
+
+ vars.http_address = "$address$"
+ vars.http_ssl = false
+ }
+
+The example shows the `check_http` check command defining the most common
+arguments. Each of them is optional by default and will be omitted if
+the value is not set. For example if the service calling the check command
+does not have `vars.http_port` set, it won't get added to the command
+line.
+If the `vars.http_ssl` custom attribute is set in the service, host or command
+object definition, Icinga 2 will add the `-S` argument based on the `set_if`
+option to the command line.
+That way you can use the `check_http` command definition for both, with and
+without SSL enabled checks saving you duplicated command definitions.
+
+Details on all available options can be found in the
+[CheckCommand object definition](#objecttype-checkcommand).
+
## Notifications
diff --git a/doc/5-configuring-icinga-2.md b/doc/5-configuring-icinga-2.md
index bbf0d4e26..2e933f7a1 100644
--- a/doc/5-configuring-icinga-2.md
+++ b/doc/5-configuring-icinga-2.md
@@ -989,20 +989,28 @@ defined here.
Example:
- object CheckCommand "check_snmp" {
+ object CheckCommand "check_http" {
import "plugin-check-command"
- command = [
- PluginDir + "/check_snmp",
- "-H", "$address$",
- "-C", "$community$",
- "-o", "$oid$"
- ]
+ command = PluginDir + "/check_http"
- vars.address = "127.0.0.1"
- vars.community = "public"
+ arguments = {
+ "-H" = "$http_vhost$"
+ "-I" = "$http_address$"
+ "-u" = "$http_uri$"
+ "-p" = "$http_port$"
+ "-S" = {
+ set_if = "$http_ssl$"
+ }
+ "-w" = "$http_warn_time$"
+ "-c" = "$http_critical_time$"
+ }
+
+ vars.http_address = "$address$"
+ vars.http_ssl = false
}
+
Attributes:
Name |Description
@@ -1012,6 +1020,41 @@ Attributes:
env |**Optional.** A dictionary of macros which should be exported as environment variables prior to executing the command.
vars |**Optional.** A dictionary containing custom attributes that are specific to this command.
timeout |**Optional.** The command timeout in seconds. Defaults to 5 minutes.
+ arguments |**Optional.** A dictionary of command arguments.
+
+
+Command arguments can be defined as key-value-pairs in the `arguments`
+dictionary. If the argument requires additional configuration for example
+a `description` attribute or an optional condition, the value can be defined
+as dictionary specifying additional options.
+
+Service:
+
+ vars.x_val = "My command argument value."
+ vars.have_x = "true"
+
+CheckCommand:
+
+ arguments = {
+ "-X" = {
+ value = "$x_val$"
+ description = "My plugin requires this argument for doing X."
+ required = false /* optional, no error if not set */
+ skip_key = false /* always use "-X " */
+ set_if = "$have_x$" /* only set if variable defined */
+ order = 0 /* first position */
+ }
+ }
+
+ Option | Description
+ ------------|--------------
+ value | Optional argument value.
+ description | Optional argument description.
+ required | Required argument. Execution error if not set. Defaults to false (optional).
+ skip_key | Use the value as argument and skip the key.
+ set_if | Argument added if value is set (macro resolves to a defined value).
+ order | Set if multiple arguments require a defined argument order.
+
### NotificationCommand
@@ -1051,6 +1094,9 @@ Attributes:
env |**Optional.** A dictionary of macros which should be exported as environment variables prior to executing the command.
vars |**Optional.** A dictionary containing custom attributes that are specific to this command.
timeout |**Optional.** The command timeout in seconds. Defaults to 5 minutes.
+ arguments |**Optional.** A dictionary of command arguments.
+
+Command arguments can be used the same way as for `CheckCommand` objects.
### EventCommand
@@ -1074,6 +1120,9 @@ Attributes:
env |**Optional.** A dictionary of macros which should be exported as environment variables prior to executing the command.
vars |**Optional.** A dictionary containing custom attributes that are specific to this command.
timeout |**Optional.** The command timeout in seconds. Defaults to 5 minutes.
+ arguments |**Optional.** A dictionary of command arguments.
+
+Command arguments can be used the same way as for `CheckCommand` objects.
### PerfdataWriter