mirror of https://github.com/Icinga/icinga2.git
222 lines
7.6 KiB
Markdown
222 lines
7.6 KiB
Markdown
## <a id="setting-up-icinga2"></a> Setting up Icinga 2
|
|
|
|
First of all you will have to install Icinga 2. The preferred way of doing this
|
|
is to use the official Debian or RPM package repositories depending on which
|
|
operating system and distribution you are running.
|
|
|
|
Distribution | Repository URL
|
|
------------------------|---------------------------
|
|
Debian | http://packages.icinga.org/debian/
|
|
Ubuntu | http://packages.icinga.org/ubuntu/
|
|
RHEL/CentOS | http://packages.icinga.org/epel/
|
|
OpenSUSE | http://packages.icinga.org/openSUSE/
|
|
SLES | http://packages.icinga.org/SUSE/
|
|
|
|
Packages for distributions other than the ones listed above may also be
|
|
available. Please check http://packages.icinga.org/ to see if packages
|
|
are available for your favourite distribution.
|
|
|
|
> **Note**
|
|
>
|
|
> The packages for RHEL/CentOS 5 depend on other packages which are distributed
|
|
> as part of the [EPEL repository](http://fedoraproject.org/wiki/EPEL). Please
|
|
> make sure to enable this repository.
|
|
|
|
You can install Icinga 2 by using your distribution's package manager
|
|
to install the `icinga2` package.
|
|
|
|
> **Note**
|
|
>
|
|
> On RHEL/CentOS and SLES you will need to use `chkconfig` to enable the
|
|
> `icinga2` service. You can manually start Icinga 2 using `/etc/init.d/icinga2 start`.
|
|
|
|
Some parts of Icinga 2's functionality are available as separate packages:
|
|
|
|
Name | Description
|
|
------------------------|--------------------------------
|
|
icinga2-ido-mysql | IDO provider module for MySQL
|
|
icinga2-ido-pgsql | IDO provider module for PostgreSQL
|
|
|
|
In case you're running a distribution for which Icinga 2 packages are
|
|
not yet available you will have to use the release tarball which you
|
|
can download from the [Icinga website](https://www.icinga.org/). The
|
|
release tarballs contain an `INSTALL` file with further instructions.
|
|
|
|
### <a id="installation-paths"></a> Installation Paths
|
|
|
|
By default Icinga 2 uses the following files and directories:
|
|
|
|
Path | Description
|
|
------------------------------------|------------------------------------
|
|
/etc/icinga2 | Contains Icinga 2 configuration files.
|
|
/etc/init.d/icinga2 | The Icinga 2 init script.
|
|
/usr/bin/icinga2-* | Migration and certificate build scripts.
|
|
/usr/sbin/icinga2* | The Icinga 2 binary and feature enable/disable scripts.
|
|
/usr/share/doc/icinga2 | Documentation files that come with Icinga 2.
|
|
/usr/share/icinga2/itl | The Icinga Template Library.
|
|
/var/run/icinga2 | PID file.
|
|
/var/run/icinga2/cmd | Command pipe and Livestatus socket.
|
|
/var/cache/icinga2 | status.dat/objects.cache.
|
|
/var/spool/icinga2 | Used for performance data spool files.
|
|
/var/lib/icinga2 | Icinga 2 state file, cluster feature replay log and configuration files.
|
|
/var/log/icinga2 | Log file location and compat/ directory for the CompatLogger feature.
|
|
|
|
### <a id="icinga2-conf"></a> icinga2.conf
|
|
|
|
An example configuration file is installed for you in `/etc/icinga2/icinga2.conf`.
|
|
|
|
Here's a brief description of the example configuration:
|
|
|
|
/**
|
|
* Icinga 2 configuration file
|
|
* - this is where you define settings for the Icinga application including
|
|
* which hosts/services to check.
|
|
*
|
|
* For an overview of all available configuration options please refer
|
|
* to the documentation that is distributed as part of Icinga 2.
|
|
*/
|
|
|
|
Icinga 2 supports [C/C++-style comments](#comments).
|
|
|
|
/**
|
|
* The constants.conf defines global constants.
|
|
*/
|
|
include "constants.conf"
|
|
|
|
The `include` directive can be used to include other files.
|
|
|
|
/**
|
|
* The Icinga Template Library (ITL) provides a number of useful templates
|
|
* and command definitions.
|
|
*/
|
|
include <itl/itl.conf>
|
|
|
|
/**
|
|
* The features-available directory contains a number of configuration
|
|
* files for features which can be enabled and disabled using the
|
|
* icinga2-enable-feature / icinga2-disable-feature tools. These two tools work by creating
|
|
* and removing symbolic links in the features-enabled directory.
|
|
*/
|
|
include "features-enabled/*.conf"
|
|
|
|
This include directive takes care of including the configuration files for all
|
|
the features which have been enabled with `icinga2-enable-feature`. See
|
|
[Enabling/Disabling Features](#features) for more details.
|
|
|
|
/**
|
|
* Although in theory you could define all your objects in this file
|
|
* the preferred way is to create separate directories and files in the conf.d
|
|
* directory. Each of these files must have the file extension ".conf".
|
|
*/
|
|
include_recursive "conf.d"
|
|
|
|
You can put your own configuration files in the `conf.d` directory. This
|
|
directive makes sure that all of your own configuration files are included.
|
|
|
|
### <a id="constants-conf"></a> constants.conf
|
|
|
|
The `constants.conf` constants file can be used to define global constants:
|
|
|
|
/**
|
|
* This file defines global constants which can be used in
|
|
* the other configuration files. At a minimum the
|
|
* PluginDir constant should be defined.
|
|
*/
|
|
|
|
const PluginDir = "/usr/lib/nagios/plugins"
|
|
|
|
### <a id="localhost-conf"></a> localhost.conf
|
|
|
|
The `conf.d/localhost.conf` file contains our first host definition:
|
|
|
|
/**
|
|
* A host definition. You can create your own configuration files
|
|
* in the conf.d directory (e.g. one per host). By default all *.conf
|
|
* files in this directory are included.
|
|
*/
|
|
object Host "localhost" {
|
|
import "linux-server"
|
|
|
|
vars.address = "127.0.0.1"
|
|
vars.address6 = "::1"
|
|
}
|
|
|
|
This defines the host `localhost`. The `import` keyword is used to import
|
|
the `linux-server` template which takes care of setting up the `ping4` and
|
|
`ping6` services for the host as well as adding the host to the `linux-servers`
|
|
host group.
|
|
|
|
The `vars` attribute can be used to define custom attributes that are available
|
|
for all services which belong to this host. Most of the templates in the Icinga
|
|
Template Library require an `address` custom attribute defined in the `vars`
|
|
dictionary.
|
|
|
|
apply Service "icinga" {
|
|
import "generic-service"
|
|
|
|
check_command = "icinga"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
apply Service "http" {
|
|
import "generic-service"
|
|
|
|
check_command = "http_ip"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
apply Service "ssh" {
|
|
import "generic-service"
|
|
|
|
check_command = "ssh"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
apply Service "load" {
|
|
import "generic-service"
|
|
|
|
check_command = "load"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
apply ScheduledDowntime "backup-downtime" to Service {
|
|
import "backup-downtime"
|
|
|
|
assign where host.name == "localhost" && service.short_name == "load"
|
|
}
|
|
|
|
apply Service "processes" {
|
|
import "generic-service"
|
|
|
|
check_command = "processes"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
apply Service "users" {
|
|
import "generic-service"
|
|
|
|
check_command = "users"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
apply Service "disk" {
|
|
import "generic-service"
|
|
|
|
check_command = "disk"
|
|
|
|
assign where host.name == "localhost"
|
|
}
|
|
|
|
The `apply` keyword can be used to dynamically create services for all hosts based
|
|
on rules.
|
|
|
|
The command objects `http_ip`, `ssh`, `load`, `processes`, `users`
|
|
and `disk` are all provided by the Icinga Template Library (short ITL) which
|
|
we enabled earlier by including the `itl/itl.conf` configuration file.
|