diff --git a/doc/1-about.md b/doc/1-about.md
index 4d0cbbe0a..d9c269887 100644
--- a/doc/1-about.md
+++ b/doc/1-about.md
@@ -101,7 +101,7 @@ Sample configuration for common plugins is shipped with Icinga 2 as part of the
* Revamped Commands
-One command to rule them all - supporting optional and conditional [command arguments](#commands-arguments).
+One command to rule them all - supporting optional and conditional [command arguments](#command-arguments).
[Environment variables](#command-environment-variables) exported on-demand populated with
runtime evaluated macros.
Three types of commands used for different actions: checks, notifications and events.
diff --git a/doc/3-monitoring-basics.md b/doc/3-monitoring-basics.md
index 55af3168b..5106f318b 100644
--- a/doc/3-monitoring-basics.md
+++ b/doc/3-monitoring-basics.md
@@ -654,26 +654,30 @@ which can be accessed as runtime macros by the executed check command.
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.
+then use these custom attributes as runtime macros for [command arguments](#command-arguments)
+on the command line.
The default custom attributes can be overridden by the custom attributes
-defined in the service using the check command `disk`. The custom attributes
+defined in the service using the check command `my-disk`. The custom attributes
can also be inherited from a parent template using additive inheritance (`+=`).
- object CheckCommand "disk" {
+
+ object CheckCommand "my-disk" {
import "plugin-check-command"
-
- command = [
- PluginDir + "/check_disk",
- "-w", "$disk_wfree$%",
- "-c", "$disk_cfree$%"
- ],
-
+
+ command = PluginDir + "/check_disk"
+
+ arguments = {
+ "-w" = "$disk_wfree$%"
+ "-c" = "$disk_cfree$%"
+ }
+
vars.disk_wfree = 20
vars.disk_cfree = 10
}
-The host `localhost` with the service `disk` checks all disks with modified
+
+The host `localhost` with the service `my-disk` checks all disks with modified
custom attributes (warning thresholds at `10%`, critical thresholds at `5%`
free disk space).
@@ -684,17 +688,17 @@ free disk space).
address6 = "::1"
}
- object Service "disk" {
+ object Service "my-disk" {
import "generic-service"
host_name = "localhost"
- check_command = "disk"
+ check_command = "my-disk"
vars.disk_wfree = 10
vars.disk_cfree = 5
}
-#### Command Arguments
+#### 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
@@ -767,20 +771,20 @@ All hosts in the `my-linux-servers` hostgroup should get the `my-ssh` service ap
the service is applied to. If not set, the check command `my-ssh` will omit the argument.
object CheckCommand "my-ssh" {
- import "plugin-check-command"
+ import "plugin-check-command"
- command = PluginDir + "/check_ssh"
+ command = PluginDir + "/check_ssh"
- arguments = {
- "-p" = "$ssh_port$"
- "host" = {
- value = "$ssh_address$"
- skip_key = true
- order = -1
- }
- }
+ arguments = {
+ "-p" = "$ssh_port$"
+ "host" = {
+ value = "$ssh_address$"
+ skip_key = true
+ order = -1
+ }
+ }
- vars.ssh_address = "$address$"
+ vars.ssh_address = "$address$"
}
/* apply ssh service */
@@ -796,11 +800,11 @@ the service is applied to. If not set, the check command `my-ssh` will omit the
The `my-host1` will get the `my-ssh` service checking on the default port:
- [2014-05-26 21:52:23 +0200] notice/base: Running command '/usr/lib/nagios/plugins/check_ssh', '129.168.1.50': PID 27281
+ [2014-05-26 21:52:23 +0200] notice/Process: Running command '/usr/lib/nagios/plugins/check_ssh', '129.168.1.50': PID 27281
The `my-host2` will inherit the `custom_ssh_port` variable to the service and execute a different command:
- [2014-05-26 21:51:32 +0200] notice/base: Running command '/usr/lib/nagios/plugins/check_ssh', '-p', '2222', '129.168.2.50': PID 26956
+ [2014-05-26 21:51:32 +0200] notice/Process: Running command '/usr/lib/nagios/plugins/check_ssh', '-p', '2222', '129.168.2.50': PID 26956
### Notification Commands
@@ -868,6 +872,11 @@ as environment variables and can be used in the notification script:
)
/usr/bin/printf "%b" $template | mail -s "$NOTIFICATIONTYPE - $HOSTDISPLAYNAME - $SERVICEDISPLAYNAME is $SERVICESTATE" $USEREMAIL
+
+> **Note**
+>
+> This example is for `exim` only. Requires changes for `sendmail` and
+> other MTAs.
While it's possible to specify the entire notification command right
in the NotificationCommand object it is generally advisable to create a
@@ -1157,20 +1166,23 @@ runtime when executing a command. These custom attributes cannot be used elsewhe
(e.g. in other configuration attributes).
Here is an example of a command definition which uses user-defined custom attributes:
-
+
object CheckCommand "my-ping" {
import "plugin-check-command"
command = [
- PluginDir + "/check_ping",
- "-4",
- "-H", "$address$",
- "-w", "$ping_wrta$,$ping_wpl$%",
- "-c", "$ping_crta$,$ping_cpl$%",
- "-p", "$ping_packets$",
- "-t", "$ping_timeout$"
+ PluginDir + "/check_ping", "-4"
]
+ arguments = {
+ "-H" = "$ping_address$"
+ "-w" = "$ping_wrta$,$ping_wpl$%"
+ "-c" = "$ping_crta$,$ping_cpl$%"
+ "-p" = "$ping_packets$"
+ "-t" = "$ping_timeout$"
+ }
+
+ vars.ping_address = "$address$"
vars.ping_wrta = 100
vars.ping_wpl = 5
vars.ping_crta = 200
@@ -1181,7 +1193,9 @@ Here is an example of a command definition which uses user-defined custom attrib
Custom attribute names used at runtime must be enclosed in two `$` signs, e.g.
`$address$`. When using the `$` sign as single character, you need to escape
-it with an additional dollar sign (`$$`).
+it with an additional dollar sign (`$$`). This example also makes use of the
+[command arguments](#command-arguments) passed to the command line. `-4` must
+be added as additional array key.
### Runtime Custom Attributes Evaluation Order
@@ -1226,14 +1240,23 @@ This is useful for example for hiding sensitive information on the command line
when passing credentials to database checks:
object CheckCommand "mysql-health" {
- import "plugin-check-command",
+ import "plugin-check-command"
- command = PluginDir + "/check_mysql -H $address$ -d $db$",
+ command = [
+ PluginDir + "/check_mysql"
+ ]
+
+ arguments = {
+ "-H" = "$mysql_address$"
+ "-d" = "$mysql_database$"
+ }
- vars.mysql_user = "icinga_check",
+ vars.mysql_address = "$address$"
+ vars.mysql_database = "icinga"
+ vars.mysql_user = "icinga_check"
vars.mysql_pass = "password"
- env.MYSQLUSER = "$mysql_user$",
+ env.MYSQLUSER = "$mysql_user$"
env.MYSQLPASS = "$mysql_pass$"
}
diff --git a/doc/4-monitoring-remote-systems.md b/doc/4-monitoring-remote-systems.md
index a0e977493..376000053 100644
--- a/doc/4-monitoring-remote-systems.md
+++ b/doc/4-monitoring-remote-systems.md
@@ -68,25 +68,18 @@ remote client.
The NRPE daemon uses its own configuration format in nrpe.cfg while `check_nrpe`
can be embedded into the Icinga 2 `CheckCommand` configuration syntax.
+You can use the `check_nrpe` plugin from the NRPE project to query the NRPE daemon.
+Icinga 2 provides the [nrpe check command](#plugin-check-command-nrpe) for this:
+
Example:
- object CheckCommand "check_nrpe" {
- import "plugin-check-command"
-
- command = [
- PluginDir + "/check_nrpe",
- "-H", "$address$",
- "-c", "$remote_nrpe_command$",
- ]
- }
-
object Service "users" {
import "generic-service"
host_name = "remote-nrpe-host"
- check_command = "check_nrpe"
- vars.remote_nrpe_command = "check_users"
+ check_command = "nrpe"
+ vars.nrpe_command = "check_users"
}
nrpe.cfg:
diff --git a/doc/8-migration.md b/doc/8-migration.md
index f438a8fe9..05e60f421 100644
--- a/doc/8-migration.md
+++ b/doc/8-migration.md
@@ -714,6 +714,19 @@ host and let the dependency ignore that on that instead of the hardcoded host na
to the Icinga 1.x example and a best practice hint only.
+#### Manual Config Migration Hints for Distributed Setups
+
+* Icinga 2 does not use active/passive instances calling OSCP commands and requiring the NSCA
+daemon for passing check results between instances.
+* Icinga 2 does not support any 1.x NEB addons for check load distribution
+
+* If your current setup consists of instances distributing the check load, you should consider
+building a [load distribution](#cluster-scenarios-load-distribution) setup with Icinga 2.
+* If your current setup includes active/passive clustering with external tools like Pacemaker/DRBD
+consider the [High Availability](#cluster-scenarios-high-availability) setup.
+* If you have build your own custom configuration deployment and check result collecting mechanism
+you should re-design your setup and re-evaluate your requirements, and how they may be fulfilled
+using the Icinga 2 cluster capabilities.
## Differences between Icinga 1.x and 2
@@ -976,8 +989,15 @@ With the freely definable custom attributes in Icinga 2 it looks like this:
vars.crta = 500
vars.cpl = 60
}
+
+> **Note**
+>
+> For better maintainability you should consider using [command arguments](#command-arguments)
+> for your check commands.
-The Classic UI feature named `Command Expander` does not work with Icinga 2.
+> **Note**
+>
+> The Classic UI feature named `Command Expander` does not work with Icinga 2.
#### Environment Macros