Documentation: Fix Getting Started based on revamped example configuration.

Refs #6266
This commit is contained in:
Michael Friedrich 2014-05-22 22:47:32 +02:00
parent 0eec68aec4
commit 4df2721d4e
2 changed files with 118 additions and 25 deletions

View File

@ -163,40 +163,76 @@ The `conf.d/localhost.conf` file contains our first host definition:
* in the conf.d directory (e.g. one per host). By default all *.conf * in the conf.d directory (e.g. one per host). By default all *.conf
* files in this directory are included. * files in this directory are included.
*/ */
object Host "localhost" { object Host "localhost" {
import "linux-server" import "generic-host"
address = "127.0.0.1" address = "127.0.0.1"
address6 = "::1" address6 = "::1"
vars.os = "Linux"
vars.sla = "24x7"
} }
This defines the host `localhost`. The `import` keyword is used to import This defines the host `localhost`. The `import` keyword is used to import
the `linux-server` template which takes care of setting up the host check the `linux-server` template which takes care of setting up the host check
as well as adding the host to the `linux-servers` host group. command.
The `vars` attribute can be used to define custom attributes which are available The `vars` attribute can be used to define custom attributes which are available
for check and notification commands. Most of the templates in the Icinga for check and notification commands. Most of the templates in the Icinga
Template Library require an `address` custom attribute. Template Library require an `address` attribute.
object Service "icinga" { The custom attribute `os` is evaluated by the `linux-servers` group in
`groups.conf `making the host `localhost` a member.
object HostGroup "linux-servers" {
display_name = "Linux Servers"
assign where host.vars.os == "Linux"
}
A host notification apply rule in `notifications.conf` checks for the custom
attribute `sla` being set to `24x7` automatically applying a host notification.
/**
* The example notification apply rules.
*
* Only applied if host/service objects have
* the custom attribute `sla` set to `24x7`.
*/
apply Notification "mail-icingaadmin" to Host {
import "mail-host-notification"
user_groups = [ "icingaadmins" ]
assign where host.vars.sla == "24x7"
}
Now it's time to define services for the host object. Because these checks
are only available for the `localhost` host, they are organized below
`hosts/localhost/`.
> **Tip**
>
> The directory tree and file organisation is just an example. You are
> free to define your own strategy. Just keep in mind to include the
> main directories in the [icinga2.conf](#icinga2-conf) file.
object Service "disk" {
import "generic-service" import "generic-service"
host_name = "localhost" host_name = "localhost"
check_command = "icinga" check_command = "disk"
vars.sla = "24x7"
} }
object Service "http" { object Service "http" {
import "generic-service" import "generic-service"
host_name = "localhost" host_name = "localhost"
check_command = "http_ip" check_command = "http"
} vars.sla = "24x7"
object Service "ssh" {
import "generic-service"
host_name = "localhost"
check_command = "ssh"
} }
object Service "load" { object Service "load" {
@ -204,20 +240,31 @@ Template Library require an `address` custom attribute.
host_name = "localhost" host_name = "localhost"
check_command = "load" check_command = "load"
vars.sla = "24x7"
} }
object ScheduledDowntime "backup-downtime" { object Service "procs" {
import "backup-downtime"
host_name = "localhost"
service_name = "load"
}
object Service "processes" {
import "generic-service" import "generic-service"
host_name = "localhost" host_name = "localhost"
check_command = "processes" check_command = "procs"
vars.sla = "24x7"
}
object Service "ssh" {
import "generic-service"
host_name = "localhost"
check_command = "ssh"
vars.sla = "24x7"
}
object Service "swap" {
import "generic-service"
host_name = "localhost"
check_command = "swap"
vars.sla = "24x7"
} }
object Service "users" { object Service "users" {
@ -225,13 +272,15 @@ Template Library require an `address` custom attribute.
host_name = "localhost" host_name = "localhost"
check_command = "users" check_command = "users"
vars.sla = "24x7"
} }
object Service "disk" { object Service "icinga" {
import "generic-service" import "generic-service"
host_name = "localhost" host_name = "localhost"
check_command = "disk" check_command = "icinga"
vars.sla = "24x7"
} }
The command object `icinga` for the embedded health check is provided by the The command object `icinga` for the embedded health check is provided by the
@ -239,12 +288,57 @@ The command object `icinga` for the embedded health check is provided by the
`users` and `disk` are all provided by the plugin check commands which we enabled `users` and `disk` are all provided by the plugin check commands which we enabled
earlier by including the `itl` and `plugins` configuration file. earlier by including the `itl` and `plugins` configuration file.
The Debian packages also ship an additional `apt` service check.
> **Best Practice** > **Best Practice**
> >
> Instead of defining each service object and assigning it to a host object > Instead of defining each service object and assigning it to a host object
> using the `host_name` attribute rather use the [apply rules](#apply) > using the `host_name` attribute rather use the [apply rules](#apply)
> simplifying your configuration. > simplifying your configuration.
There are two generic services applied to all hosts in the host group `linux-servers`
and `windows-servers` by default: `ping4` and `ping6`. Host objects without
a valid `address` resp. `address6` attribute will be excluded.
apply Service "ping4" {
import "generic-service"
check_command = "ping4"
vars.sla = "24x7"
assign where "linux-server" in host.groups
assign where "windows-server" in host.groups
ignore where host.address == ""
}
apply Service "ping6" {
import "generic-service"
check_command = "ping6"
vars.sla = "24x7"
assign where "linux-server" in host.groups
assign where "windows-server" in host.groups
ignore where host.address6 == ""
}
Each of these services has the custom attribute `sla` set to `24x7`. The
notification apply rule in `notifications.conf` will automatically apply
a service notification matchting this attribute pattern.
apply Notification "mail-icingaadmin" to Service {
import "mail-service-notification"
user_groups = [ "icingaadmins" ]
assign where service.vars.sla == "24x7"
}
Don't forget to install the [check plugins](#setting-up-check-plugins) required by the services and
their check commands.
Further details on the monitoring configuration can be found in the
[monitoring basics](#monitoring-basics) chapter.
## <a id="setting-up-check-plugins"></a> Setting up Check Plugins ## <a id="setting-up-check-plugins"></a> Setting up Check Plugins

View File

@ -5,4 +5,3 @@ object Service "procs" {
check_command = "procs" check_command = "procs"
vars.sla = "24x7" vars.sla = "24x7"
} }