2014-06-13 15:57:33 +02:00
|
|
|
# Installing Icinga 2
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-05-12 09:03:00 +02:00
|
|
|
The recommended way of installing Icinga 2 is to use packages. The Icinga
|
|
|
|
project provides both release and development packages for a number
|
|
|
|
of operating systems.
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
Please check the documentation in the [doc/](doc/) directory for a current list
|
2014-05-12 09:03:00 +02:00
|
|
|
of available packages and detailed installation instructions.
|
|
|
|
|
|
|
|
There are a number of known caveats when installing from source such as
|
|
|
|
incorrect directory and file permissions. So even if you're planning to
|
|
|
|
not use the official packages it is advisable to build your own Debian
|
|
|
|
or RPM packages.
|
2013-10-22 13:14:25 +02:00
|
|
|
|
2014-06-13 15:57:33 +02:00
|
|
|
## Build Requirements
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2012-09-14 10:42:21 +02:00
|
|
|
The following requirements need to be fulfilled in order to build the
|
2012-09-18 12:38:08 +02:00
|
|
|
application using a dist tarball (package names for RHEL and Debian in
|
2013-09-25 15:47:39 +02:00
|
|
|
parentheses):
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2013-11-03 13:45:26 +01:00
|
|
|
* cmake
|
2012-09-18 12:38:08 +02:00
|
|
|
* GNU make (make)
|
2015-07-05 15:10:43 +02:00
|
|
|
* C++ compiler (gcc-c++ >= 4.7 on RHEL/SUSE, build-essential on Debian, alternatively clang++)
|
2014-08-29 11:41:33 +02:00
|
|
|
* OpenSSL library and header files (openssl-devel on RHEL, libssl-dev on Debian)
|
|
|
|
* Boost library and header files (boost-devel on RHEL, libboost-all-dev on Debian)
|
2013-11-03 13:45:26 +01:00
|
|
|
* GNU bison (bison)
|
2013-12-18 12:54:49 +01:00
|
|
|
* GNU flex (flex) >= 2.5.35
|
2014-11-13 22:37:12 +01:00
|
|
|
* recommended: libexecinfo on FreeBSD (automatically used when Icinga 2 is
|
|
|
|
installed via port or package)
|
2015-07-05 14:32:20 +02:00
|
|
|
* optional: MySQL (mysql-devel on RHEL, libmysqlclient-devel on SUSE, libmysqlclient-dev on Debian);
|
|
|
|
set CMake variable `ICINGA2_WITH_MYSQL` to `OFF` to disable this module
|
2014-12-11 08:50:28 +01:00
|
|
|
* optional: PostgreSQL (postgresql-devel on RHEL, libpq-dev on Debian); set CMake
|
2015-03-15 19:22:37 +01:00
|
|
|
variable `ICINGA2_WITH_PGSQL` to `OFF` to disable this module
|
2014-10-27 12:42:57 +01:00
|
|
|
* optional: YAJL (yajl-devel on RHEL, libyajl-dev on Debian)
|
2015-06-02 14:04:33 +02:00
|
|
|
* optional: libedit (libedit-devel on CentOS (RHEL requires rhel-7-server-optional-rpms
|
|
|
|
repository for el7 e.g.), libedit-dev on Debian)
|
2015-03-20 13:30:55 +01:00
|
|
|
* optional: Termcap (libtermcap-devel on RHEL, not necessary on Debian) - only
|
|
|
|
required if libedit doesn't already link against termcap/ncurses
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2013-12-18 12:54:49 +01:00
|
|
|
Note: RHEL5 ships an ancient flex version. Updated packages are available for
|
|
|
|
example from the repoforge buildtools repository.
|
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
* x86: http://mirror.hs-esslingen.de/repoforge/redhat/el5/en/i386/buildtools/
|
|
|
|
* x86\_64: http://mirror.hs-esslingen.de/repoforge/redhat/el5/en/x86_64/buildtools/
|
2013-12-18 12:54:49 +01:00
|
|
|
|
2014-06-13 15:57:33 +02:00
|
|
|
### User Requirements
|
2013-09-27 19:41:08 +02:00
|
|
|
|
|
|
|
By default Icinga will run as user 'icinga' and group 'icinga'. Additionally the
|
2013-10-02 09:50:26 +02:00
|
|
|
external command pipe and livestatus features require a dedicated command group
|
2014-08-29 11:41:33 +02:00
|
|
|
'icingacmd'. You can choose your own user/group names and pass them to CMake
|
|
|
|
using the `ICINGA2_USER`, `ICINGA2_GROUP` and `ICINGA2_COMMAND_GROUP` variables.
|
2013-09-27 19:41:08 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
# groupadd icinga
|
|
|
|
# groupadd icingacmd
|
|
|
|
# useradd -c "icinga" -s /sbin/nologin -G icingacmd -g icinga icinga
|
2013-09-27 19:41:08 +02:00
|
|
|
|
2013-10-02 09:50:26 +02:00
|
|
|
Add the web server user to the icingacmd group in order to grant it write
|
|
|
|
permissions to the external command pipe and livestatus socket:
|
2013-09-27 19:41:08 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
# usermod -a -G icingacmd www-data
|
2013-09-27 19:41:08 +02:00
|
|
|
|
2013-10-02 09:50:26 +02:00
|
|
|
Make sure to replace "www-data" with the name of the user your web server
|
|
|
|
is running as.
|
2013-09-27 19:41:08 +02:00
|
|
|
|
2014-06-13 15:57:33 +02:00
|
|
|
## Building Icinga 2
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2012-09-14 10:42:21 +02:00
|
|
|
Once you have installed all the necessary build requirements you can build
|
|
|
|
Icinga 2 using the following commands:
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
$ mkdir build && cd build
|
|
|
|
$ cmake ..
|
|
|
|
$ make
|
|
|
|
$ make install
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
You can specify an alternative installation prefix using `-DCMAKE_INSTALL_PREFIX`:
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
$ cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/icinga2
|
2012-09-17 14:54:17 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
In addition to `CMAKE_INSTALL_PREFIX` the following Icinga-specific cmake
|
2013-11-26 08:45:13 +01:00
|
|
|
variables are supported:
|
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
- `ICINGA2_USER`: The user Icinga 2 should run as; defaults to `icinga`
|
|
|
|
- `ICINGA2_GROUP`: The group Icinga 2 should run as; defaults to `icinga`
|
|
|
|
- `ICINGA2_GIT_VERSION_INFO`: Whether to use Git to determine the version number; defaults to `ON`
|
|
|
|
- `ICINGA2_COMMAND_GROUP`: The command group Icinga 2 should use; defaults to `icingacmd`
|
2015-03-01 01:27:42 +01:00
|
|
|
- `ICINGA2_UNITY_BUILD`: Whether to perform a unity build; defaults to `ON`
|
2015-03-04 08:57:20 +01:00
|
|
|
- `ICINGA2_LTO_BUILD`: Whether to use link time optimization (LTO); defaults to `OFF`
|
2014-08-29 11:41:33 +02:00
|
|
|
- `ICINGA2_PLUGINDIR`: The path for the Monitoring Plugins project binaries; defaults to `/usr/lib/nagios/plugins`
|
|
|
|
- `ICINGA2_RUNDIR`: The location of the "run" directory; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/run`
|
|
|
|
- `CMAKE_INSTALL_SYSCONFDIR`: The configuration directory; defaults to `CMAKE_INSTALL_PREFIX/etc`
|
2015-01-09 14:46:07 +01:00
|
|
|
- `ICINGA2_SYSCONFIGFILE`: Where to put the config file the initscript/systemd pulls it's dirs from;
|
2014-08-29 11:41:33 +02:00
|
|
|
defaults to `CMAKE_INSTALL_PREFIX/etc/sysconfig/icinga2`
|
|
|
|
- `CMAKE_INSTALL_LOCALSTATEDIR`: The state directory; defaults to `CMAKE_INSTALL_PREFIX/var`
|
|
|
|
- `USE_SYSTEMD=ON|OFF`: Use systemd or a classic SysV initscript; defaults to `OFF`
|
2015-01-09 14:46:07 +01:00
|
|
|
- `INSTALL_SYSTEMD_SERVICE_AND_INITSCRIPT=ON|OFF` Force install both the systemd service definition file
|
|
|
|
and the SysV initscript in parallel, regardless of how `USE_SYSTEMD` is set.
|
2014-08-29 11:41:33 +02:00
|
|
|
Only use this for special packaging purposes and if you know what you are doing.
|
|
|
|
Defaults to `OFF`.
|
2014-12-11 08:50:28 +01:00
|
|
|
- `ICINGA2_WITH_MYSQL`: Determines whether the MySQL IDO module is built; defaults to `ON`
|
|
|
|
- `ICINGA2_WITH_PGSQL`: Determines whether the PostgreSQL IDO module is built; defaults to `ON`
|
2014-12-19 09:45:35 +01:00
|
|
|
- `ICINGA2_WITH_CHECKER`: Determines whether the checker module is built; defaults to `ON`
|
|
|
|
- `ICINGA2_WITH_COMPAT`: Determines whether the compat module is built; defaults to `ON`
|
|
|
|
- `ICINGA2_WITH_DEMO`: Determines whether the demo module is built; defaults to `OFF`
|
|
|
|
- `ICINGA2_WITH_HELLO`: Determines whether the hello module is built; defaults to `OFF`
|
|
|
|
- `ICINGA2_WITH_LIVESTATUS`: Determines whether the Livestatus module is built; defaults to `ON`
|
|
|
|
- `ICINGA2_WITH_NOTIFICATION`: Determines whether the notification module is built; defaults to `ON`
|
|
|
|
- `ICINGA2_WITH_PERFDATA`: Determines whether the perfdata module is built; defaults to `ON`
|
2013-11-26 08:45:13 +01:00
|
|
|
|
2015-03-20 13:30:55 +01:00
|
|
|
CMake determines the Icinga 2 version number using `git describe` if the
|
|
|
|
source directory is contained in a Git repository. Otherwise the version number
|
|
|
|
is extracted from the [icinga2.spec](icinga2.spec) file. This behavior can be
|
|
|
|
overridden by creating a file called `icinga-version.h.force` in the source
|
|
|
|
directory. Alternatively the `-DICINGA2_GIT_VERSION_INFO=OFF` option for CMake
|
|
|
|
can be used to disable the usage of `git describe`.
|
|
|
|
|
2014-06-13 15:57:33 +02:00
|
|
|
### Building Icinga 2 RPMs
|
|
|
|
|
|
|
|
Setup your build environment on RHEL/SUSE and copy the generated tarball from your git
|
|
|
|
repository to `rpmbuild/SOURCES`.
|
2015-03-20 13:30:55 +01:00
|
|
|
|
|
|
|
Copy the icinga2.spec file to `rpmbuild/SPEC` and then run this command:
|
2014-06-13 15:57:33 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
$ rpmbuild -ba SPEC/icinga2.spec
|
2014-06-13 15:57:33 +02:00
|
|
|
|
|
|
|
### Building Icinga 2 Debs
|
|
|
|
|
2015-03-20 13:30:55 +01:00
|
|
|
Setup your build environment on Debian/Ubuntu, copy the 'debian' directory from
|
|
|
|
the Debian packaging Git repository (https://anonscm.debian.org/cgit/pkg-nagios/pkg-icinga2.git)
|
|
|
|
into your source tree and run the following command:
|
2014-06-13 15:57:33 +02:00
|
|
|
|
2015-03-20 13:30:55 +01:00
|
|
|
$ dpkg-buildpackage -uc -us
|
2014-06-13 15:57:33 +02:00
|
|
|
|
2015-06-25 17:38:17 +02:00
|
|
|
### Building Post Install Tasks
|
|
|
|
|
|
|
|
After building Icinga 2 yourself, your package build system should at least run the following post
|
|
|
|
install requirements:
|
|
|
|
|
|
|
|
* enable the `checker`, `notification` and `mainlog` feature by default
|
|
|
|
* run 'icinga2 api setup' in order to enable the `api` feature and generate SSL certificates for the node
|
|
|
|
|
|
|
|
|
2014-06-13 15:57:33 +02:00
|
|
|
## Running Icinga 2
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2012-09-14 10:42:21 +02:00
|
|
|
Icinga 2 comes with a single binary that takes care of loading all the relevant
|
|
|
|
components (e.g. for check execution, notifications, etc.):
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-12-18 10:22:24 +01:00
|
|
|
# /usr/sbin/icinga2 daemon
|
2015-03-12 13:01:45 +01:00
|
|
|
[2015-03-12 13:25:56 +0100] information/cli: Icinga application loader (version: v2.3.0-20-ga4d3713; debug)
|
|
|
|
[2015-03-12 13:25:56 +0100] information/cli: Loading application type: icinga/IcingaApplication
|
|
|
|
[2015-03-12 13:25:56 +0100] information/Utility: Loading library 'libicinga.dylib'
|
|
|
|
[2015-03-12 13:25:56 +0100] information/ConfigCompiler: Compiling config file: /Users/gunnar/i2/etc/icinga2/icinga2.conf
|
|
|
|
[2015-03-12 13:25:56 +0100] information/ConfigCompiler: Compiling config file: /Users/gunnar/i2/etc/icinga2/constants.conf
|
2014-12-18 10:22:24 +01:00
|
|
|
...
|
2013-10-22 13:14:25 +02:00
|
|
|
|
2015-03-20 13:30:55 +01:00
|
|
|
Icinga 2 can be started as a daemon using the provided init script:
|
2013-10-22 13:14:25 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
# /etc/init.d/icinga2
|
|
|
|
Usage: /etc/init.d/icinga2 {start|stop|restart|reload|checkconfig|status}
|
2012-03-30 07:39:12 +02:00
|
|
|
|
2014-06-15 22:28:41 +02:00
|
|
|
Or if your distribution uses systemd:
|
2014-08-29 11:41:33 +02:00
|
|
|
|
2015-03-20 13:30:55 +01:00
|
|
|
# systemctl {start|stop|reload|status|enable|disable} icinga2
|
2014-06-15 22:28:41 +02:00
|
|
|
|
2012-09-14 10:42:21 +02:00
|
|
|
Icinga 2 reads a single configuration file which is used to specify all
|
|
|
|
configuration settings (global settings, hosts, services, etc.). The
|
2014-08-29 11:41:33 +02:00
|
|
|
configuration format is explained in detail in the [doc/](doc/) directory.
|
2012-09-17 14:54:17 +02:00
|
|
|
|
2014-08-29 11:41:33 +02:00
|
|
|
By default `make install` installs example configuration files in
|
|
|
|
`/usr/local/etc/icinga2` unless you have specified a different prefix or
|
2013-10-02 09:50:26 +02:00
|
|
|
sysconfdir.
|