Update documentation.

This commit is contained in:
Gunnar Beutner 2013-10-10 14:24:19 +02:00
parent cd067d5d2d
commit 6881b7085b
2 changed files with 73 additions and 116 deletions

View File

@ -13,8 +13,8 @@ the Icinga daemon at startup.
notifications_enabled=0 notifications_enabled=0
} }
Icinga 2 supports objects and (global) variables, but does not make a difference if it's Icinga 2 supports objects and (global) variables, but does not make a difference
the main configuration file, or any included file. if it's the main configuration file, or any included file.
set IcingaEnableNotifications = 1, set IcingaEnableNotifications = 1,
@ -24,9 +24,9 @@ the main configuration file, or any included file.
### Sample Configuration and ITL ### Sample Configuration and ITL
While Icinga 1.x ships sample configuration and templates spread in various object files While Icinga 1.x ships sample configuration and templates spread in various
Icinga 2 moves all templates into the Icinga Template Library (ITL) and includes that object files Icinga 2 moves all templates into the Icinga Template Library (ITL)
in the sample configuration. and includes that in the sample configuration.
The ITL will be updated on every releases and should not be edited by the user. The ITL will be updated on every releases and should not be edited by the user.
@ -101,8 +101,8 @@ hosts) like in Icinga 1.x but directly after their type definition.
## Templates ## Templates
In Icinga 1.x templates are identified using `register 0`. Icinga 2 uses the In Icinga 1.x templates are identified using the `register 0` setting. Icinga 2
`template` identifier. uses the `template` identifier:
template Service "ping4-template" { } template Service "ping4-template" { }
@ -147,8 +147,8 @@ terminated with a comma (,).
## Host Service Relation ## Host Service Relation
In Icinga 1.x a service object is associated with a host by defining the In Icinga 1.x a service object is associated with a host by defining the
`host_name` attribute in the service definition. Alternate object tricks refer to `host_name` attribute in the service definition. Alternate object tricks refer
`hostgroup_name` or behavior changing regular expression. It's not possible to `hostgroup_name` or behavior changing regular expression. It's not possible
to define a service definition within a host definition. to define a service definition within a host definition.
The preferred way of associating hosts with services in Icinga 2 are services The preferred way of associating hosts with services in Icinga 2 are services
@ -158,57 +158,14 @@ inline service definitions can reference service templates.
Linking a service to a host is still possible with the 'host' attribute in Linking a service to a host is still possible with the 'host' attribute in
a service object in Icinga 2. a service object in Icinga 2.
### Service Hostgroup to Hosts Trick
A common pattern in Icinga 1.x is to add services to hostgroups. When a host
is added as hostgroup member, it will automatically collect all services linked
to that hostgroup. Inheriting services from a parent hostgroup to a member
hostgroup does not work.
define hostgroup {
hostgroup_name testhg
}
define service {
service_description testservice
hostgroup_name testhg
}
define host {
host_name testhost
hostgroups testhg
}
Since it's possible to define services inline in a host template object and
inherit them to actual host objects in Icinga 2 the preferred method works
like: Create a host template (acting as "hostgroup" relation) and define all
services (either inline, or reference a service template). Then let all hosts
inherit from that host template, collecting all service relations.
template Host "testhg" {
services["testservice"] = {
...
}
}
object Host "testhost" inherits "testhg" {
...
}
Hostgroups in Icinga 2 are only used for grouping the views but must not
be used for host service relation building.
> **Note**
>
> It's also possible to modify attributes in the host's service array inherited
> from the host template. E.g. macros.
## Users ## Users
Contacts have been renamed to Users (same for groups). A user does not Contacts have been renamed to Users (same for groups). A user does not
only provide attributes and macros used for notifications, but is also only provide attributes and macros used for notifications, but is also
used for authorization checks. used for authorization checks.
In Icinga 2 notification commands are not directly associated with users. Instead In Icinga 2 notification commands are not directly associated with users.
the notification command is specified in `Notification` objects. Instead the notification command is specified using `Notification` objects.
The `StatusDataWriter`, `IdoMySqlConnection` and `LivestatusListener` types will The `StatusDataWriter`, `IdoMySqlConnection` and `LivestatusListener` types will
provide the contact and contactgroups attributes for services for compatibility provide the contact and contactgroups attributes for services for compatibility
@ -246,17 +203,16 @@ In Icinga 2
The global configuration setting `enable_environment_macros` does not exist in The global configuration setting `enable_environment_macros` does not exist in
Icinga 2. Icinga 2.
Macros exported into the environment must be set using the `export_macros` attribute Macros exported into the environment must be set using the `export_macros`
in command objects. attribute in command objects.
## Checks ## Checks
### Host Check ### Host Check
Unlike in Icinga 1.x hosts are not checkable objects in Icinga 2. Instead hosts Unlike in Icinga 1.x hosts are not checkable objects in Icinga 2. Instead hosts
inherit their state from the service that is specified using the `check` attribute. inherit their state from the service that is specified using the `check`
attribute.
### Check Output ### Check Output
@ -278,7 +234,7 @@ where the initial state checks must have happened. Icinga 2 will use the
### Performance Data ### Performance Data
There is no host performance data generated in Icinga 2 because there are no There is no host performance data generated in Icinga 2 because there are no
real host checks anymore. Therefore the PerfDataWriter will only write service real host checks. Therefore the PerfDataWriter will only write service
performance data files. performance data files.
## Commands ## Commands
@ -294,27 +250,33 @@ In Icinga 2 these command types are separated and will generate an error on
configuration validation if used in the wrong context. configuration validation if used in the wrong context.
While Icinga 2 still supports the complete command line in command objects, it's While Icinga 2 still supports the complete command line in command objects, it's
also possible to encapsulate all arguments into double quotes and passing them as also possible to encapsulate all arguments into double quotes and passing them
array to the `command_line` attribute i.e. for better readability. as array to the `command_line` attribute i.e. for better readability.
It's also possible to define default (argument) macros for the command itself which
can be overridden by a service (argument) macro.
It's also possible to define default macros for the command itself which can be
overridden by a service macro.
## Groups ## Groups
### Group Membership In Icinga 2 hosts, services and users are added to groups using the `groups`
attribute in the object. The old way of listing all group members in the group's
`members` attribute is not supported.
Assigning members to hostgroups, servicegroups, usergroups is done only at the The preferred way of assigning objects to groups is by using a template:
host/service/user object using the 'groups' attribute. The old method defining
that directly as group attribute is not supported. Better use templates inheriting
the 'groups' attribute to all your objects.
### Hostgroup with Services template Host "dev-host" {
groups += [ "dev-hosts" ],
Hostgroups are used for grouping only, and cannot be used for object tricks like in services["http"] = {
Icinga 1.x. check_command = [ "http-ip" ]
}
}
object Host "web-dev" inherits "dev-host" { }
Host groups in Icinga 2 cannot be used to associate services with all members
of that group. The example above shows how to use templates to accomplish
the same effect.
## Notifications ## Notifications
@ -328,9 +290,12 @@ notification configuration problem in Icinga 1.x:
The only way achieving a semi-clean solution is to The only way achieving a semi-clean solution is to
* Create contact X-sms, set service_notification_command for sms, assign contact to service A * Create contact X-sms, set service_notification_command for sms, assign contact
* Create contact X-mail, set service_notification_command for mail, assign contact to service B to service A
* Create contact Y, set service_notification_command for sms and mail, assign contact to service C * Create contact X-mail, set service_notification_command for mail, assign
contact to service B
* Create contact Y, set service_notification_command for sms and mail, assign
contact to service C
* Create contact X without notification commands, assign to service A and B * Create contact X without notification commands, assign to service A and B
Basically you are required to create duplicated contacts for either each Basically you are required to create duplicated contacts for either each
@ -340,10 +305,14 @@ Icinga 2 attempts to solve that problem in this way
* Create user X, set SMS and Mail attributes, used for authorization * Create user X, set SMS and Mail attributes, used for authorization
* Create user Y, set SMS and Mail attributes, used for authorization * Create user Y, set SMS and Mail attributes, used for authorization
* Create notification A-SMS, set notification_command for sms, add user X, assign notification A-SMS to service A * Create notification A-SMS, set notification_command for sms, add user X,
* Create notification B-Mail, set notification_command for mail, add user X, assign notification Mail to service B assign notification A-SMS to service A
* Create notification C-SMS, set notification_command for sms, add user Y, assign notification C-SMS to service C * Create notification B-Mail, set notification_command for mail, add user X,
* Create notification C-Mail, set notification_command for mail, add user Y, assign notification C-Mail to service C assign notification Mail to service B
* Create notification C-SMS, set notification_command for sms, add user Y,
assign notification C-SMS to service C
* Create notification C-Mail, set notification_command for mail, add user Y,
assign notification C-Mail to service C
> **Note** > **Note**
> >
@ -359,7 +328,6 @@ In Icinga 2 it will look like this:
Service -> Notification -> NotificationCommand Service -> Notification -> NotificationCommand
-> User, UserGroup -> User, UserGroup
### Escalations ### Escalations
Escalations in Icinga 1.x require a separated object matching on existing Escalations in Icinga 1.x require a separated object matching on existing
@ -406,8 +374,7 @@ and flapping type (start, end, ...).
> **Note** > **Note**
> >
> Notification state and type filters are only valid configuration attributes for > Notification state and type filters are only valid configuration attributes for
> Notification and User objects. > `Notification` and `User` objects.
## Dependencies and Parents ## Dependencies and Parents
@ -423,35 +390,36 @@ service object or template. A service can now depend on a host, and vice versa.
service has an implicit dependeny (parent) to its host. A host to host dependency acts service has an implicit dependeny (parent) to its host. A host to host dependency acts
implicit as host parent relation. implicit as host parent relation.
StatusDataWriter, IdoMysqlConnection and LivestatusListener support the Icinga 1.x The `StatusDataWriter`, `IdoMysqlConnection` and `LivestatusListener` types
schema with dependencies and parent attributes for compatibility reasons. support the Icinga 1.x schema with dependencies and parent attributes for
compatibility reasons.
## Flapping ## Flapping
The Icinga 1.x flapping detection uses the last 21 states of a service. This The Icinga 1.x flapping detection uses the last 21 states of a service. This
value is hardcoded and cannot be changed. The algorithm on determining a flapping state value is hardcoded and cannot be changed. The algorithm on determining a flapping state
is is as follows:
flap threshold = (number of actual state changes / number of possible state changes) * 100% flapping value = (number of actual state changes / number of possible state changes)
comparing that to low and high flapping thresholds. The flapping value is then compared to the low and high flapping thresholds.
The algorithm uses in Icinga 2 does not store the past states but calculcates the flapping The algorithm used in Icinga 2 does not store the past states but calculcates the flapping
threshold from a single value based on counters and half-life values. Icinga 2 compares threshold from a single value based on counters and half-life values. Icinga 2 compares
the value with a single flapping threshold configuration attribute. the value with a single flapping threshold configuration attribute.
## State Retention ## State Retention
Icinga 1.x uses retention.dat to save historical and modified-at-runtime data over restarts. Icinga 1.x uses the `retention.dat` file to save its state in order to be able
Icinga 2 uses its own icinga2.state file with a json-like serialized format. to reload it after a restart. In Icinga 2 this file is called `icinga2.state`.
The format objects are stored in is not compatible with Icinga 1.x.
## Logging ## Logging
Icinga 1.x supports syslog facilities and writes to its own icinga.log and archives. These logs Icinga 1.x supports syslog facilities and writes its own `icinga.log` log file
are used in Icinga 1.x Classic UI to generate historical reports. and archives. These logs are used in Icinga 1.x Classic UI to generate
historical reports.
Icinga 2 compat library provides the CompatLogger object which writes the icinga.log and archive Icinga 2 compat library provides the CompatLogger object which writes the icinga.log and archive
in Icinga 1.x format in order to stay compatible with Classic UI and other addons. in Icinga 1.x format in order to stay compatible with Classic UI and other addons.
@ -461,26 +429,15 @@ FileLogger, StreamLogger. Each of them got their own severity and target configu
## Broker Modules and Features ## Broker Modules and Features
Icinga 1.x broker modules are binary incompatible with the Icinga 2 component loader. Icinga 1.x broker modules are incompatible with Icinga 2.
Therefore the module configuration cannot be copied 1:1
Icinga 1.x IDOUtils was implemented from scratch as Icinga 2 feature which can be loaded In order to provide compatibility with Icinga 1.x the functionality of several
and enabled on-demand. The Icinga 1.x Livestatus addon is implemented as Icinga 2 popular broker modules was implemented for Icinga 2:
LivestatusListener. Icinga 1.x broker modules used for check distributions are replaced
by the Icinga 2 cluster and distributed capabilities using the same protocol and security
mechanisms as the Icinga 2 instance itself.
Each feature can be created multiple times, i.e. having 3 IDO Mysql databases, 5 Performance * IDOUtils
Data Writers and 2 Livestatus Listeners (one listening on tcp, and one on unix sockets). * Livestatus
* Cluster (allows for high availability and load balancing)
### IDOUtils Database Backend In Icinga 1.x broker modules may only be loaded once which means it is not easily possible
to have one Icinga instance write to multiple IDO databases. Due to the way
Icinga 2 uses Ido<DBType>Connection configuration objects re-using some options known from objects work in Icinga 2 it is possible to set up multiple IDO database instances.
Icinga 1.x IDOUtils such as the database credentials, instance_name or the cleanup attributes
for max age of table entries.
### Enable Features
Icinga 2 features require a library to be loaded, and object configuration. In order to simplify
the process of enabling/disabling these features Icinga 2 ships with two scripts inspired by
Apache: `i2enfeature` and `i2disfeature`.

View File

@ -62,7 +62,7 @@ start() {
exit 1 exit 1
fi fi
printf "Starting Icinga 2: " echo "Starting Icinga 2: "
ulimit -n 8192 ulimit -n 8192
$DAEMON -c $ICINGA2_CONFIG_FILE -d -e $ICINGA2_ERROR_LOG -u $ICINGA2_USER -g $ICINGA2_GROUP $DAEMON -c $ICINGA2_CONFIG_FILE -d -e $ICINGA2_ERROR_LOG -u $ICINGA2_USER -g $ICINGA2_GROUP