Skip to content
Commits on Source (11)
Adam Bolte <abolte@systemsaviour.com>
Adam James <adam.james@transitiv.co.uk>
Alan Jenkins <alan.christopher.jenkins@gmail.com>
Alex <alexp710@hotmail.com>
Alexander A. Klimov <alexander.klimov@icinga.com>
Alexander Fuhr <alexander.fuhr@netways.de>
Alexander Schomburg <script.acc@alex.schomb.org>
......@@ -40,6 +41,7 @@ Daniel Helgenberger <daniel.helgenberger@m-box.de>
Daniel Kesselberg <mail@danielkesselberg.de>
Daniil Yaroslavtsev <dyaroslavtsev@confyrm.com>
David Beck <techiscool@gmail.com>
David Lublink <github.com@spam.lublink.net>
Denis <zaharden@gmail.com>
Dinesh Majrekar <dinesh.majrekar@serverchoice.com>
Dirk Goetz <dirk.goetz@icinga.com>
......@@ -99,6 +101,7 @@ Lars Krüger <krueger-lars@web.de>
Leah Oswald <mail@leahoswald.de>
Lee Clemens <java@leeclemens.net>
Lennart Betz <lennart.betz@icinga.com>
Leon Stringer <leon@priorsvle.com>
Louis Sautier <sautier.louis@gmail.com>
Luca Lesinigo <luca@lm-net.it>
Lucas Fairchild-Madar <lucas.madar@gmail.com>
......@@ -173,6 +176,7 @@ Steve McMaster <mcmaster@hurricanelabs.com>
Strajan Sebastian Ioan <strajan.sebastian@yahoo.com>
Strix <660956+MrStrix@users.noreply.github.com>
Sven Nierlein <sven@nierlein.de>
Sven Wegener <swegener@gentoo.org>
T. Mulyana <nothinux@gmail.com>
Thomas Forrer <thomas.forrer@wuerth-phoenix.com>
Thomas Gelf <thomas.gelf@icinga.com>
......@@ -202,6 +206,7 @@ ctrlaltca <ctrlaltca@gmail.com>
dh.harald <dh.harald@gmail.com>
dominik-r-s <43005480+dominik-r-s@users.noreply.github.com>
fbachmann <bachmann.f@gmail.com>
fluxX04 <alexp710@hotmail.com>
gitmopp <mopp@gmx.net>
jre3brg <jorge.rebelo@pt.bosch.com>
krishna <gskrishna44@gmail.com>
......
# Build Icinga 2 on Windows
The Icinga Project is providing Windows MSI packages under https://packages.icinga.com/windows/
> **Note:**
> This is a developer documentation on how to build Icinga 2 on Windows!
Also see [INSTALL.md](INSTALL.md) for Linux build instructions.
## Requirements
* 32 or 64-bit system
* Visual Studio >= 14 2015
* CMake >= 2.6
* OpenSSL >= 1.0.1
* Flex and Bison
## Install Requirements
**Visual Studio**
Download from [visualstudio.com](https://www.visualstudio.com/en/downloads/)
The Community Edition is available for free, and is what we use to build.
Workloads to install:
* C++ Desktop
* .NET Desktop
**OpenSSL for Icinga**
See our [openssl-windows GitHub project](https://github.com/Icinga/openssl-windows).
You will need to install a binary dist version to 'C:\\Program Files\\OpenSSL'.
There is a Powershell script to help you downloading: `.\tools\win32\download-openssl.ps1`
**Chocolatey**
A simple package manager for Windows, please see [install instructions](https://chocolatey.org/install).
**Git**
Best to use Chocolatey, see [package details](https://chocolatey.org/packages/git).
```
choco install git
```
**Flex / Bison**
Best to use Chocolatey, see [package details](https://chocolatey.org/packages/winflexbison3).
```
choco install winflexbison3
```
**CMake**
Best to use Chocolatey, see [package details](https://chocolatey.org/packages/cmake)
or download from: [cmake.org](https://cmake.org/download/)
```
choco install cmake
```
**WIX**
Best to use Chocolatey, see [package details](https://chocolatey.org/packages/wixtoolset).
```
choco install wixtoolset
```
**Boost**
Download third party Windows binaries from: [boost.org](http://www.boost.org/users/download/)
For example: `https://dl.bintray.com/boostorg/release/1.65.1/binaries/boost_1_65_1-msvc-14.1-64.exe`
*Warnings:*
* Must match your Visual Studio version!
* CMake might not support the latest Boost version (we used CMake 3.10 and Boost 1_65_1)
Run the installer exe.
## Build Icinga 2
Run with VC Native x64 Command Prompt:
```
powershell .\tools\win32\configure.ps1
powershell .\tools\win32\build.ps1
powershell .\tools\win32\test.ps1
```
See these scripts for details.
## AppVeyor
We are building [Icinga 2 with AppVeyor](https://ci.appveyor.com/project/icinga/icinga2) for testing and CI integration.
Please check `appveyor.yml` for our instructions.
# Icinga 2.x CHANGELOG
## 2.10.3 (2019-02-26)
### Notes
Bugfixes:
- Stalled TLS connections on reload/Director deployments (#6816 #6898 ref/NC/588119)
- 'Connection: close' header leading to unstable instance, affects Ruby clients (#6799)
- Server time in the future breaks check result processing (#6797 ref/NC/595861)
- ScheduledDowntimes: Generate downtime objects only on one HA endpoint (#2844 ref/IC/9673 ref/NC/590167 ref/NC/591721)
- Improve activation & syncing for downtime objects generated from ScheduledDowntimes (#6826 ref/IC/9673 ref/NC/585559)
- Generate a runtime downtime object from already running ScheduledDowntime objects (#6704)
- DB IDO: Don't enqueue queries when the feature is paused in HA zones (#5876)
- Crashes with localtime_r errors (#6887)
Documentation updates:
- Ephemeral port range blocking on Windows agents (ref/NC/597307)
- Technical concepts for the check scheduler (#6775)
- DB IDO cleanup (#6791)
- Unified development docs (#6819)
### Bug
* [#6971](https://github.com/icinga/icinga2/issues/6971) (Notifications, PR): Activate downtimes before any checkable object
* [#6968](https://github.com/icinga/icinga2/issues/6968) (API, PR): Secure ApiUser::GetByAuthHeader\(\) against timing attacks
* [#6940](https://github.com/icinga/icinga2/issues/6940) (Plugins, Windows, PR): Fix check\_swap percentage calculation
* [#6925](https://github.com/icinga/icinga2/issues/6925) (Plugins, Windows, PR): Fix check\_swap formatting
* [#6924](https://github.com/icinga/icinga2/issues/6924) (PR): Fix double to long conversions
* [#6922](https://github.com/icinga/icinga2/issues/6922) (API, DB IDO): IDO MySQL fails on start if check\_interval is a float \(Icinga 2.9.2\)
* [#6920](https://github.com/icinga/icinga2/issues/6920) (PR): Downtime::AddDowntime\(\): place Downtimes in the same zone as the origin ScheduledDowntimes
* [#6917](https://github.com/icinga/icinga2/issues/6917) (Cluster, Log, PR): Cluster: Delete object message should log that
* [#6916](https://github.com/icinga/icinga2/issues/6916) (PR): Don't allow retry\_interval \<= 0
* [#6914](https://github.com/icinga/icinga2/issues/6914) (Cluster, PR): ClusterEvents::AcknowledgementSet event should forward 'persistent' attribute
* [#6913](https://github.com/icinga/icinga2/issues/6913) (Plugins, Windows): check\_swap return value wrong when no swap file configured
* [#6901](https://github.com/icinga/icinga2/issues/6901) (API, PR): TcpSocket\#Bind\(\): also set SO\_REUSEPORT
* [#6899](https://github.com/icinga/icinga2/issues/6899) (PR): Log: Ensure not to pass negative values to localtime\(\)
* [#6898](https://github.com/icinga/icinga2/issues/6898) (API): API action restart-process fails on FreeBSD
* [#6894](https://github.com/icinga/icinga2/issues/6894) (Check Execution, PR): Fix checkresults from the future breaking checks
* [#6887](https://github.com/icinga/icinga2/issues/6887) (Check Execution, Windows): Icinga2 Windows Service does not start critical/checker: Exception occurred while checking 'hostname.tld'
* [#6883](https://github.com/icinga/icinga2/issues/6883) (Check Execution, PR): Allow Checkable\#retry\_interval to be 0
* [#6871](https://github.com/icinga/icinga2/issues/6871): Icinga2 crashes after localtime\_r call
* [#6857](https://github.com/icinga/icinga2/issues/6857) (Plugins, Windows, PR): Url\#m\_Query: preserve order
* [#6826](https://github.com/icinga/icinga2/issues/6826) (Configuration, PR): Downtime\#HasValidConfigOwner\(\): wait for ScheduledDowntimes
* [#6821](https://github.com/icinga/icinga2/issues/6821) (Cluster, Configuration, PR): Don't delete downtimes in satellite zones
* [#6820](https://github.com/icinga/icinga2/issues/6820) (Cluster, PR): Only create downtimes from non-paused ScheduledDowntime objects in HA enabled cluster zones
* [#6817](https://github.com/icinga/icinga2/issues/6817) (API, PR): HttpServerConnection\#DataAvailableHandler\(\): be aware of being called multiple times concurrently
* [#6816](https://github.com/icinga/icinga2/issues/6816) (API, Cluster): Stalled TLS connections and lock waits in SocketEventEngine
* [#6814](https://github.com/icinga/icinga2/issues/6814) (API, PR): Restore 'Connection: close' behaviour in HTTP responses
* [#6811](https://github.com/icinga/icinga2/issues/6811) (Plugins, Windows, PR): Fix state conditions in check\_memory and check\_swap
* [#6810](https://github.com/icinga/icinga2/issues/6810) (Plugins, Windows): Windows check\_memory never gets critical
* [#6808](https://github.com/icinga/icinga2/issues/6808) (API, PR): Remove redundand check for object existence on creation via API
* [#6807](https://github.com/icinga/icinga2/issues/6807) (API): \[2.10.2\] Director deploy crashes the Icinga service \[FreeBSD\]
* [#6799](https://github.com/icinga/icinga2/issues/6799) (API): "Connection: close" header leads to unstable instance
* [#6797](https://github.com/icinga/icinga2/issues/6797) (Check Execution): Servertime in the future breaks check results processing
* [#6750](https://github.com/icinga/icinga2/issues/6750) (Configuration, PR): \#6749 Wrong operator on stride variable causing incorrect behaviour
* [#6749](https://github.com/icinga/icinga2/issues/6749) (Configuration): Stride is misinterpreted in multi-date legacydatetime
* [#6748](https://github.com/icinga/icinga2/issues/6748) (CLI, PR): Fix api setup to automatically create the conf.d directory
* [#6718](https://github.com/icinga/icinga2/issues/6718) (API, Cluster, PR): Call SSL\_shutdown\(\) at least twice
* [#6704](https://github.com/icinga/icinga2/issues/6704) (Notifications, PR): Put newly configured already running ScheduledDowntime immediately in effect
* [#6542](https://github.com/icinga/icinga2/issues/6542) (Configuration, Log): /var/log/icinga2/icinga2.log is growing very fast on satellites
* [#6536](https://github.com/icinga/icinga2/issues/6536) (Windows, help wanted): check\_nscp\_api: Query arguments are sorted on Url::Format\(\)
* [#4790](https://github.com/icinga/icinga2/issues/4790) (Notifications): Newly configured already running ScheduledDowntime not put into effect
* [#3937](https://github.com/icinga/icinga2/issues/3937) (API): Icinga2 API: PUT request fails at 0-byte file
* [#2844](https://github.com/icinga/icinga2/issues/2844) (Cluster): Duplicated scheduled downtimes created in cluster HA zone
### Documentation
* [#6956](https://github.com/icinga/icinga2/issues/6956) (Documentation, PR): Escape pipe symbol in api documentation
* [#6944](https://github.com/icinga/icinga2/issues/6944) (Documentation, PR): Troubleshooting: Add notes on ephemeral port range blocking on Windows agents
* [#6928](https://github.com/icinga/icinga2/issues/6928) (Documentation, PR): Doc: Add .NET 3.5 to the windows build stack
* [#6825](https://github.com/icinga/icinga2/issues/6825) (Documentation, PR): Document that retry\_interval is only used after an active check result
* [#6819](https://github.com/icinga/icinga2/issues/6819) (Documentation, PR): Enhance and unify development docs for debug, develop, package
* [#6791](https://github.com/icinga/icinga2/issues/6791) (Documentation, PR): Docs: Add a section for DB IDO Cleanup
* [#6776](https://github.com/icinga/icinga2/issues/6776) (Documentation, PR): Doc fix: update apache section
* [#6775](https://github.com/icinga/icinga2/issues/6775) (Documentation, PR): Add technical docs for the check scheduler \(general, initial check, offsets\)
* [#6751](https://github.com/icinga/icinga2/issues/6751) (Documentation, PR): Doc fix: documentation link for apt
* [#6743](https://github.com/icinga/icinga2/issues/6743) (Documentation, PR): Doc fix: error in example path.
* [#5341](https://github.com/icinga/icinga2/issues/5341) (Documentation): Enhance development documentation
### Support
* [#6972](https://github.com/icinga/icinga2/issues/6972) (PR): Fix formatting in development docs
* [#6958](https://github.com/icinga/icinga2/issues/6958) (code-quality, PR): Debug: Log calls to ConfigObject::Deactivate\(\)
* [#6897](https://github.com/icinga/icinga2/issues/6897) (PR): Validate Zone::GetLocalZone\(\) before using
* [#6872](https://github.com/icinga/icinga2/issues/6872) (Windows): 2.10 is unstable \(Windows Agent\)
* [#6843](https://github.com/icinga/icinga2/issues/6843) (Tests, Windows, PR): Improve AppVeyor builds
* [#6479](https://github.com/icinga/icinga2/issues/6479) (code-quality, PR): SocketEvents: inherit from Stream
* [#6477](https://github.com/icinga/icinga2/issues/6477) (code-quality): SocketEvents: inherit from Object
## 2.10.2 (2018-11-14)
### Bug
......
# Installing Icinga 2
The recommended way of installing Icinga 2 is to use [packages](https://packages.icinga.com).
The Icinga project provides both release and development packages for a number
of operating systems.
Please check the documentation in the [doc/](doc/) directory for a current list
of available packages and detailed installation instructions.
The online documentation is available on [icinga.com/docs](https://icinga.com/docs/)
and will guide you step by step.
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. You can use the source packages from [packages.icinga.com](https://packages.icinga.com)
for this purpose.
> **Disclaimer**
>
> This information is intended for developers and packagers. It might be incomplete or unclear
> in some cases. Ensure to check our [packaging scripts on GitHub](https://github.com/Icinga/icinga-packaging) too!
# Build Requirements
The following requirements need to be fulfilled in order to build the
application using a dist tarball (including notes for distributions):
* cmake >= 2.6
* GNU make (make) or ninja-build
* C++ compiler which supports C++11
- RHEL/Fedora/SUSE: gcc-c++ >= 4.7 (extra Developer Tools on RHEL5/6 see below)
- Debian/Ubuntu: build-essential
- Alpine: build-base
- you can also use clang++
* pkg-config
* OpenSSL library and header files >= 1.0.1
- RHEL/Fedora: openssl-devel
- SUSE: libopenssl-devel (for SLES 11: libopenssl1-devel)
- Debian/Ubuntu: libssl-dev
- Alpine: libressl-dev
* Boost library and header files >= 1.48.0
- RHEL/Fedora: boost148-devel
- Debian/Ubuntu: libboost-all-dev
- Alpine: boost-dev
* GNU bison (bison)
* GNU flex (flex) >= 2.5.35
* Systemd headers
- Only required when using Systemd
- Debian/Ubuntu: libsystemd-dev
- RHEL/Fedora: systemd-devel
## Optional features
* MySQL (disable with CMake variable `ICINGA2_WITH_MYSQL` to `OFF`)
- RHEL/Fedora: mysql-devel
- SUSE: libmysqlclient-devel
- Debian/Ubuntu: default-libmysqlclient-dev | libmysqlclient-dev
- Alpine: mariadb-dev
* PostgreSQL (disable with CMake variable `ICINGA2_WITH_PGSQL` to `OFF`)
- RHEL/Fedora: postgresql-devel
- Debian/Ubuntu: libpq-dev
- postgresql-dev on Alpine
* YAJL (Faster JSON library)
- RHEL/Fedora: yajl-devel
- Debian: libyajl-dev
- Alpine: yajl-dev
* libedit (CLI console)
- RHEL/Fedora: libedit-devel on CentOS (RHEL requires rhel-7-server-optional-rpms)
- Debian/Ubuntu/Alpine: libedit-dev
* Termcap (only required if libedit doesn't already link against termcap/ncurses)
- RHEL/Fedora: libtermcap-devel
- Debian/Ubuntu: (not necessary)
## Special requirements
**FreeBSD**: libexecinfo (automatically used when Icinga 2 is installed via port or package)
**RHEL6**: Requires a newer boost version which is available on packages.icinga.com
with a version suffixed name.
## Runtime user environment
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 CMake
using the `ICINGA2_USER`, `ICINGA2_GROUP` and `ICINGA2_COMMAND_GROUP` variables.
```
# groupadd icinga
# groupadd icingacmd
# useradd -c "icinga" -s /sbin/nologin -G icingacmd -g icinga icinga
```
On Alpine (which uses ash busybox) you can run:
```
# addgroup -S icinga
# addgroup -S icingacmd
# adduser -S -D -H -h /var/spool/icinga2 -s /sbin/nologin -G icinga -g icinga icinga
# adduser icinga icingacmd
```
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 Icinga 2
Once you have installed all the necessary build requirements you can build
Icinga 2 using the following commands:
```
$ mkdir release && cd release
$ cmake ..
$ cd ..
$ make -C release
$ make install -C release
```
You can specify an alternative installation prefix using `-DCMAKE_INSTALL_PREFIX`:
```
$ cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/icinga2
```
## CMake Variables
In addition to `CMAKE_INSTALL_PREFIX` here are most of the supported Icinga-specific cmake variables.
For all variables regarding defaults paths on in CMake, see
[GNUInstallDirs](https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html).
Also see `CMakeLists.txt` for details.
**System Environment**
- `CMAKE_INSTALL_SYSCONFDIR`: The configuration directory; defaults to `CMAKE_INSTALL_PREFIX/etc`
- `CMAKE_INSTALL_LOCALSTATEDIR`: The state directory; defaults to `CMAKE_INSTALL_PREFIX/var`
- `ICINGA2_CONFIGDIR`: Main config directory; defaults to `CMAKE_INSTALL_SYSCONFDIR/icinga2` usually `/etc/icinga2`
- `ICINGA2_CACHEDIR`: Directory for cache files; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/cache/icinga2` usually `/var/cache/icinga2`
- `ICINGA2_DATADIR`: Data directory for the daemon; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/lib/icinga2` usually `/var/lib/icinga2`
- `ICINGA2_LOGDIR`: Logfiles of the daemon; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/log/icinga2 usually `/var/log/icinga2`
- `ICINGA2_SPOOLDIR`: Spooling directory ; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/spool/icinga2` usually `/var/spool/icinga2`
- `ICINGA2_INITRUNDIR`: Runtime data for the init system; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/run/icinga2` usually `/run/icinga2`
- `ICINGA2_GIT_VERSION_INFO`: Whether to use Git to determine the version number; defaults to `ON`
- `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_GROUP`: The command group Icinga 2 should use; defaults to `icingacmd`
- `ICINGA2_SYSCONFIGFILE`: Where to put the config file the initscript/systemd pulls it's dirs from;
defaults to `CMAKE_INSTALL_PREFIX/etc/sysconfig/icinga2`
- `ICINGA2_PLUGINDIR`: The path for the Monitoring Plugins project binaries; defaults to `/usr/lib/nagios/plugins`
**Build Optimization**
- `ICINGA2_UNITY_BUILD`: Whether to perform a unity build; defaults to `ON`. Note: This requires additional memory and is not advised for building VMs, Docker for Mac and embedded hardware.
- `ICINGA2_LTO_BUILD`: Whether to use link time optimization (LTO); defaults to `OFF`
**Init System**
- `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`.
**Features:**
- `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`
- `ICINGA2_WITH_TESTS`: Determines whether the unit tests are built; defaults to `ON`
**MySQL or MariaDB:**
The following settings can be tuned for the MySQL / MariaDB IDO feature.
- `ICINGA2_WITH_MYSQL`: Determines whether the MySQL IDO module is built; defaults to `ON`
- `MYSQL_CLIENT_LIBS`: Client implementation used (mysqlclient / mariadbclient); defaults searches for `mysqlclient` and `mariadbclient`
- `MYSQL_INCLUDE_DIR`: Directory containing include files for the mysqlclient; default empty -
checking multiple paths like `/usr/include/mysql`
See [FindMySQL.cmake](third-party/cmake/FindMySQL.cmake) for the implementation.
**PostgreSQL:**
The following settings can be tuned for the PostgreSQL IDO feature.
- `ICINGA2_WITH_PGSQL`: Determines whether the PostgreSQL IDO module is built; defaults to `ON`
- `PostgreSQL_INCLUDE_DIR`: Top-level directory containing the PostgreSQL include directories
- `PostgreSQL_LIBRARY`: File path to PostgreSQL library : libpq.so (or libpq.so.[ver] file)
See [FindMySQL.cmake](third-party/cmake/FindPostgreSQL.cmake) for the implementation.
**Version detection:**
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 [VERSION](VERSION) 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`.
# Building packages
> **WARNING:** Some of this information is outdated!
## Building RPMs
### Build Environment on RHEL, CentOS, Fedora, Amazon Linux
Setup your build environment:
```
yum -y install rpmdevtools
```
### Build Environment on SuSE/SLES
SLES:
```
zypper addrepo http://download.opensuse.org/repositories/devel:tools/SLE_12_SP2/devel:tools.repo
zypper refresh
zypper install rpmdevtools spectool
```
OpenSuSE:
```
zypper addrepo http://download.opensuse.org/repositories/devel:tools/openSUSE_Leap_42.3/devel:tools.repo
zypper refresh
zypper install rpmdevtools spectool
```
### Package Builds
Prepare the rpmbuild directory tree:
```
cd $HOME
rpmdev-setuptree
```
Copy the icinga2.spec file to `rpmbuild/SPEC` or fetch the latest version:
```
curl https://raw.githubusercontent.com/Icinga/rpm-icinga2/master/icinga2.spec -o $HOME/rpmbuild/SPECS/icinga2.spec
```
> **Note**
>
> The above command builds snapshot packages. Change to the `release` branch
> for release package builds.
Copy the tarball to `rpmbuild/SOURCES` e.g. by using the `spectool` binary
provided with `rpmdevtools`:
```
cd $HOME/rpmbuild/SOURCES
spectool -g ../SPECS/icinga2.spec
cd $HOME/rpmbuild
```
Install the build dependencies. Example for CentOS 7:
```
yum -y install libedit-devel ncurses-devel gcc-c++ libstdc++-devel openssl-devel \
cmake flex bison boost-devel systemd mysql-devel postgresql-devel httpd \
selinux-policy-devel checkpolicy selinux-policy selinux-policy-doc
```
Note: If you are using Amazon Linux, systemd is not required.
A shorter way is available using the `yum-builddep` command on RHEL based systems:
```
yum-builddep SPECS/icinga2.spec
```
Build the RPM:
```
rpmbuild -ba SPECS/icinga2.spec
```
### Additional Hints
#### SELinux policy module
The following packages are required to build the SELinux policy module:
* checkpolicy
* selinux-policy (selinux-policy on CentOS 6, selinux-policy-devel on CentOS 7)
* selinux-policy-doc
#### RHEL/CentOS 6
The RedHat Developer Toolset is required for building Icinga 2 beforehand.
This contains a modern version of flex and a C++ compiler which supports
C++11 features.
```
cat >/etc/yum.repos.d/devtools-2.repo <<REPO
[testing-devtools-2-centos-\$releasever]
name=testing 2 devtools for CentOS $releasever
baseurl=https://people.centos.org/tru/devtools-2/\$releasever/\$basearch/RPMS
gpgcheck=0
REPO
```
Dependencies to devtools-2 are used in the RPM SPEC, so the correct tools
should be used for building.
As an alternative, you can use newer Boost packages provided on
[packages.icinga.com](https://packages.icinga.com/epel).
```
cat >$HOME/.rpmmacros <<MACROS
%build_icinga_org 1
MACROS
```
#### Amazon Linux
If you prefer to build packages offline, a suitable Vagrant box is located
[here](https://atlas.hashicorp.com/mvbcoding/boxes/awslinux/).
#### SLES 11
The Icinga repository provides the required boost package version and must be
added before building.
## Build Debian/Ubuntu packages
> **WARNING:** This information is outdated!
Setup your build environment on Debian/Ubuntu, copy the 'debian' directory from
the Debian packaging Git repository (https://github.com/Icinga/deb-icinga2)
into your source tree and run the following command:
```
$ dpkg-buildpackage -uc -us
```
## Build Alpine Linux packages
A simple way to setup a build environment is installing Alpine in a chroot.
In this way, you can set up an Alpine build environment in a chroot under a
different Linux distro.
There is a script that simplifies these steps with just two commands, and
can be found [here](https://github.com/alpinelinux/alpine-chroot-install).
Once the build environment is installed, you can setup the system to build
the packages by following [this document](https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package).
# Build 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
## Run Icinga 2
Icinga 2 comes with a binary that takes care of loading all the relevant
components (e.g. for check execution, notifications, etc.):
```
# icinga2 daemon
[2016-12-08 16:44:24 +0100] information/cli: Icinga application loader (version: v2.5.4-231-gb10a6b7; debug)
[2016-12-08 16:44:24 +0100] information/cli: Loading configuration file(s).
[2016-12-08 16:44:25 +0100] information/ConfigItem: Committing config item(s).
...
```
### Init Script
Icinga 2 can be started as a daemon using the provided init script:
```
# /etc/init.d/icinga2
Usage: /etc/init.d/icinga2 {start|stop|restart|reload|checkconfig|status}
```
### Systemd
If your distribution uses Systemd:
```
# systemctl {start|stop|reload|status|enable|disable} icinga2
```
In case the distribution is running Systemd >227, you'll also
need to package and install the `etc/initsystem/icinga2.service.limits.conf`
file into `/etc/systemd/system/icinga2.service.d`.
### openrc
Or if your distribution uses openrc (like Alpine):
```
# rc-service icinga2
Usage: /etc/init.d/icinga2 {start|stop|restart|reload|checkconfig|status}
```
Note: the openrc's init.d is not shipped by default.
A working init.d with openrc can be found here: (https://git.alpinelinux.org/cgit/aports/plain/community/icinga2/icinga2.initd). If you have customized some path, edit the file and adjust it according with your setup.
Those few steps can be followed:
```
# wget https://git.alpinelinux.org/cgit/aports/plain/community/icinga2/icinga2.initd
# mv icinga2.initd /etc/init.d/icinga2
# chmod +x /etc/init.d/icinga2
```
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/](doc/) directory.
By default `make install` installs example configuration files in
`/usr/local/etc/icinga2` unless you have specified a different prefix or
sysconfdir.
......@@ -8,27 +8,45 @@
#### Table of Contents
1. [About][About]
2. [License][License]
3. [Installation][Installation]
4. [Documentation][Documentation]
5. [Support][Support]
2. [Installation][Installation]
3. [Documentation][Documentation]
4. [Support][Support]
5. [License][License]
6. [Contributing][Contributing]
## About
Icinga 2 is an open source monitoring system which checks the availability of your
network resources, notifies users of outages, and generates performance data for reporting.
[Icinga 2](https://icinga.com/products/icinga-2/) is a monitoring system which checks
the availability of your network resources, notifies users of outages, and generates
performance data for reporting.
Scalable and extensible, Icinga 2 can monitor large, complex environments across
multiple locations.
Icinga 2 as monitoring core works best with [Icinga Web 2](https://icinga.com/products/icinga-web-2/)
as web interface.
Icinga 2 as core requires [Icinga Web 2](https://icinga.com/products/icinga-web-2/)
on top in your Icinga Stack.
More information can be found at [icinga.com](https://icinga.com/products/icinga-2/)
and inside the [documentation](https://icinga.com/docs/icinga2/latest/).
![Icinga Dashboard](https://icinga.com/wp-content/uploads/2017/12/icingaweb2-2.5.0-dashboard.png)
## Licensing
## Installation
For installing Icinga please check the [installation chapter](https://icinga.com/docs/icinga2/latest/doc/02-getting-started/)
in the documentation.
If you are a packager, please read the [development chapter](https://icinga.com/docs/icinga2/latest/doc/21-development/)
for more details.
## Documentation
The documentation is available on [icinga.com/docs](https://icinga.com/docs/icinga2/latest/).
## Support
Check the [project website](https://icinga.com) for status updates. Join the
[community channels](https://icinga.com/community/) for questions
or ask an Icinga partner for [professional support](https://icinga.com/support/).
## License
Icinga 2 and the Icinga 2 documentation are licensed under the terms of the GNU
General Public License Version 2, you will find a copy of this license in the
......@@ -48,21 +66,6 @@ so, delete this exception statement from your version. If you delete
this exception statement from all source files in the program, then
also delete it here.
## Installation
Read the [INSTALL.md](INSTALL.md) file for more information about how to install it.
## Documentation
The documentation is located in the [doc/](doc/) directory. The latest documentation
is also available on https://docs.icinga.com
## Support
Check the project website at https://icinga.com for status updates. Join the
[community channels](https://icinga.com/community) for questions
or ask an Icinga partner for [professional support](https://icinga.com/services/support/).
## Contributing
There are many ways to contribute to Icinga -- whether it be sending patches,
......
Version: 2.10.2
Version: 2.10.3
Revision: 1
......@@ -11,6 +11,7 @@ environment:
BOOST_LIBRARYDIR: 'C:\Libraries\boost_1_65_1\lib64-msvc-14.1'
BISON_BINARY: 'C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe'
FLEX_BINARY: 'C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe'
CMAKE_BUILD_TYPE: Debug
branches:
only:
......
......@@ -198,8 +198,7 @@ for milestone in sorted(milestones.values(), key=lambda ms: (ms["due_on"], ms["t
continue
if milestone["due_on"] == None:
print "Milestone", milestone["title"], "does not have a due date."
sys.exit(1)
print "Warning: Milestone", milestone["title"], "does not have a due date."
ms_due_on = datetime.strptime(milestone["due_on"], "%Y-%m-%dT%H:%M:%SZ")
......
icinga2 (2.10.3-2) unstable; urgency=medium
* Team upload.
* Add patch to fix comparepasswords_issafe test failure on i386.
* Set CTEST_OUTPUT_ON_FAILURE environment variable.
-- Bas Couwenberg <sebastic@debian.org> Fri, 01 Mar 2019 12:18:30 +0100
icinga2 (2.10.3-1) unstable; urgency=medium
* Team upload.
* New upstream release.
* Bump Standards-Version to 4.3.0, no changes.
* Use .maintscript files instead of dpkg-maintscript-helper directly.
* Add lintian overrides for file-references-package-build-path.
-- Bas Couwenberg <sebastic@debian.org> Fri, 01 Mar 2019 06:52:34 +0100
icinga2 (2.10.2-1~bpo9+1) stretch-backports; urgency=medium
* Rebuild for stretch-backports.
......
......@@ -28,7 +28,7 @@ Build-Depends: bash-completion,
libwxgtk3.0-dev,
make (>= 3.81),
po-debconf
Standards-Version: 4.2.1
Standards-Version: 4.3.0
Vcs-Browser: https://salsa.debian.org/nagios-team/pkg-icinga2
Vcs-Git: https://salsa.debian.org/nagios-team/pkg-icinga2.git -b stretch-backports
Homepage: https://icinga.com
......
# this is actually a defined word in the livestatus protocol...
spelling-error-in-binary usr/lib/*/icinga2/sbin/icinga2 childs children
# __FILE__ & assert() are used.
file-references-package-build-path *
mv_conffile /etc/icinga2/classicui/apache2.conf /etc/icinga2-classicui/apache2.conf 2.2.0-1~
mv_conffile /etc/icinga2/classicui/cgi.cfg /etc/icinga2-classicui/cgi.cfg 2.2.0-1~
......@@ -49,13 +49,6 @@ case "$1" in
configure)
enable_features_for_classic $@
dpkg-maintscript-helper mv_conffile \
/etc/icinga2/classicui/apache2.conf \
/etc/icinga2-classicui/apache2.conf 2.2.0-1~ icinga2-classicui -- "$@"
dpkg-maintscript-helper mv_conffile /etc/icinga2/classicui/cgi.cfg \
/etc/icinga2-classicui/cgi.cfg 2.2.0-1~ icinga2-classicui -- "$@"
if [ -f '/etc/icinga2/classicui/htpasswd.users' ] && [ ! -f '/etc/icinga2-classicui/htpasswd.users' ];
then
echo "Move classicui password file to new location"
......
......@@ -31,13 +31,6 @@ case "$1" in
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
disable_apache2 "$@"
dpkg-maintscript-helper mv_conffile \
/etc/icinga2/classicui/apache2.conf \
/etc/icinga2-classicui/apache2.conf 2.2.0-1~ icinga2-classicui -- "$@"
dpkg-maintscript-helper mv_conffile /etc/icinga2/classicui/cgi.cfg \
/etc/icinga2-classicui/cgi.cfg 2.2.0-1~ icinga2-classicui -- "$@"
;;
*)
......
#!/bin/sh
set -e
### see: dh_installdeb(1)
### https://www.debian.org/doc/manuals/maint-guide/dother.en.html#maintscripts
### summary of how this script can be called:
### * <new-preinst> `install'
### * <new-preinst> `install' <old-version>
### * <new-preinst> `upgrade' <old-version>
### * <old-preinst> `abort-upgrade' <new-version>
### for details, see https://www.debian.org/doc/debian-policy/ or
### the debian-policy package
case "$1" in
install|upgrade)
dpkg-maintscript-helper mv_conffile \
/etc/icinga2/classicui/apache2.conf \
/etc/icinga2-classicui/apache2.conf 2.2.0-1~ icinga2-classicui -- "$@"
dpkg-maintscript-helper mv_conffile /etc/icinga2/classicui/cgi.cfg \
/etc/icinga2-classicui/cgi.cfg 2.2.0-1~ icinga2-classicui -- "$@"
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
### dh_installdeb will replace this with shell code automatically
### generated by other debhelper scripts.
#DEBHELPER#
exit 0
rm_conffile /etc/bash_completion.d/icinga2 2.4.1-2~
......@@ -24,9 +24,6 @@ is_fresh_install()
return 1
}
dpkg-maintscript-helper rm_conffile \
"/etc/bash_completion.d/icinga2" "2.4.1-2~" -- "$@"
case "$1" in
configure)
if ! getent passwd nagios > /dev/null ; then
......
......@@ -3,9 +3,6 @@
set -e
dpkg-maintscript-helper rm_conffile \
"/etc/bash_completion.d/icinga2" "2.4.1-2~" -- "$@"
case "$1" in
purge)
rm -rf /etc/icinga2/features-enabled/
......
#!/bin/sh
set -e
dpkg-maintscript-helper rm_conffile \
"/etc/bash_completion.d/icinga2" "2.4.1-2~" -- "$@"
#DEBHELPER#
exit 0
Description: Ignore failure of unit test base_utility/comparepasswords_issafe
as volatile system load may cause false negatives
Author: "Alexander A. Klimov" <alexander.klimov@icinga.com>
Origin: https://github.com/Icinga/icinga2/pull/6977/commits/646feb76e06155f908a4dcee51144db8f05a114f
Bug: https://github.com/Icinga/icinga2/issues/6987
--- a/test/base-utility.cpp
+++ b/test/base-utility.cpp
@@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(comparepasswords_is
auto duration2 (steady_clock::now() - start2);
double diff = (double)duration_cast<microseconds>(duration1).count() / (double)duration_cast<microseconds>(duration2).count();
- BOOST_CHECK(0.9 <= diff && diff <= 1.1);
+ BOOST_WARN(0.9 <= diff && diff <= 1.1);
}
BOOST_AUTO_TEST_SUITE_END()