Icinga 2 Compatibility
======================

:keywords:	Icinga, documentation, migration
:description:	Icinga 2 Migration

Purpose
-------

Documentation on the compatibility and changes introduced with Icinga 2.


Introduction
------------

Unlike Icinga 1.x, all used components (not only those for compatibility) run
asynchronous and use queues, if required. That way Icinga 2 does not get blocked
by any event, action or execution.

Configuration
-------------

NOTE: If you are upgrading from Icinga 1.x (or Nagios 3.x+) please note that
Icinga 2 introduces a new configuration format.

Details on the configuration can be found in chapter link::icinga2-config.html[Configuration]

Icinga 2 ships a config conversion script which will help you migrating the
existing configuration into the new format. Please look into the
'tools/configconvert' directory and follow the 'README' instructions.

TIP: If you kept planning to clean up your existing configuration, it may be a
good shot to start fresh with a new configuration strategy based on the Icinga 2
configuration logic.

Check Plugins
-------------

All native check plugins can be used with Icinga 2. The configuration of check
commands is changed due to the new configuration format.

Classic status and log files
----------------------------

Icinga 2 will write status.dat and objects.cache in a given interval like known
from Icinga 1.x - including the logs and their archives in the old format and
naming syntax. That way you can point any existing Classic UI installation to
the new locations (or any other addon/plugin using them).

External Commands
-----------------

Like known from Icinga 1.x, Icinga 2 also provides an external command pipe
allowing your scripts and guis to send commands to the core triggering various
actions.

Some commands are not supported though as their triggered functionality is not
available in Icinga 2 anymore.

For a detailed list, please check: https://wiki.icinga.org/display/icinga2/External+Commands


Performance Data
----------------

The Icinga 1.x Plugin API defines the performance data format. Icinga 2 parses
the check output accordingly and writes performance data files based on template
macros. File rotation interval can be defined as well.

Unlike Icinga 1.x you can define multiple performance data writers for all your
graphing addons such as PNP, inGraph or graphite.


IDO DB
------

Icinga 1.x uses an addon called 'IDOUtils' to store core configuration, status
and historical information in a database schema. Icinga Web and Reporting are
using that database as their chosen backend.

Icinga 2 is compatible to the IDO db schema but the the underlaying design of
inserting, updating and deleting data is different - asynchronous queueing,
database transactions and optimized queries for performance.

Furthermore there is no seperated daemon to receive the data through a socket.
Instead the IDO component queues the data and writes directly into the database
using the native database driver library (e.g. libmysqlclient). Unlike Icinga
1.x libdbi as db abstraction layer is not used anymore.


Livestatus
----------

Icinga 2 supports the livestatus api while using Icinga 1.x an addon named
'mk_livestatus' was required.

Next to the GET functionality for retrieving configuration, status and
historical data, Icinga 2 livestatus also supports the COMMANDS functionality.

TIP: Icinga 2 supports tcp sockets natively while the Icinga 1.x addon only
provides unix socket support.

Checkresult Reaper
------------------

Unlike Icinga 1.x Icinga 2 is a multithreaded application and processes check
results in memory. The old checkresult reaper reading files from disk again is
obviously not required anymore for native checks.

Some popular addons have been injecting their checkresults into the Icinga 1.x
checkresult spool directory bypassing the external command pipe and
PROCESS_SERVICE_CHECK_RESULT mainly for performance reasons.

In order to support that functionality as well, Icinga 2 got its optional
checkresult reaper.

Changes
-------

This is a collection of known changes in behaviour, configuration and outputs.

NOTE: May be incomplete, and requires updates in the future.

TODO

/* vim: set syntax=asciidoc filetype=asciidoc: */
