]> granicus.if.org Git - icinga2/blob - doc/1-about.md
Update documentation
[icinga2] / doc / 1-about.md
1 # <a id="about-icinga2"></a> About Icinga 2
2
3 ## <a id="what-is-icinga2"></a> What is Icinga 2?
4
5 Icinga 2 is an open source monitoring system which checks the availability of your
6 network resources, notifies users of outages, and generates performance data for reporting.
7
8 Scalable and extensible, Icinga 2 can monitor large, complex environments across
9 multiple locations.
10
11 ## <a id="licensing"></a> Licensing
12
13 Icinga 2 and the Icinga 2 documentation are licensed under the terms of the GNU
14 General Public License Version 2, you will find a copy of this license in the
15 LICENSE file included in the source package.
16
17 ## <a id="support"></a> Support
18
19 Support for Icinga 2 is available in a number of ways. Please have a look at
20 the support overview page at https://support.icinga.org.
21
22 ## <a id="contribute"></a> Contribute
23
24 There are many ways to contribute to Icinga - whether it be sending patches, testing,
25 reporting bugs, or reviewing and updating the documentation. Every contribution
26 is appreciated!
27
28 Please get in touch with the Icinga team at https://www.icinga.org/community/.
29
30 ### <a id="development"></a> Icinga 2 Development
31
32 You can follow Icinga 2's development closely by checking
33 out these resources:
34
35 * [Development Bug Tracker](https://dev.icinga.org/projects/i2): [How to report a bug?](https://www.icinga.org/icinga/faq/)
36 * Git Repositories: [main mirror on icinga.org](https://git.icinga.org/?p=icinga2.git;a=summary) [release mirror at github.com](https://github.com/Icinga/icinga2)
37 * [Git Checkins Mailinglist](https://lists.icinga.org/mailman/listinfo/icinga-checkins)
38 * [Development](https://lists.icinga.org/mailman/listinfo/icinga-devel) and [Users](https://lists.icinga.org/mailman/listinfo/icinga-users) Mailinglists
39 * [#icinga-devel on irc.freenode.net](http://webchat.freenode.net/?channels=icinga-devel) including a Git Commit Bot
40
41 For general support questions, please refer to the [community support channels](https://support.icinga.org).
42
43 ### <a id="how-to-report-bug-feature-requests"></a> How to Report a Bug or Feature Request
44
45 More details in the [Icinga FAQ](https://www.icinga.org/icinga/faq/).
46
47 * [Register](https://exchange.icinga.org/authentication/register) an Icinga account.
48 * Create a new issue at the [Icinga 2 Development Tracker](https://dev.icinga.org/projects/i2).
49 * When reporting a bug, please include the details described in the [Troubleshooting](#troubleshooting-information-required) chapter (version, configs, logs, etc).
50
51 ## <a id="demo-vm"></a> Demo VM
52
53 Icinga 2 is available as [Vagrant Demo VM](#vagrant).
54
55 ## <a id="whats-new"></a> What's new
56
57 ### What's New in Version 2.2.3
58
59 #### Changes
60
61 * Bugfixes
62
63 #### Issues
64
65 * Bug #8063: Volatile checks trigger invalid notifications on OK->OK state changes
66 * Bug #8125: Incorrect ticket shouldn't cause "node wizard" to terminate
67 * Bug #8126: Icinga 2.2.2 doesn't build on i586 SUSE distributions
68 * Bug #8143: Windows plugin check_service.exe can't find service NTDS
69 * Bug #8144: Arguments without values are not used on plugin exec
70 * Bug #8147: check_interval must be greater than 0 error on update-config
71 * Bug #8152: DB IDO query queue limit reached on reload
72 * Bug #8171: Typo in example of StatusDataWriter
73 * Bug #8178: Icinga 2.2.2 segfaults on FreeBSD
74 * Bug #8181: icinga2 node update config shows hex instead of human readable names
75 * Bug #8182: Segfault on update-config old empty config
76
77 ### What's New in Version 2.2.2
78
79 #### Changes
80
81 * Bugfixes
82
83 #### Issues
84
85 * Bug #7045: icinga2 init-script doesn't validate configuration on reload action
86 * Bug #7064: Missing host downtimes/comments in Livestatus
87 * Bug #7301: Docs: Better explaination of dependency state filters
88 * Bug #7314: double macros in command arguments seems to lead to exception
89 * Bug #7511: Feature `compatlog' should flush output buffer on every new line
90 * Bug #7518: update-config fails to create hosts
91 * Bug #7591: CPU usage at 100% when check_interval = 0 in host object definition
92 * Bug #7618: Repository does not support services which have a slash in their name
93 * Bug #7683: If a parent host goes down, the child host isn't marked as unrechable in the db ido
94 * Bug #7707: "node wizard" shouldn't crash when SaveCert fails
95 * Bug #7745: Cluster heartbeats need to be more aggressive
96 * Bug #7769: The unit tests still crash sometimes
97 * Bug #7863: execute checks locally if command_endpoint == local endpoint
98 * Bug #7878: Segfault on issuing node update-config
99 * Bug #7882: Improve error reporting when libmysqlclient or libpq are missing
100 * Bug #7891: CLI `icinga2 node update-config` doesn't sync configs from remote clients as expected
101 * Bug #7913: /usr/lib/icinga2 is not owned by a package
102 * Bug #7914: SUSE packages %set_permissions post statement wasn't moved to common
103 * Bug #7917: update_config not updating configuration
104 * Bug #7920: Test Classic UI config file with Apache 2.4
105 * Bug #7929: Apache 2.2 fails with new apache conf
106 * Bug #8002: typeof() seems to return null for arrays and dictionaries
107 * Bug #8003: SIGABRT while evaluating apply rules
108 * Bug #8028: typeof does not work for numbers
109 * Bug #8039: Livestatus: Replace unixcat with nc -U
110 * Bug #8048: Wrong command in documentation for installing Icinga 2 pretty printers.
111 * Bug #8050: exception during config check
112 * Bug #8051: Update host examples in Dependencies for Network Reachability documentation
113 * Bug #8058: DB IDO: Missing last_hard_state column update in {host,service}status tables
114 * Bug #8059: Unit tests fail on FreeBSD
115 * Bug #8066: Setting a dictionary key to null does not cause the key/value to be removed
116 * Bug #8070: Documentation: Add note on default notification interval in getting started notifications.conf
117 * Bug #8075: No option to specify timeout to check_snmp and snmp manubulon commands
118
119 ### What's New in Version 2.2.1
120
121 #### Changes
122
123 * Support arrays in [command argument macros](#command-passing-parameters) #6709
124     * 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).
125 * Bugfixes
126
127 #### Issues
128
129 * Feature #6709: Support for arrays in macros
130 * Feature #7463: Update spec file to use yajl-devel
131 * Feature #7739: The classicui Apache conf doesn't support Apache 2.4
132 * Feature #7747: Increase default timeout for NRPE checks
133 * Feature #7867: Document how arrays in macros work
134
135 * Bug #7173: service icinga2 status gives wrong information when run as unprivileged user
136 * Bug #7602: livestatus large amount of submitting unix socket command results in broken pipes
137 * Bug #7613: icinga2 checkconfig should fail if group given for command files does not exist
138 * Bug #7671: object and template with the same name generate duplicate object error
139 * Bug #7708: Built-in commands shouldn't be run on the master instance in remote command execution mode
140 * Bug #7725: Windows wizard uses incorrect CLI command
141 * Bug #7726: Windows wizard is missing --zone argument
142 * Bug #7730: Restart Icinga - Error Restoring program state from file '/var/lib/icinga2/icinga2.state'
143 * Bug #7735: 2.2.0 has out-of-date icinga2 man page
144 * Bug #7738: systemd rpm scripts are run in wrong package
145 * Bug #7740: /usr/sbin/icinga-prepare-dirs conflicts in the bin and common package
146 * Bug #7741: Icinga 2.2 misses the build requirement libyajl-devel for SUSE distributions
147 * Bug #7743: Icinga2 node add failed with unhandled exception
148 * Bug #7754: Incorrect error message for localhost
149 * Bug #7770: Objects created with node update-config can't be seen in Classic UI
150 * Bug #7786: Move the icinga2-prepare-dirs script elsewhere
151 * Bug #7806: !in operator returns incorrect result
152 * Bug #7828: Verify if master radio box is disabled in the Windows wizard
153 * Bug #7847: Wrong information in section "Linux Client Setup Wizard for Remote Monitoring"
154 * Bug #7862: Segfault in CA handling
155 * Bug #7868: Documentation: Explain how unresolved macros are handled
156 * Bug #7890: Wrong permission in run directory after restart
157 * Bug #7896: Fix Apache config in the Debian package
158
159 ### What's New in Version 2.2.0
160
161 #### Changes
162
163 * DB IDO schema update to version `1.12.0`
164     * schema files in `lib/db_ido_{mysql,pgsql}/schema` (source)
165     * Table `programstatus`: New column `program_version`
166     * Table `customvariables` and `customvariablestatus`: New column `is_json` (required for custom attribute array/dictionary support)
167 * New features
168     * [GelfWriter](#gelfwriter): Logging check results, state changes, notifications to GELF (graylog2, logstash) #7619
169     * Agent/Client/Node framework #7249
170     * Windows plugins for the client/agent parts #7242 #7243
171 * New CLI commands #7245
172     * `icinga2 feature {enable,disable}` replaces `icinga2-{enable,disable}-feature` script  #7250
173     * `icinga2 object list` replaces `icinga2-list-objects` script  #7251
174     * `icinga2 pki` replaces` icinga2-build-{ca,key}` scripts  #7247
175     * `icinga2 repository` manages `/etc/icinga2/repository.d` which must be included in `icinga2.conf` #7255
176     * `icinga2 node` CLI command provides node (master, satellite, agent) setup (wizard) and management functionality #7248
177     * `icinga2 daemon` for existing daemon arguments (`-c`, `-C`). Removed `-u` and `-g` parameters in favor of [init.conf](#init-conf).
178     * bash auto-completion & terminal colors #7396
179 * Configuration
180     * Former `localhost` example host is now defined in [hosts.conf](#hosts-conf) #7594
181     * All example services moved into advanced apply rules in [services.conf](#services-conf)
182     * Updated downtimes configuration example in [downtimes.conf](#downtimes-conf) #7472
183     * Updated notification apply example in [notifications.conf](#notifications-conf) #7594
184     * Support for object attribute 'zone' #7400
185     * Support setting [object variables in apply rules](#dependencies-apply-custom-attributes) #7479
186     * Support arrays and dictionaries in [custom attributes](#custom-attributes-apply) #6544 #7560
187     * Add [apply for rules](#using-apply-for) for advanced dynamic object generation #7561
188     * New attribute `accept_commands` for [ApiListener](#objecttype-apilistener) #7559
189     * New [init.conf](#init-conf) file included first containing new constants `RunAsUser` and `RunAsGroup`.
190 * Cluster
191     * Add [CSR Auto-Signing support](#csr-autosigning-requirements) using generated ticket #7244
192     * Allow to [execute remote commands](#icinga2-remote-monitoring-client-command-execution) on endpoint clients #7559
193 * Perfdata
194     * [PerfdataWriter](#writing-performance-data-files): Don't change perfdata, pass through from plugins #7268
195     * [GraphiteWriter](#graphite-carbon-cache-writer): Add warn/crit/min/max perfdata and downtime_depth stats values #7366 #6946
196 * Packages
197     * `python-icinga2` package dropped in favor of integrated CLI commands #7245
198     * Windows Installer for the agent parts #7243
199
200 > **Note**
201 >
202 >  Please remove `conf.d/hosts/localhost*` after verifying your updated configuration!
203
204 #### Issues
205
206 * Feature #6544: Support for array in custom variable.
207 * Feature #6946: Add downtime depth as statistic metric for GraphiteWriter
208 * Feature #7187: Document how to use multiple assign/ignore statements with logical "and" & "or"
209 * Feature #7199: Cli commands: add filter capability to 'object list'
210 * Feature #7241: Windows Wizard
211 * Feature #7242: Windows plugins
212 * Feature #7243: Windows installer
213 * Feature #7244: CSR auto-signing
214 * Feature #7245: Cli commands
215 * Feature #7246: Cli command framework
216 * Feature #7247: Cli command: pki
217 * Feature #7248: Cli command: Node
218 * Feature #7249: Node Repository
219 * Feature #7250: Cli command: Feature
220 * Feature #7251: Cli command: Object
221 * Feature #7252: Cli command: SCM
222 * Feature #7253: Cli Commands: Node Repository Blacklist & Whitelist
223 * Feature #7254: Documentation: Agent/Satellite Setup
224 * Feature #7255: Cli command: Repository
225 * Feature #7262: macro processor needs an array printer
226 * Feature #7319: Documentation: Add support for locally-scoped variables for host/service in applied Dependency
227 * Feature #7334: GraphiteWriter: Add support for customized metric prefix names
228 * Feature #7356: Documentation: Cli Commands
229 * Feature #7366: GraphiteWriter: Add warn/crit/min/max perfdata values if existing
230 * Feature #7370: CLI command: variable
231 * Feature #7391: Add program_version column to programstatus table
232 * Feature #7396: Implement generic color support for terminals
233 * Feature #7400: Remove zone keyword and allow to use object attribute 'zone'
234 * Feature #7415: CLI: List disabled features in feature list too
235 * Feature #7421: Add -h next to --help
236 * Feature #7423: Cli command: Node Setup
237 * Feature #7452: Replace cJSON with a better JSON parser
238 * Feature #7465: Cli command: Node Setup Wizard (for Satellites and Agents)
239 * Feature #7467: Remove virtual agent name feature for localhost
240 * Feature #7472: Update downtimes.conf example config
241 * Feature #7478: Documentation: Mention 'icinga2 object list' in config validation
242 * Feature #7479: Set host/service variable in apply rules
243 * Feature #7480: Documentation: Add host/services variables in apply rules
244 * Feature #7504: Documentation: Revamp getting started with 1 host and multiple (service) applies
245 * Feature #7514: Documentation: Move troubleshooting after the getting started chapter
246 * Feature #7524: Documentation: Explain how to manage agent config in central repository
247 * Feature #7543: Documentation for arrays & dictionaries in custom attributes and their usage in apply rules for
248 * Feature #7559: Execute remote commands on the agent w/o local objects by passing custom attributes
249 * Feature #7560: Support dictionaries in custom attributes
250 * Feature #7561: Generate objects using apply with foreach in arrays or dictionaries (key => value)
251 * Feature #7566: Implement support for arbitrarily complex indexers
252 * Feature #7594: Revamp sample configuration: add NodeName host, move services into apply rules schema
253 * Feature #7596: Plugin Check Commands: disk is missing '-p', 'x' parameter
254 * Feature #7619: Add GelfWriter for writing log events to graylog2/logstash
255 * Feature #7620: Documentation: Update Icinga Web 2 installation
256 * Feature #7622: Icinga 2 should use less RAM
257 * Feature #7680: Conditionally enable MySQL and PostgresSQL, add support for FreeBSD and DragonFlyBSD
258
259 * Bug #6547: delaying notifications with times.begin should postpone first notification into that window
260 * Bug #7257: default value for "disable_notifications" in service dependencies is set to "false"
261 * Bug #7268: Icinga2 changes perfdata order and removes maximum
262 * Bug #7272: icinga2 returns exponential perfdata format with check_nt
263 * Bug #7275: snmp-load checkcommand has wrong threshold syntax
264 * Bug #7276: SLES (Suse Linux Enterprise Server) 11 SP3 package dependency failure
265 * Bug #7302: ITL: check_procs and check_http are missing arguments
266 * Bug #7324: config parser crashes on unknown attribute in assign
267 * Bug #7327: Icinga2 docs: link supported operators from sections about apply rules
268 * Bug #7331: Error messages for invalid imports missing
269 * Bug #7338: Docs: Default command timeout is 60s not 5m
270 * Bug #7339: Importing a CheckCommand in a NotificationCommand results in an exception without stacktrace.
271 * Bug #7349: Documentation: Wrong check command for snmp-int(erface)
272 * Bug #7351: snmp-load checkcommand has a wrong "-T" param value
273 * Bug #7359: Setting snmp_v2 can cause snmp-manubulon-command derived checks to fail
274 * Bug #7365: Typo for "HTTP Checks" match in groups.conf
275 * Bug #7369: Fix reading perfdata in compat/checkresultreader
276 * Bug #7372: custom attribute name 'type' causes empty vars dictionary
277 * Bug #7373: Wrong usermod command for external command pipe setup
278 * Bug #7378: Commands are auto-completed when they shouldn't be
279 * Bug #7379: failed en/disable feature should return error
280 * Bug #7380: Debian package root permissions interfere with icinga2 CLI commands as icinga user
281 * Bug #7392: Schema upgrade files are missing in /usr/share/icinga2-ido-{mysql,pgsql}
282 * Bug #7417: CMake warnings on OS X
283 * Bug #7428: Documentation: 1-about contribute links to non-existing report a bug howto
284 * Bug #7433: Unity build fails on RHEL 5
285 * Bug #7446: When replaying logs the secobj attribute is ignored
286 * Bug #7473: Performance data via API is broken
287 * Bug #7475: can't assign Service to Host in nested HostGroup
288 * Bug #7477: Fix typos and other small corrections in documentation
289 * Bug #7482: OnStateLoaded isn't called for objects which don't have any state
290 * Bug #7483: Hosts/services should not have themselves as parents
291 * Bug #7495: Utility::GetFQDN doesn't work on OS X
292 * Bug #7503: Icinga2 fails to start due to configuration errors
293 * Bug #7520: Use ScriptVariable::Get for RunAsUser/RunAsGroup
294 * Bug #7536: Object list dump erraneously evaluates template definitions
295 * Bug #7537: Nesting an object in a template causes the template to become non-abstract
296 * Bug #7538: There is no __name available to nested objects
297 * Bug #7573: link missing in documentation about livestatus
298 * Bug #7577: Invalid checkresult object causes Icinga 2 to crash
299 * Bug #7579: only notify users on recovery which have been notified before (not-ok state)
300 * Bug #7585: Nested templates do not work (anymore)
301 * Bug #7586: Exception when executing check
302 * Bug #7597: Compilation Error with boost 1.56 under Windows
303 * Bug #7599: Plugin execution on Windows does not work
304 * Bug #7617: mkclass crashes when called without arguments
305 * Bug #7623: Missing state filter 'OK' must not prevent recovery notifications being sent
306 * Bug #7624: Installation on Windows fails
307 * Bug #7625: IDO module crashes on Windows
308 * Bug #7646: Get rid of static boost::mutex variables
309 * Bug #7648: Unit tests fail to run
310 * Bug #7650: Wrong set of dependency state when a host depends on a service
311 * Bug #7681: CreateProcess fails on Windows 7
312 * Bug #7688: DebugInfo is missing for nested dictionaries
313
314 ### Archive
315
316 Please check the `ChangeLog` file.
317
318 ## <a id="icinga2-in-a-nutshell"></a> Icinga 2 in a Nutshell
319
320 * Use [Packages](#getting-started)
321
322 Look for available packages on http://packages.icinga.org or ask your distribution's maintainer.
323 Compiling from source is not recommended.
324
325 * Real Distributed Architecture
326
327 [Cluster](#distributed-monitoring-high-availability) model for distributed setups, load balancing
328 and High-Availability installations (or a combination of them). On-demand configuration
329 synchronisation between zones is available, but not mandatory (for example when config management
330 tools such as Puppet are used). Secured by TLS with certificates, supporting IPv4 and IPv6.
331 High Availability for DB IDO: Only active on the current zone master, failover happens automatically.
332
333 * Monitoring Remote Clients
334
335 Built on proven [cluster](#distributed-monitoring-high-availability) stack,
336 [Icinga 2 clients](#icinga2-remote-client-monitoring) can be installed acting as remote satellite or
337 agent. Secured communication by TLS with certificates, install them with [CLI commands](#cli-commands),
338 and configure them either locally with discovery on the master, or use them for executing checks and
339 event handlers remotely.
340
341
342 * High Performance
343
344 Multithreaded and scalable for small embedded systems as well as large scale environments.
345 Running checks every second is no longer a problem and enables real-time monitoring capabilities.
346 Checks, notifications and event handlers [do not block Icinga 2](#differences-1x-2-async-event-execution)
347 in its operation. Same goes for performance data writers and the external command pipe, or any
348 file writers on disk (`statusdata`).
349 Unlike Icinga 1.x the [daemon reload](#differences-1x-2-real-reload) happens asynchronously.
350 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.
351 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.
352 That way you are not blind (anymore) during a configuration reload and benefit from a real scalable architecture.
353
354 * Integrated CLI with Bash Auto-Completion
355
356 Enable only the [features](#cli-command-feature) which are currently disabled,
357 [list objects](#cli-command-object) generated from [apply rules](#using-apply) or
358 [generate X.509 certificates](#cli-command-pki) for remote clients or cluster setup.
359 Start/stop the Icinga 2 [daemon](#cli-command-daemon) or validate your configuration,
360 [manage and install](#cli-command-node) remote clients and service discovery helped
361 with black- and whitelists.
362
363 * Modular & flexible [features](#features)
364
365 Enable only the features you require. Want to use Icinga Web 2 with DB IDO but no status data?
366 No problem! Just enable ido-mysql and disable statusdata. Another example: Graphite should be enabled
367 on a dedicated cluster node. Enable it over there and point it to the carbon cache socket.
368
369 Combine Icinga 2 Core with web user interfaces: Use [Icinga Web 2](#setting-up-icingaweb2), but also
370 Web 1.x or Classic UI or your own preferred addon.
371
372 * Native support for the [Livestatus protocol](#setting-up-livestatus)
373
374 In Icinga2, the 'Livestatus' protocol is available for use as either a UNIX, or TCP socket.
375
376 * Native support for [Graphite](#graphite-carbon-cache-writer)
377
378 Icinga 2 still supports writing performance data files for graphing addons, but also adds the
379 capability of writing performance data directly into a Graphite TCP socket simplifying realtime
380 monitoring graphs.
381
382 * Native support for writing log events to [GELF](#gelf-writer) receivers (graylog2, Logstash)
383
384 Icinga 2 will write all check result, state change and notification event logs into a defined
385 [GELF](#gelfwriter) input receiver. Natively provided by [graylog2](http://www.graylog2.org),
386 and as additional input type provided by [Logstash](http://logstash.net).
387
388 * Dynamic configuration language
389
390 Simple [apply](#using-apply) and [assign](#group-assign) rules for creating configuration object
391 relationships based on patterns. More advanced features for dynamic object generation using
392 [apply for rules](#using-apply-for) helped with arrays and dictionaries for
393 [custom attributes](#custom-attributes-apply).
394 Supported with [duration literals](#duration-literals) for interval
395 attributes, [expression operators](#expression-operators), [function calls](#function-calls) for
396 pattern and regex matching and (global) [constants](#constants).
397 [Check command configuration](#plugin-check-commands) for common plugins is shipped with Icinga 2 as part of the [Icinga Template Library](#itl).
398
399 * Revamped Commands
400
401 One command to rule them all - supporting optional and conditional [command arguments](#command-arguments).
402 [Environment variables](#command-environment-variables) exported on-demand populated with
403 runtime evaluated macros.
404 Three types of commands used for different actions: checks, notifications and events.
405 Check timeout for commands instead of a global option. Commands also have custom attributes allowing
406 you to specify default values.
407 There is no plugin output or performance data length restriction anymore compared to Icinga 1.x.
408
409 * Custom Runtime Macros
410
411 Access [custom attributes](#custom-attributes) with their short name, for example $mysql_user$,
412 or any object attribute, for example $host.notes$. Additional macros with runtime and statistic
413 information are available as well. Use these [runtime macros](#runtime-custom-attributes) in
414 the command line, environment variables and custom attribute assignments.
415
416 * Notifications simplified
417
418 Multiple [notifications](#notifications) for one host or service with existing users
419 and notification commands. No more duplicated contacts for different notification types.
420 Telling notification filters by state and type, even more fine-grained than Icinga 1.x.
421 [Escalation notifications](#notification-escalations) and [delayed notifications](#first-notification-delay)
422 are just notifications with an additional begin and/or end time attribute.
423
424 * Dependencies between Hosts and Services
425
426 Classic [dependencies](#dependencies) between host and parent hosts, and services and parent services work the
427 same way as "mixed" dependencies from a service to a parent host and vice versa. Host checks
428 depending on an upstream link port (as service) are not a problem anymore.
429 No more additional parents settings - host dependencies already define the host parent relationship
430 required for network reachability calculations.
431 Set parent host/services based on [host/service custom attributes](#dependencies-apply-custom-attributes)
432 generated from your cloud inventory or CMDB and make your dependency rules simple and short.
433
434 * [Recurring Downtimes](#recurring-downtimes)
435
436 Forget using cronjobs to set up recurring downtime - you can configure them as Icinga 2 configuration
437 objects and specify their active time window.
438
439 * Embedded Health Checks
440
441 No more external statistic tool but an [instance](#itl-icinga) and [cluster](#itl-cluster) health
442 check providing direct statistics as performance data for your graphing addon, for example Graphite.
443
444 * Compatibility with Icinga 1.x
445
446 All known interfaces are optionally available: [status files](#status-data), [logs](#compat-logging),
447 [DB IDO](#configuring-ido) MySQL/PostgreSQL, [performance data](#performance-data),
448 [external command pipe](#external-commands) and for migration reasons a
449 [checkresult file reader](#check-result-files) too.
450 All [Monitoring Plugins](#setting-up-check-plugins) can be integrated into Icinga 2 with
451 newly created check command configuration if not already provided.
452 [Configuration migration](#configuration-migration) is possible through an external migration tool.
453
454 Detailed [migration hints](#manual-config-migration-hints) explain migration of the Icinga 1.x
455 configuration objects into the native Icinga 2 configuration schema.
456 Additional information on the differences is documented in the [migration](#differences-1x-2) chapter.
457
458 * Configuration Syntax Highlighting
459
460 Icinga 2 ships [syntax highlighting](#configuration-syntax-highlighting) for `vim` and `nano` to help
461 edit your configuration.
462
463 * Puppet modules, Chef Cookbooks, Ansible Playbooks, Salt Formulas, etc
464
465 This is a constant work-in-progress. For details checkout https://dev.icinga.org/projects/icinga-tools
466 If you want to contribute to these projects, do not hesitate to contact us at https://support.icinga.org
467
468 * [Vagrant Demo VM](#vagrant)
469
470 Used for demo cases and development tests. Get Icinga 2 running within minutes and spread the #monitoringlove
471 to your friends and colleagues.