]> granicus.if.org Git - icinga2/blobdiff - doc/1-about.md
Release version 2.3.4
[icinga2] / doc / 1-about.md
index 5c033b81ac6a7306f8a419834b8d357b6f4b147c..9c037d2395a5cae3e49f1213d7a9ebe94730d888 100644 (file)
@@ -2,8 +2,9 @@
 
 ## <a id="what-is-icinga2"></a> What is Icinga 2?
 
-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 is an open source 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.
@@ -17,16 +18,19 @@ LICENSE file included in the source package.
 ## <a id="support"></a> Support
 
 Support for Icinga 2 is available in a number of ways. Please have a look at
-the support overview page at https://support.icinga.org.
+the [support overview page](https://support.icinga.org).
 
 ## <a id="contribute"></a> Contribute
 
-There are many ways to contribute to Icinga - whether it be sending patches, testing,
-reporting bugs, or reviewing and updating the documentation. Every contribution
-is appreciated!
+There are many ways to contribute to Icinga - whether it be sending patches,
+testing, reporting bugs, or reviewing and updating the documentation. Every
+contribution is appreciated!
 
 Please get in touch with the Icinga team at https://www.icinga.org/community/.
 
+If you want to help update this documentation please read
+[this howto](https://wiki.icinga.org/display/community/Update+the+Icinga+2+documentation).
+
 ### <a id="development"></a> Icinga 2 Development
 
 You can follow Icinga 2's development closely by checking
@@ -46,364 +50,364 @@ More details in the [Icinga FAQ](https://www.icinga.org/icinga/faq/).
 
 * [Register](https://exchange.icinga.org/authentication/register) an Icinga account.
 * Create a new issue at the [Icinga 2 Development Tracker](https://dev.icinga.org/projects/i2).
-* When reporting a bug, please include the details described in the [Troubleshooting](#troubleshooting-information-required) chapter (version, configs, logs, etc).
-
-## <a id="demo-vm"></a> Demo VM
-
-Icinga 2 is available as [Vagrant Demo VM](#vagrant).
+* When reporting a bug, please include the details described in the [Troubleshooting](16-troubleshooting.md#troubleshooting-information-required) chapter (version, configs, logs, etc).
 
-## <a id="whats-new"></a> What's new
+## <a id="whats-new"></a> What's New
 
-### What's New in Version 2.2.1
+### What's New in Version 2.3.4
 
 #### Changes
 
-* Support arrays in [command argument macros](#command-passing-parameters) #6709
-    * Allows to define multiple parameters for [nrpe -a](#plugin-check-command-nrpe), [nscp -l](#plugin-check-command-nscp), [disk -p](#plugin-check-command-disk), [dns -a](#plugin-check-command-dns).
 * Bugfixes
+* ITL: Check commands for various databases
+* Improve validation messages for time periods
+* Update max_check_attempts in generic-{host,service} templates
+* Update logrotate configuration
 
 #### Issues
 
-* Feature #6709: Support for arrays in macros
-* Feature #7463: Update spec file to use yajl-devel
-* Feature #7739: The classicui Apache conf doesn't support Apache 2.4
-* Feature #7747: Increase default timeout for NRPE checks
-* Feature #7867: Document how arrays in macros work
-
-* Bug #7173: service icinga2 status gives wrong information when run as unprivileged user
-* Bug #7602: livestatus large amount of submitting unix socket command results in broken pipes
-* Bug #7613: icinga2 checkconfig should fail if group given for command files does not exist
-* Bug #7671: object and template with the same name generate duplicate object error
-* Bug #7708: Built-in commands shouldn't be run on the master instance in remote command execution mode
-* Bug #7725: Windows wizard uses incorrect CLI command
-* Bug #7726: Windows wizard is missing --zone argument
-* Bug #7730: Restart Icinga - Error Restoring program state from file '/var/lib/icinga2/icinga2.state'
-* Bug #7735: 2.2.0 has out-of-date icinga2 man page
-* Bug #7738: Systemd rpm scripts are run in wrong package
-* Bug #7740: /usr/sbin/icinga-prepare-dirs conflicts in the bin and common package
-* Bug #7741: Icinga 2.2 misses the build requirement libyajl-devel for SUSE distributions
-* Bug #7743: Icinga2 node add failed with unhandled exception
-* Bug #7754: Incorrect error message for localhost
-* Bug #7770: Objects created with node update-config can't be seen in Classic UI
-* Bug #7786: Move the icinga2-prepare-dirs script elsewhere
-* Bug #7806: !in operator returns incorrect result
-* Bug #7828: Verify if master radio box is disabled in the Windows wizard
-* Bug #7847: Wrong information in section "Linux Client Setup Wizard for Remote Monitoring"
-* Bug #7862: Segfault in CA handling
-* Bug #7868: Documentation: Explain how unresolved macros are handled
-* Bug #7890: Wrong permission in run directory after restart
-* Bug #7896: Fix Apache config in the Debian package
-
-### What's New in Version 2.2.0
+* Feature 8760: Add database plugins to ITL
+* Feature 8803: Agent Wizard: add options for API defaults
+* Feature 8893: Improve timeperiod validation error messages
+* Feature 8895: Add explanatory note for Icinga2 client documentation
+
+* Bug 8808: logrotate doesn't work on Ubuntu
+* Bug 8821: command_endpoint check_results are not replicated to other endpoints in the same zone
+* Bug 8879: Reword documentation of check_address
+* Bug 8881: Add arguments to the UPS check
+* Bug 8889: Fix a minor markdown error
+* Bug 8892: Validation errors for time ranges which span the DST transition
+* Bug 8894: Default max_check_attempts should be lower for hosts than for services
+* Bug 8913: Windows Build: Flex detection
+* Bug 8917: Node wizard should only accept 'y', 'n', 'Y' and 'N' as answers for boolean questions
+* Bug 8919: Fix complexity class for Dictionary::Get
+* Bug 8987: Fix a typo
+* Bug 9012: Typo in graphite feature enable documentation
+* Bug 9014: Don't update scheduleddowntime table w/ trigger_time column when only adding a downtime
+* Bug 9016: Downtimes which have been triggered are not properly recorded in the database
+* Bug 9017: scheduled_downtime_depth column is not reset when a downtime ends or when a downtime is being removed
+* Bug 9021: Multiple log messages w/ "Attempting to send notifications for notification object"
+* Bug 9041: Acknowledging problems w/ expire time does not add the expiry information to the related comment for IDO and compat
+* Bug 9045: Vim syntax: Match groups before host/service/user objects
+* Bug 9049: check_disk order of command arguments
+* Bug 9050: web.conf is not in the RPM package
+* Bug 9064: troubleshoot truncates crash reports
+* Bug 9069: Documentation: set_if usage with boolean values and functions
+* Bug 9073: custom attributes with recursive macro function calls causing sigabrt
+
+### What's New in Version 2.3.3
 
 #### Changes
 
-* DB IDO schema update to version `1.12.0`
-    * schema files in `lib/db_ido_{mysql,pgsql}/schema` (source)
-    * Table `programstatus`: New column `program_version`
-    * Table `customvariables` and `customvariablestatus`: New column `is_json` (required for custom attribute array/dictionary support)
-* New features
-    * [GelfWriter](#gelfwriter): Logging check results, state changes, notifications to GELF (graylog2, logstash) #7619
-    * Agent/Client/Node framework #7249
-    * Windows plugins for the client/agent parts #7242 #7243
-* New CLI commands #7245
-    * `icinga2 feature {enable,disable}` replaces `icinga2-{enable,disable}-feature` script  #7250
-    * `icinga2 object list` replaces `icinga2-list-objects` script  #7251
-    * `icinga2 pki` replaces` icinga2-build-{ca,key}` scripts  #7247
-    * `icinga2 repository` manages `/etc/icinga2/repository.d` which must be included in `icinga2.conf` #7255
-    * `icinga2 node` cli command provides node (master, satellite, agent) setup (wizard) and management functionality #7248
-    * `icinga2 daemon` for existing daemon arguments (`-c`, `-C`). Removed `-u` and `-g` parameters in favor of [init.conf](#init-conf).
-    * bash auto-completion & terminal colors #7396
-* Configuration
-    * Former `localhost` example host is now defined in [hosts.conf](#hosts-conf) #7594
-    * All example services moved into advanced apply rules in [services.conf](#services-conf)
-    * Updated downtimes configuration example in [downtimes.conf](#downtimes-conf) #7472
-    * Updated notification apply example in [notifications.conf](#notifications-conf) #7594
-    * Support for object attribute 'zone' #7400
-    * Support setting [object variables in apply rules](#dependencies-apply-custom-attributes) #7479
-    * Support arrays and dictionaries in [custom attributes](#custom-attributes-apply) #6544 #7560
-    * Add [apply for rules](#using-apply-for) for advanced dynamic object generation #7561
-    * New attribute `accept_commands` for [ApiListener](#objecttype-apilistener) #7559
-    * New [init.conf](#init-conf) file included first containing new constants `RunAsUser` and `RunAsGroup`.
-* Cluster
-    * Add [CSR Auto-Signing support](#csr-autosigning-requirements) using generated ticket #7244
-    * Allow to [execute remote commands](#icinga2-remote-monitoring-client-command-execution) on endpoint clients #7559
-* Perfdata
-    * [PerfdataWriter](#writing-performance-data-files): Don't change perfdata, pass through from plugins #7268
-    * [GraphiteWriter](#graphite-carbon-cache-writer): Add warn/crit/min/max perfdata and downtime_depth stats values #7366 #6946
-* Packages
-    * `python-icinga2` package dropped in favor of integrated cli commands #7245
-    * Windows Installer for the agent parts #7243
-
-> **Note**
->
->  Please remove `conf.d/hosts/localhost*` after verifying your updated configuration!
+* New function: parse_performance_data
+* Include more details in --version
+* Improve documentation
+* Bugfixes
 
 #### Issues
 
-* Feature #6544: Support for array in custom variable.
-* Feature #6946: Add downtime depth as statistic metric for GraphiteWriter
-* Feature #7187: Document how to use multiple assign/ignore statements with logical "and" & "or"
-* Feature #7199: Cli commands: add filter capability to 'object list'
-* Feature #7241: Windows Wizard
-* Feature #7242: Windows plugins
-* Feature #7243: Windows installer
-* Feature #7244: CSR auto-signing
-* Feature #7245: Cli commands
-* Feature #7246: Cli command framework
-* Feature #7247: Cli command: pki
-* Feature #7248: Cli command: Node
-* Feature #7249: Node Repository
-* Feature #7250: Cli command: Feature
-* Feature #7251: Cli command: Object
-* Feature #7252: Cli command: SCM
-* Feature #7253: Cli Commands: Node Repository Blacklist & Whitelist
-* Feature #7254: Documentation: Agent/Satellite Setup
-* Feature #7255: Cli command: Repository
-* Feature #7262: macro processor needs an array printer
-* Feature #7319: Documentation: Add support for locally-scoped variables for host/service in applied Dependency
-* Feature #7334: GraphiteWriter: Add support for customized metric prefix names
-* Feature #7356: Documentation: Cli Commands
-* Feature #7366: GraphiteWriter: Add warn/crit/min/max perfdata values if existing
-* Feature #7370: CLI command: variable
-* Feature #7391: Add program_version column to programstatus table
-* Feature #7396: Implement generic color support for terminals
-* Feature #7400: Remove zone keyword and allow to use object attribute 'zone'
-* Feature #7415: CLI: List disabled features in feature list too
-* Feature #7421: Add -h next to --help
-* Feature #7423: Cli command: Node Setup
-* Feature #7452: Replace cJSON with a better JSON parser
-* Feature #7465: Cli command: Node Setup Wizard (for Satellites and Agents)
-* Feature #7467: Remove virtual agent name feature for localhost
-* Feature #7472: Update downtimes.conf example config
-* Feature #7478: Documentation: Mention 'icinga2 object list' in config validation
-* Feature #7479: Set host/service variable in apply rules
-* Feature #7480: Documentation: Add host/services variables in apply rules
-* Feature #7504: Documentation: Revamp getting started with 1 host and multiple (service) applies
-* Feature #7514: Documentation: Move troubleshooting after the getting started chapter
-* Feature #7524: Documentation: Explain how to manage agent config in central repository
-* Feature #7543: Documentation for arrays & dictionaries in custom attributes and their usage in apply rules for
-* Feature #7559: Execute remote commands on the agent w/o local objects by passing custom attributes
-* Feature #7560: Support dictionaries in custom attributes
-* Feature #7561: Generate objects using apply with foreach in arrays or dictionaries (key => value)
-* Feature #7566: Implement support for arbitrarily complex indexers
-* Feature #7594: Revamp sample configuration: add NodeName host, move services into apply rules schema
-* Feature #7596: Plugin Check Commands: disk is missing '-p', 'x' parameter
-* Feature #7619: Add GelfWriter for writing log events to graylog2/logstash
-* Feature #7620: Documentation: Update Icinga Web 2 installation
-* Feature #7622: Icinga 2 should use less RAM
-* Feature #7680: Conditionally enable MySQL and PostgresSQL, add support for FreeBSD and DragonFlyBSD
-
-* Bug #6547: delaying notifications with times.begin should postpone first notification into that window
-* Bug #7257: default value for "disable_notifications" in service dependencies is set to "false"
-* Bug #7268: Icinga2 changes perfdata order and removes maximum
-* Bug #7272: icinga2 returns exponential perfdata format with check_nt
-* Bug #7275: snmp-load checkcommand has wrong threshold syntax
-* Bug #7276: SLES (Suse Linux Enterprise Server) 11 SP3 package dependency failure
-* Bug #7302: ITL: check_procs and check_http are missing arguments
-* Bug #7324: config parser crashes on unknown attribute in assign
-* Bug #7327: Icinga2 docs: link supported operators from sections about apply rules
-* Bug #7331: Error messages for invalid imports missing
-* Bug #7338: Docs: Default command timeout is 60s not 5m
-* Bug #7339: Importing a CheckCommand in a NotificationCommand results in an exception without stacktrace.
-* Bug #7349: Documentation: Wrong check command for snmp-int(erface)
-* Bug #7351: snmp-load checkcommand has a wrong "-T" param value
-* Bug #7359: Setting snmp_v2 can cause snmp-manubulon-command derived checks to fail
-* Bug #7365: Typo for "HTTP Checks" match in groups.conf
-* Bug #7369: Fix reading perfdata in compat/checkresultreader
-* Bug #7372: custom attribute name 'type' causes empty vars dictionary
-* Bug #7373: Wrong usermod command for external command pipe setup
-* Bug #7378: Commands are auto-completed when they shouldn't be
-* Bug #7379: failed en/disable feature should return error
-* Bug #7380: Debian package root permissions interfere with icinga2 cli commands as icinga user
-* Bug #7392: Schema upgrade files are missing in /usr/share/icinga2-ido-{mysql,pgsql}
-* Bug #7417: CMake warnings on OS X
-* Bug #7428: Documentation: 1-about contribute links to non-existing report a bug howto
-* Bug #7433: Unity build fails on RHEL 5
-* Bug #7446: When replaying logs the secobj attribute is ignored
-* Bug #7473: Performance data via API is broken
-* Bug #7475: can't assign Service to Host in nested HostGroup
-* Bug #7477: Fix typos and other small corrections in documentation
-* Bug #7482: OnStateLoaded isn't called for objects which don't have any state
-* Bug #7483: Hosts/services should not have themselves as parents
-* Bug #7495: Utility::GetFQDN doesn't work on OS X
-* Bug #7503: Icinga2 fails to start due to configuration errors
-* Bug #7520: Use ScriptVariable::Get for RunAsUser/RunAsGroup
-* Bug #7536: Object list dump erraneously evaluates template definitions
-* Bug #7537: Nesting an object in a template causes the template to become non-abstract
-* Bug #7538: There is no __name available to nested objects
-* Bug #7573: link missing in documentation about livestatus
-* Bug #7577: Invalid checkresult object causes Icinga 2 to crash
-* Bug #7579: only notify users on recovery which have been notified before (not-ok state)
-* Bug #7585: Nested templates do not work (anymore)
-* Bug #7586: Exception when executing check
-* Bug #7597: Compilation Error with boost 1.56 under Windows
-* Bug #7599: Plugin execution on Windows does not work
-* Bug #7617: mkclass crashes when called without arguments
-* Bug #7623: Missing state filter 'OK' must not prevent recovery notifications being sent
-* Bug #7624: Installation on Windows fails
-* Bug #7625: IDO module crashes on Windows
-* Bug #7646: Get rid of static boost::mutex variables
-* Bug #7648: Unit tests fail to run
-* Bug #7650: Wrong set of dependency state when a host depends on a service
-* Bug #7681: CreateProcess fails on Windows 7
-* Bug #7688: DebugInfo is missing for nested dictionaries
-
-### Archive
-
-Please check the `ChangeLog` file.
-
-## <a id="icinga2-in-a-nutshell"></a> Icinga 2 in a Nutshell
-
-* Use [Packages](#getting-started)
-
-Look for available packages on http://packages.icinga.org or ask your distribution's maintainer.
-Compiling from source is not recommended.
-
-* Real Distributed Architecture
-
-[Cluster](#distributed-monitoring-high-availability) model for distributed setups, load balancing
-and High-Availability installations (or a combination of them). On-demand configuration
-synchronisation between zones is available, but not mandatory (for example when config management
-tools such as Puppet are used). Secured by SSL x509 certificates, supporting IPv4 and IPv6.
-High Availability for DB IDO: Only active on the current zone master, failover happens automatically.
-
-* Monitoring Remote Clients
-
-Built on proven [cluster](#distributed-monitoring-high-availability) stack,
-[Icinga 2 clients](#icinga2-remote-client-monitoring) can be installed acting as remote satellite or
-agent. Secured communication by SSL x509 certificates, install them with [cli commands](#cli-commands),
-and configure them either locally with discovery on the master, or use them for executing checks and
-event handlers remotely.
-
-
-* High Performance
-
-Multithreaded and scalable for small embedded systems as well as large scale environments.
-Running checks every second is no longer a problem and enables real-time monitoring capabilities.
-Checks, notifications and event handlers [do not block Icinga 2](#differences-1x-2-async-event-execution)
-in its operation. Same goes for performance data writers and the external command pipe, or any
-file writers on disk (`statusdata`).
-Unlike Icinga 1.x the [daemon reload](#differences-1x-2-real-reload) happens asynchronously.
-A child daemon validates the new configuration, the parent process is still doing checks, replicating cluster events, triggering alert notifications, etc. If the configuration validation is ok, all remaining events are synchronized and the child process continues as normal.
-The DB IDO configuration dump and status/historical event updates also runs asynchronously in a queue not blocking the core anymore. The configuration validation itself runs in parallel allowing fast verification checks.
-That way you are not blind (anymore) during a configuration reload and benefit from a real scalable architecture.
-
-* Integrated CLI with Bash Auto-Completion
-
-Enable only the [features](#cli-command-feature) which are currently disabled,
-[list objects](#cli-command-object) generated from [apply rules](#using-apply) or
-[generate SSL x509 certificates](#cli-command-pki) for remote clients or cluster setup.
-Start/stop the Icinga 2 [daemon](#cli-command-daemon) or validate your configuration,
-[manage and install](#cli-command-node) remote clients and service discovery helped
-with black- and whitelists.
-
-* Modular & flexible [features](#features)
-
-Enable only the features you require. Want to use Icinga Web 2 with DB IDO but no status data?
-No problem! Just enable ido-mysql and disable statusdata. Another example: Graphite should be enabled
-on a dedicated cluster node. Enable it over there and point it to the carbon cache socket.
-
-Combine Icinga 2 Core with web user interfaces: Use [Icinga Web 2](#setting-up-icingaweb2), but also
-Web 1.x or Classic UI or your own preferred addon.
-
-* Native support for the [Livestatus protocol](#setting-up-livestatus)
-
-In Icinga2, the 'Livestatus' protocol is available for use as either a UNIX, or TCP socket.
-
-* Native support for [Graphite](#graphite-carbon-cache-writer)
-
-Icinga 2 still supports writing performance data files for graphing addons, but also adds the
-capability of writing performance data directly into a Graphite TCP socket simplifying realtime
-monitoring graphs.
-
-* Native support for writing log events to [GELF](#gelf-writer) receivers (graylog2, Logstash)
-
-Icinga 2 will write all check result, state change and notification event logs into a defined
-[GELF](#gelfwriter) input receiver. Natively provided by [graylog2](http://www.graylog2.org),
-and as additional input type provided by [Logstash](http://logstash.net).
-
-* Dynamic configuration language
-
-Simple [apply](#using-apply) and [assign](#group-assign) rules for creating configuration object
-relationships based on patterns. More advanced features for dynamic object generation using
-[apply for rules](#using-apply-for) helped with arrays and dictionaries for
-[custom attributes](#custom-attributes-apply).
-Supported with [duration literals](#duration-literals) for interval
-attributes, [expression operators](#expression-operators), [function calls](#function-calls) for
-pattern and regex matching and (global) [constants](#constants).
-[Check command configuration](#plugin-check-commands) for common plugins is shipped with Icinga 2 as part of the [Icinga Template Library](#itl).
-
-* Revamped Commands
-
-One command to rule them all - supporting optional and conditional [command arguments](#command-arguments).
-[Environment variables](#command-environment-variables) exported on-demand populated with
-runtime evaluated macros.
-Three types of commands used for different actions: checks, notifications and events.
-Check timeout for commands instead of a global option. Commands also have custom attributes allowing
-you to specify default values.
-There is no plugin output or performance data length restriction anymore compared to Icinga 1.x.
-
-* Custom Runtime Macros
-
-Access [custom attributes](#custom-attributes) with their short name, for example $mysql_user$,
-or any object attribute, for example $host.notes$. Additional macros with runtime and statistic
-information are available as well. Use these [runtime macros](#runtime-custom-attributes) in
-the command line, environment variables and custom attribute assignments.
+* Feature 8685: Show state/type filter names in notice/debug log
+* Feature 8686: Update documentation for "apply for" rules
+* Feature 8693: New function: parse_performance_data
+* Feature 8740: Add "access objects at runtime" examples to advanced section
+* Feature 8761: Include more details in --version
+* Feature 8816: Add "random" CheckCommand for test and demo purposes
+* Feature 8827: Move release info in INSTALL.md into a separate file
+
+* Bug 8660: Update syntax highlighting for 2.3 features
+* Bug 8677: Re-order the object types in alphabetical order
+* Bug 8724: Missing config validator for command arguments 'set_if'
+* Bug 8734: startup.log broken when the DB schema needs an update
+* Bug 8736: Don't update custom vars for each status update
+* Bug 8748: Don't ignore extraneous arguments for functions
+* Bug 8749: Build warnings with CMake 3.1.3
+* Bug 8750: Flex version check does not reject unsupported versions
+* Bug 8753: Fix a typo in the documentation of ICINGA2_WITH_MYSQL and ICINGA2_WITH_PGSQL
+* Bug 8755: Fix VIM syntax highlighting for comments
+* Bug 8757: Add missing keywords in the syntax highlighting files
+* Bug 8762: Plugin "check_http" is missing in Windows environments
+* Bug 8763: Typo in doc library-reference
+* Bug 8764: Revamp migration documentation
+* Bug 8765: Explain processing logic/order of apply rules with for loops
+* Bug 8766: Remove prompt to create a TicketSalt from the wizard
+* Bug 8767: Typo and invalid example in the runtime macro documentation
+* Bug 8769: Improve error message for invalid field access
+* Bug 8770: object Notification + apply Service fails with error "...refers to service which doesn't exist"
+* Bug 8771: Correct HA documentation
+* Bug 8829: Figure out why command validators are not triggered
+* Bug 8834: Return doesn't work inside loops
+* Bug 8844: Segmentation fault when executing "icinga2 pki new-cert"
+* Bug 8862: wrong 'dns_lookup' custom attribute default in command-plugins.conf
+* Bug 8866: Fix incorrect perfdata templates in the documentation
+* Bug 8869: Array in command arguments doesn't work
+
+### What's New in Version 2.3.2
 
-* Notifications simplified
-
-Multiple [notifications](#notifications) for one host or service with existing users
-and notification commands. No more duplicated contacts for different notification types.
-Telling notification filters by state and type, even more fine-grained than Icinga 1.x.
-[Escalation notifications](#notification-escalations) and [delayed notifications](#first-notification-delay)
-are just notifications with an additional begin and/or end time attribute.
+#### Changes
 
-* Dependencies between Hosts and Services
+* Bugfixes
 
-Classic [dependencies](#dependencies) between host and parent hosts, and services and parent services work the
-same way as "mixed" dependencies from a service to a parent host and vice versa. Host checks
-depending on an upstream link port (as service) are not a problem anymore.
-No more additional parents settings - host dependencies already define the host parent relationship
-required for network reachability calculations.
-Set parent host/services based on [host/service custom attributes](#dependencies-apply-custom-attributes)
-generated from your cloud inventory or CMDB and make your dependency rules simple and short.
+#### Issues
 
-* [Recurring Downtimes](#recurring-downtimes)
+* Bug 8721: Log message for cli commands breaks the init script
 
-Forget using cronjobs to set up recurring downtime - you can configure them as Icinga 2 configuration
-objects and specify their active time window.
+### What's New in Version 2.3.1
 
-* Embedded Health Checks
+#### Changes
 
-No more external statistic tool but an [instance](#itl-icinga) and [cluster](#itl-cluster) health
-check providing direct statistics as performance data for your graphing addon, for example Graphite.
+* Bugfixes
 
-* Compatibility with Icinga 1.x
+Please note that this version fixes the default thresholds for the disk check which were inadvertently broken in 2.3.0; if you're using percent-based custom thresholds you will need to add the '%' sign to your custom attributes
 
-All known interfaces are optionally available: [status files](#status-data), [logs](#compat-logging),
-[DB IDO](#configuring-ido) MySQL/PostgreSQL, [performance data](#performance-data),
-[external command pipe](#external-commands) and for migration reasons a
-[checkresult file reader](#check-result-files) too.
-All [Monitoring Plugins](#setting-up-check-plugins) can be integrated into Icinga 2 with
-newly created check command configuration if not already provided.
-[Configuration migration](#configuration-migration) is possible through an external migration tool.
+#### Issues
 
-Detailed [migration hints](#manual-config-migration-hints) explain migration of the Icinga 1.x
-configuration objects into the native Icinga 2 configuration schema.
-Additional information on the differences is documented in the [migration](#differences-1x-2) chapter.
+* Feature 8659: Implement String#contains
 
-* Configuration Syntax Highlighting
+* Bug 8540: Kill signal sent only to check process, not whole process group
+* Bug 8657: Missing program name in 'icinga2 --version'
+* Bug 8658: Fix check_disk thresholds: make sure partitions are the last arguments
+* Bug 8672: Api heartbeat message response time problem
+* Bug 8673: Fix check_disk default thresholds and document the change of unit
+* Bug 8679: Config validation fail because of unexpected new-line
+* Bug 8680: Update documentation for DB IDO HA Run-Once
+* Bug 8683: Make sure that the /var/log/icinga2/crash directory exists
+* Bug 8684: Fix formatting for the GDB stacktrace
+* Bug 8687: Crash in Dependency::Stop
+* Bug 8691: Debian packages do not create /var/log/icinga2/crash
 
-Icinga 2 ships [syntax highlighting](#configuration-syntax-highlighting) for `vim` and `nano` to help
-edit your configuration.
+### What's New in Version 2.3.0
 
-* Puppet modules, Chef Cookbooks, Ansible Playbooks, Salt Formulas, etc
+#### Changes
 
-This is a constant work-in-progress. For details checkout https://dev.icinga.org/projects/icinga-tools
-If you want to contribute to these projects, do not hesitate to contact us at https://support.icinga.org
+* Improved configuration validation
+    * Unnecessary escapes are no longer permitted (e.g. \')
+    * Dashes are no longer permitted in identifier names (as their semantics are ambiguous)
+    * Unused values are detected (e.g. { "-M" })
+    * Validation for time ranges has been improved
+    * Additional validation rules for some object types (Notification and User)
+* New language features
+    * Implement a separate type for boolean values
+    * Support for user-defined functions
+    * Support for conditional statements (if/else)
+    * Support for 'for' and 'while' loops
+    * Support for local variables using the 'var' keyword
+    * New operators: % (modulo), ^ (xor), - (unary minus) and + (unary plus)
+    * Implemented prototype-based methods for most built-in types (e.g. [ 3, 2 ].sort())
+    * Explicit access to local and global variables using the 'locals' and 'globals' keywords
+    * Changed the order in which filters are evaluated for apply rules with 'for'
+    * Make type objects accessible as global variables
+    * Support for using functions in custom attributes
+    * Access objects and their runtime attributes in functions (e.g. get_host(NodeName).state)
+* ITL improvements
+    * Additional check commands were added to the ITL
+    * Additional arguments for existing check commands
+* CLI improvements
+    * Add the 'icinga2 console' CLI command which can be used to test expressions
+    * Add the 'icinga2 troubleshoot' CLI command for collecting troubleshooting information
+    * Performance improvements for the 'icinga2 node update-config' CLI command
+    * Implement argument auto-completion for short options (e.g. daemon -c)
+    * 'node setup' and 'node wizard' create backups for existing certificate files
+* Add ignore_soft_states option for Dependency object configuration
+* Fewer threads are used for socket I/O
+* Flapping detection for hosts and services is disabled by default
+* Added support for OpenTSDB
+* New Livestatus tables: hostsbygroup, servicesbygroup, servicesbyhostgroup
+* Include GDB backtrace in crash reports
+* Various documentation improvements
+* Solved a number of issues where cluster instances would not reconnect after intermittent connection problems
+* A lot of other, minor changes
+
+* [DB IDO schema upgrade](17-upgrading-icinga-2.md#upgrading-icinga-2) to `1.13.0` required!
 
-* [Vagrant Demo VM](#vagrant)
+#### Issues
 
-Used for demo cases and development tests. Get Icinga 2 running within minutes and spread the #monitoringlove
-to your friends and colleagues.
+* Feature 3446: Add troubleshooting collect cli command
+* Feature 6109: Don't spawn threads for network connections
+* Feature 6570: Disallow side-effect-free r-value expressions in expression lists
+* Feature 6697: Plugin Check Commands: add check_vmware_esx
+* Feature 6857: Run CheckCommands with C locale (workaround for comma vs dot and plugin api bug)
+* Feature 6858: Add some more PNP details
+* Feature 6868: Disable flapping detection by default
+* Feature 6923: IDO should fill program_end_time on a clean shutdown
+* Feature 7136: extended Manubulon SNMP Check Plugin Command
+* Feature 7209: ITL: Interfacetable
+* Feature 7256: Add OpenTSDB Writer
+* Feature 7292: ITL: Check_Mem.pl
+* Feature 7294: ITL: ESXi-Hardware
+* Feature 7326: Add parent soft states option to Dependency object configuration
+* Feature 7361: Livestatus: Add GroupBy tables: hostsbygroup, servicesbygroup, servicesbyhostgroup
+* Feature 7545: Please add labels in SNMP checks
+* Feature 7564: Access object runtime attributes in custom vars & command arguments
+* Feature 7610: Variable from for loop not usable in assign statement
+* Feature 7700: Evaluate apply/object rules when the parent objects are created
+* Feature 7702: Add an option that hides CLI commands
+* Feature 7704: ConfigCompiler::HandleInclude* should return an AST node
+* Feature 7706: ConfigCompiler::Compile* should return an AST node
+* Feature 7748: Redesign how stack frames work for scripts
+* Feature 7767: Rename _DEBUG to I2_DEBUG
+* Feature 7774: Implement an AST Expression for T_CONST
+* Feature 7778: Missing check_disk output on Windows
+* Feature 7784: Implement the DISABLE_HOST_SVC_NOTIFICATIONS and ENABLE_HOST_SVC_NOTIFICATIONS commands
+* Feature 7793: Don't build db_ido when both MySQL and PostgreSQL aren't enabled
+* Feature 7794: Implement an option to disable building the Livestatus module
+* Feature 7795: Implement an option to disable building the Demo component
+* Feature 7805: Implement unit tests for the config parser
+* Feature 7807: Move the cast functions into libbase
+* Feature 7813: Implement the % operator
+* Feature 7816: Document operator precedence
+* Feature 7822: Make the config parser thread-safe
+* Feature 7823: Figure out whether Number + String should implicitly convert the Number argument to a string
+* Feature 7824: Implement the "if" and "else" keywords
+* Feature 7873: Plugin Check Commands: Add icmp
+* Feature 7879: Windows agent is missing the standard plugin check_ping
+* Feature 7883: Implement official support for user-defined functions and the "for" keyword
+* Feature 7901: Implement socket_path attribute for the IdoMysqlConnection class
+* Feature 7910: The lexer shouldn't accept escapes for characters which don't have to be escaped
+* Feature 7925: Move the config file for the ido-*sql features into the icinga2-ido-* packages
+* Feature 8016: Documentation enhancement for snmp traps and passive checks.
+* Feature 8019: Register type objects as global variables
+* Feature 8020: Improve output of ToString for type objects
+* Feature 8030: Evaluate usage of function()
+* Feature 8033: Allow name changed from inside the object
+* Feature 8040: Disallow calling strings as functions
+* Feature 8043: Implement a boolean sub-type for the Value class
+* Feature 8047: ConfigCompiler::HandleInclude should return an inline dictionary
+* Feature 8060: Windows plugins should behave like their Linux cousins
+* Feature 8065: Implement a way to remove dictionary keys
+* Feature 8071: Implement a way to call methods on objects
+* Feature 8074: Figure out how variable scopes should work
+* Feature 8078: Backport i2tcl's error reporting functionality into "icinga2 console"
+* Feature 8096: Document the new language features in 2.3
+* Feature 8121: feature enable should use relative symlinks
+* Feature 8133: Implement line-continuation for the "console" command
+* Feature 8169: Implement additional methods for strings
+* Feature 8172: Assignments shouldn't have a "return" value
+* Feature 8195: Host/Service runtime macro downtime_depth
+* Feature 8226: Make invalid log-severity option output an error instead of a warning
+* Feature 8244: Implement keywords to explicitly access globals/locals
+* Feature 8259: The check "hostalive" is not working with ipv6
+* Feature 8269: Implement the while keyword
+* Feature 8277: Add macros $host.check_source$ and $service.check_source$
+* Feature 8290: Make operators &&, || behave like in JavaScript
+* Feature 8291: Implement validator support for function objects
+* Feature 8293: The Zone::global attribute is not documented
+* Feature 8316: Extend disk checkcommand
+* Feature 8322: Implement Array#join
+* Feature 8371: Add path information for objects in object list
+* Feature 8374: Add timestamp support for Graphite
+* Feature 8386: Add documentation for cli command 'console'
+* Feature 8393: Implement support for Json.encode and Json.decode
+* Feature 8394: Implement continue/break keywords
+* Feature 8399: Backup certificate files in 'node setup'
+* Feature 8410: udp check command is missing arguments.
+* Feature 8414: Add ITL check command for check_ipmi_sensor
+* Feature 8429: add webinject checkcommand
+* Feature 8465: Add the ability to use a CA certificate as a way of verifying hosts for CSR autosigning
+* Feature 8467: introduce time dependent variable values
+* Feature 8498: Snmp CheckCommand misses various options
+* Feature 8515: Show slave lag for the cluster-zone check
+* Feature 8522: Update Remote Client/Distributed Monitoring Documentation
+* Feature 8527: Change Livestatus query log level to 'notice'
+* Feature 8548: Add support for else-if
+* Feature 8575: Include GDB backtrace in crash reports
+* Feature 8599: Remove macro argument for IMPL_TYPE_LOOKUP
+* Feature 8600: Add validator for time ranges in ScheduledDowntime objects
+* Feature 8610: Support the SNI TLS extension
+* Feature 8621: Add check commands for NSClient++
+* Feature 8648: Document closures ('use')
+
+* Bug 6171: Remove name and return value for stats functions
+* Bug 6959: Scheduled start time will be ignored if the host or service is already in a problem state
+* Bug 7311: Invalid macro results in exception
+* Bug 7542: Update validators for CustomVarObject
+* Bug 7576: validate configured legacy timeperiod ranges
+* Bug 7582: Variable expansion is single quoted.
+* Bug 7644: Unity build doesn't work with MSVC
+* Bug 7647: Avoid rebuilding libbase when the version number changes
+* Bug 7731: Reminder notifications not being sent but logged every 5 secs
+* Bug 7765: DB IDO: Duplicate entry icinga_{host,service}dependencies
+* Bug 7800: Fix the shift/reduce conflicts in the parser
+* Bug 7802: Change parameter type for include and include_recursive to T_STRING
+* Bug 7808: Unterminated string literals should cause parser to return an error
+* Bug 7809: Scoping rules for "for" are broken
+* Bug 7810: Return values for functions are broken
+* Bug 7811: The __return keyword is broken
+* Bug 7812: Validate array subscripts
+* Bug 7814: Set expression should check whether LHS is a null pointer
+* Bug 7815: - operator doesn't work in expressions
+* Bug 7826: Compiler warnings
+* Bug 7830: - shouldn't be allowed in identifiers
+* Bug 7871: Missing persistent_comment, notify_contact columns for acknowledgement table
+* Bug 7894: Fix warnings when using CMake 3.1.0
+* Bug 7895: Serialize() fails to serialize objects which don't have a registered type
+* Bug 7995: Windows Agent: Missing directory "zones" in setup
+* Bug 8018: Value("").IsEmpty() should return true
+* Bug 8029: operator precedence for % and > is incorrect
+* Bug 8041: len() overflows
+* Bug 8061: Confusing error message for import
+* Bug 8067: Require at least one user for notification objects (user or as member of user_groups)
+* Bug 8076: icinga 2 Config Error needs to be more verbose
+* Bug 8081: Location info for strings is incorrect
+* Bug 8100: POSTGRES IDO: invalid syntax for integer: "true" while trying to update table icinga_hoststatus
+* Bug 8111: User::ValidateFilters isn't being used
+* Bug 8117: Agent checks fail when there's already a host with the same name
+* Bug 8122: Config file passing validation causes segfault
+* Bug 8132: Debug info for indexer is incorrect
+* Bug 8136: Icinga crashes when config file name is invalid
+* Bug 8164: escaped backslash in string literals
+* Bug 8166: parsing include_recursive
+* Bug 8173: Segfault on icinga::String::operator= when compiling configuration
+* Bug 8175: Compiler warnings
+* Bug 8179: Exception on missing config files
+* Bug 8184: group assign fails with bad lexical cast when evaluating rules
+* Bug 8185: Argument auto-completion doesn't work for short options
+* Bug 8211: icinga2 node update should not write config for blacklisted zones/host
+* Bug 8230: Lexer term for T_ANGLE_STRING is too aggressive
+* Bug 8249: Problems using command_endpoint inside HA zone
+* Bug 8257: Report missing command objects on remote agent
+* Bug 8260: icinga2 node wizard: Create backups of certificates
+* Bug 8289: Livestatus operator =~ is not case-insensitive
+* Bug 8294: Running icinga2 command as non privilged user raises error
+* Bug 8298: notify flag is ignored in ACKNOWLEDGE_*_PROBLEM commands
+* Bug 8300: ApiListener::ReplayLog shouldn't hold mutex lock during call to Socket::Poll
+* Bug 8307: PidPath, VarsPath, ObjectsPath and StatePath no longer read from init.conf
+* Bug 8309: Crash in ScheduledDowntime::CreateNextDowntime
+* Bug 8313: Incorrectly formatted timestamp in .timestamp file
+* Bug 8318: Remote Clients: Add manual setup cli commands
+* Bug 8323: Apply rule '' for host does not match anywhere!
+* Bug 8333: Icinga2 master doesn't change check-status when "accept_commands = true" is not set at client node
+* Bug 8372: Stacktrace on Endpoint not belonging to a zone or multiple zones
+* Bug 8383: last_hard_state missing in StatusDataWriter
+* Bug 8387: StatusDataWriter: Wrong host notification filters (broken fix in #8192)
+* Bug 8388: Config sync authoritative file never created
+* Bug 8389: Added downtimes must be triggered immediately if checkable is Not-OK
+* Bug 8390: Agent writes CR CR LF in synchronized config files
+* Bug 8397: Icinga2 config reset after package update (centos6.6)
+* Bug 8425: DB IDO: Duplicate entry icinga_scheduleddowntime
+* Bug 8433: Make the arguments for the stats functions const-ref
+* Bug 8434: Build fails on OpenBSD
+* Bug 8436: Indicate that Icinga2 is shutting down in case of a fatal error
+* Bug 8438: DB IDO {host,service}checks command_line value is "Object of type 'icinga::Array'"
+* Bug 8444: Don't attempt to restore program state from non-existing state file
+* Bug 8452: Livestatus query on commands table with custom vars fails
+* Bug 8461: Don't request heartbeat messages until after we've synced the log
+* Bug 8473: Exception in WorkQueue::StatusTimerHandler
+* Bug 8488: Figure out why 'node update-config' becomes slow over time
+* Bug 8493: Misleading ApiListener connection log messages on a master (Endpoint vs Zone)
+* Bug 8496: Icinga doesn't update long_output in DB
+* Bug 8511: Deadlock with DB IDO dump and forcing a scheduled check
+* Bug 8517: Config parser fails non-deterministic on Notification missing Checkable
+* Bug 8519: apply-for incorrectly converts loop var to string
+* Bug 8529: livestatus limit header not working
+* Bug 8535: Crash in ApiEvents::RepositoryTimerHandler
+* Bug 8536: Valgrind warning for ExternalCommandListener::CommandPipeThread
+* Bug 8537: Crash in DbObject::SendStatusUpdate
+* Bug 8544: Hosts: process_performance_data = 0 in database even though enable_perfdata = 1 in config
+* Bug 8555: Don't accept config updates for zones for which we have an authoritative copy of the config
+* Bug 8559: check_memory tool shows incorrect memory size on windows
+* Bug 8593: Memory leak in Expression::GetReference
+* Bug 8594: Improve Livestatus query performance
+* Bug 8596: Dependency: Validate *_{host,service}_name objects on their existance
+* Bug 8604: Attribute hints don't work for nested attributes
+* Bug 8627: Icinga2 shuts down when service is reloaded
+* Bug 8638: Fix a typo in documentation