mirror of https://github.com/Icinga/icinga2.git
182 lines
7.3 KiB
Plaintext
182 lines
7.3 KiB
Plaintext
# Installing Icinga 2
|
|
|
|
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.
|
|
|
|
Please check the documentation in the doc/ directory for a current list
|
|
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.
|
|
|
|
## Build Requirements
|
|
|
|
The following requirements need to be fulfilled in order to build the
|
|
application using a dist tarball (package names for RHEL and Debian in
|
|
parentheses):
|
|
|
|
* cmake
|
|
* GNU make (make)
|
|
* C++ compiler (gcc-c++ on RHEL, build-essential on Debian)
|
|
* 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)
|
|
* GNU bison (bison)
|
|
* GNU flex (flex) >= 2.5.35
|
|
* recommended: libexecinfo on FreeBSD
|
|
* optional: MySQL (mysql-devel on RHEL, libmysqlclient-dev on Debian)
|
|
* optional: Python (python-devel on RHEL, python-dev on Debian)
|
|
|
|
Note: RHEL5 ships an ancient flex version. Updated packages are available for
|
|
example from the repoforge buildtools repository.
|
|
|
|
http://mirror.hs-esslingen.de/repoforge/redhat/el5/en/{i386,x86_64}/buildtools/
|
|
|
|
### User Requirements
|
|
|
|
By default Icinga will run as user 'icinga' and group 'icinga'. Additionally the
|
|
external command pipe and livestatus features require a dedicated command group
|
|
'icingacmd'. You can choose your own user/group names and pass them to the
|
|
configure script using the --with-icinga-user, --with-icinga-group,
|
|
--with-icingacmd-user and --with-icingacmd-group options.
|
|
|
|
# groupadd icinga
|
|
# groupadd icingacmd
|
|
# useradd -c "icinga" -s /sbin/nologin -G icingacmd -g icinga icinga
|
|
|
|
Add the web server user to the icingacmd group in order to grant it write
|
|
permissions to the external command pipe and livestatus socket:
|
|
|
|
# usermod -a -G icingacmd www-data
|
|
|
|
Make sure to replace "www-data" with the name of the user your web server
|
|
is running as.
|
|
|
|
|
|
## Building Release Tarballs
|
|
|
|
In order to build a release tarball you should first check out the Git repository
|
|
in a new directory. If you're using an existing check-out you should make sure
|
|
that there are no local modifications:
|
|
|
|
$ git status
|
|
|
|
Here's a short check-list for releases:
|
|
|
|
* Update the .mailmap and AUTHORS files
|
|
$ git log --use-mailmap | grep ^Author: | cut -f2- -d' ' | sort | uniq > AUTHORS
|
|
* Bump the version in icinga2.spec.
|
|
* Update the ChangeLog and doc/1-about.md files.
|
|
* Commit these changes to the "next" branch and create a signed tag (tags/v<VERSION>).
|
|
$ git commit -v -a -m "Release version <VERSION>"
|
|
$ git tag -u EE8E0720 -m "Version <VERSION>" v<VERSION>
|
|
$ git push --tags
|
|
* Merge the "next" branch into the "master" branch (using --ff-only).
|
|
$ git checkout master
|
|
$ git merge --ff-only next
|
|
$ git push origin master
|
|
* Bump the version to "v<NEXT-VERSION>-dev" and commit this change to the "next" branch.
|
|
|
|
Note: 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 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=ON option for CMake can be used to
|
|
disable the usage of "git describe".
|
|
|
|
Use "git archive" to build the release tarball:
|
|
|
|
$ VERSION=2.0.0
|
|
$ git archive --format=tgz --prefix=icinga2-$VERSION/ tags/v$VERSION
|
|
|
|
On CentOS 6.x use
|
|
|
|
$ VERSION=2.0.0
|
|
$ git archive --format=tar --prefix=icinga2-$VERSION/ tags/v$VERSION | gzip >icinga2-$VERSION.tar.gz
|
|
|
|
Finally you should verify that the tarball only contains the files it should contain:
|
|
|
|
$ VERSION=2.0.0
|
|
$ tar ztf icinga2-$VERSION.tar.gz | less
|
|
|
|
|
|
## Building Icinga 2
|
|
|
|
Once you have installed all the necessary build requirements you can build
|
|
Icinga 2 using the following commands:
|
|
|
|
$ mkdir build && cd build
|
|
$ cmake ..
|
|
$ make
|
|
$ make install
|
|
|
|
You can specify an alternative installation prefix using -DCMAKE_INSTALL_PREFIX:
|
|
|
|
$ cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/icinga2
|
|
|
|
In addition to CMAKE_INSTALL_PREFIX the following Icinga-specific cmake
|
|
variables are supported:
|
|
|
|
- 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_COMMAND_USER: The command user Icinga 2 should use; 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"
|
|
- ICINGA2_PLUGIN_PATH: The path for the Monitoring Plugins project binaries; defaults to "/usr/lib/nagios/plugins"
|
|
- CMAKE_INSTALL_SYSCONFDIR: The configuration directory; defaults to CMAKE_INSTALL_PREFIX/etc
|
|
- ICINGA2_SYSCONFIGFILE: Where to put the config file the initscript/systemd pulls it's dirs from;
|
|
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
|
|
- 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.
|
|
Only use this for special packaging purposes and if you know what you are doing.
|
|
Defaults to OFF
|
|
|
|
### Building Icinga 2 RPMs
|
|
|
|
Setup your build environment on RHEL/SUSE and copy the generated tarball from your git
|
|
repository to `rpmbuild/SOURCES`.
|
|
Copy the icinga2.spec file to `rpmbuild/SPEC` and then invoke
|
|
|
|
$ rpmbuild -ba SPEC/icinga2.spec
|
|
|
|
### Building Icinga 2 Debs
|
|
|
|
Setup your build environment on Debian/Ubuntu and run the following command straight from
|
|
the git repository checkout:
|
|
|
|
$ ./debian/updateversion && dpkg-buildpackage -uc -us
|
|
|
|
## Running Icinga 2
|
|
|
|
Icinga 2 comes with a single binary that takes care of loading all the relevant
|
|
components (e.g. for check execution, notifications, etc.):
|
|
|
|
# /usr/sbin/icinga2
|
|
[2014-06-13 15:29:16 +0200] information/icinga-app: Icinga application loader (version: v2.0.0-beta2-17-gd9289ad)
|
|
[2014-06-13 15:29:16 +0200] information/icinga-app: Loading application type: icinga/IcingaApplication
|
|
[2014-06-13 15:29:16 +0200] information/Utility: Loading library 'libicinga.so'
|
|
[2014-06-13 15:29:16 +0200] information/ConfigCompiler: Adding include search dir: /usr/share/icinga2/include
|
|
[2014-06-13 15:29:16 +0200] critical/icinga-app: You need to specify at least one config file (using the --config option).
|
|
|
|
Icinga 2 can be started as daemon using the provided init script:
|
|
|
|
# /etc/init.d/icinga2
|
|
Usage: /etc/init.d/icinga2 {start|stop|restart|reload|checkconfig|status}
|
|
|
|
Or if your distribution uses systemd:
|
|
# systemctl {start|stop|reload|status|enable|disable} icinga2.service
|
|
|
|
Icinga 2 reads a single configuration file which is used to specify all
|
|
configuration settings (global settings, hosts, services, etc.). The
|
|
configuration format is explained in detail in the doc/ directory.
|
|
|
|
By default "make install" installs example configuration files in
|
|
/usr/local/etc/icinga2 unless you have specified a different prefix or
|
|
sysconfdir.
|