]> granicus.if.org Git - icinga2/blob - doc/1-about.md
GelfWriter: Add 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.0
58
59 #### Changes
60
61 * DB IDO schema update to version `1.12.0`
62     * schema files in `lib/db_ido_{mysql,pgsql}/schema` (source)
63     * Table `programstatus`: New column `program_version`
64     * Table `customvariables` and `customvariablestatus`: New column `is_json` (required for custom attribute array/dictionary support)
65 * New features
66     * [GelfWriter](#gelfwriter): Logging check results, state changes, notifications to GELF (graylog2, logstash) #7619
67 * New CLI commands #7245
68     * `icinga2 feature {enable,disable}` replaces `icinga2-{enable,disable}-feature` script  #7250
69     * `icinga2 object list` replaces `icinga2-list-objects` script  #7251
70     * `icinga2 pki` replaces` icinga2-build-{ca,key}` scripts  #7247
71     * `icinga2 repository` manages `/etc/icinga2/repository.d` which must be included in `icinga2.conf` #7255
72     * `icinga2 node` cli command provides node (master, satellite, agent) setup (wizard) and management functionality #7248
73     * bash auto-completion & terminal colors #7396
74 * Configuration
75     * Former `localhost` example host is now defined in [hosts.conf](#hosts-conf) #7594
76     * All example services moved into advanced apply rules in [services.conf](#services-conf)
77     * Updated downtimes configuration example in [downtimes.conf](#downtimes-conf) #7472
78     * Updated notification apply example in [notifications.conf](#notifications-conf) #7594
79     * Support for object attribute 'zone' #7400
80     * Support setting object variables in apply rules #7479
81     * Support arrays and dictionaries in custom attributes #6544 #7560
82     * Add [apply for rules](#using-apply-for) for advanced dynamic object generation #7561
83 * Cluster
84     * Add CSR Auto-Signing support using generated ticket #7244
85 * Perfdata
86     * PerfdataWriter: Don't change perfdata, pass through from plugins #7268
87     * GraphiteWriter: Add warn/crit/min/max perfdata and downtime_depth stats values #7366 #6946
88 * Packages
89     * `python-icinga2` package dropped in favor of integrated cli commands #7245
90     * Windows Installer for the agent parts #7243
91
92 > **Note**
93 >
94 >  Please remove `conf.d/hosts/localhost*` after verifying your updated configuration!
95
96 #### Issues
97
98
99
100 ### Archive
101
102 Please check the `ChangeLog` file.
103
104 ## <a id="icinga2-in-a-nutshell"></a> Icinga 2 in a Nutshell
105
106 * Use [Packages](#getting-started)
107
108 Look for available packages on http://packages.icinga.org or ask your distribution's maintainer.
109 Compiling from source is not recommended.
110
111 * Real Distributed Architecture
112
113 [Cluster](#distributed-monitoring-high-availability) model for distributed setups, load balancing
114 and High-Availability installations (or a combination of them). On-demand configuration
115 synchronisation between zones is available, but not mandatory (for example when config management
116 tools such as Puppet are used). Secured by SSL x509 certificates, supporting IPv4 and IPv6.
117 High Availability for DB IDO: Only active on the current zone master, failover happens automatically.
118
119 * Monitoring Remote Clients
120
121 Built on proven [cluster](#distributed-monitoring-high-availability) stack, [Icinga 2 clients](#icinga2-remote-client-monitoring)
122 can be installed acting as remote satellite or agent. Secured communication by SSL x509 certificates,
123 install them with [cli commands](#cli-commands), and configure them either locally with
124 discovery on the master, or use them for executing checks and event handlers remotely.
125
126
127 * High Performance
128
129 Multithreaded and scalable for small embedded systems as well as large scale environments.
130 Running checks every second is no longer a problem and enables real-time monitoring capabilities.
131 Checks, notifications and event handlers [do not block Icinga 2](#differences-1x-2-async-event-execution)
132 in its operation. Same goes for performance data writers and the external command pipe, or any
133 file writers on disk (`statusdata`).
134 Unlike Icinga 1.x the [daemon reload](#differences-1x-2-real-reload) happens asynchronously.
135 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.
136 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.
137 That way you are not blind (anymore) during a configuration reload and benefit from a real scalable architecture.
138
139 * Integrated CLI with Bash Auto-Completion
140
141 Enable only the [features](#cli-command-feature) which are currently disabled,
142 [list objects](#cli-command-object) generated from [apply rules](#using-apply) or
143 [generate SSL x509 certificates](#cli-command-pki) for remote clients or cluster setup.
144 Start/stop the Icinga 2 [daemon](#cli-command-daemon) or validate your configuration,
145 [manage and install](#cli-command-node) remote clients and service discovery helped
146 with black- and whitelists.
147
148 * Modular & flexible [features](#features)
149
150 Enable only the features you require. Want to use Icinga Web 2 with DB IDO but no status data?
151 No problem! Just enable ido-mysql and disable statusdata. Another example: Graphite should be enabled
152 on a dedicated cluster node. Enable it over there and point it to the carbon cache socket.
153
154 Combine Icinga 2 Core with web user interfaces: Use [Icinga Web 2](#setting-up-icingaweb2), but also
155 Web 1.x or Classic UI or your own preferred addon.
156
157 * Native support for the [Livestatus protocol](#setting-up-livestatus)
158
159 In Icinga2, the 'Livestatus' protocol is available for use as either a UNIX, or TCP socket.
160
161 * Native support for [Graphite](#graphite-carbon-cache-writer)
162
163 Icinga 2 still supports writing performance data files for graphing addons, but also adds the
164 capability of writing performance data directly into a Graphite TCP socket simplifying realtime
165 monitoring graphs.
166
167 * Native support for writing log events to [GELF](#gelf-writer) receivers (graylog2, Logstash)
168
169 Icinga 2 will write all check result, state change and notification event logs into a defined
170 [GELF](#gelfwriter) input receiver. Natively provided by [graylog2](http://www.graylog2.org),
171 and as additional input type provided by [Logstash](http://logstash.net).
172
173 * Dynamic configuration language
174
175 Simple [apply](#using-apply) and [assign](#group-assign) rules for creating configuration object
176 relationships based on patterns. More advanced features for dynamic object generation using
177 [apply for rules](#using-apply-for) helped with arrays and dictionaries for
178 [custom attributes](#custom-attributes-apply).
179 Supported with [duration literals](#duration-literals) for interval
180 attributes, [expression operators](#expression-operators), [function calls](#function-calls) for
181 pattern and regex matching and (global) [constants](#constants).
182 [Check command configuration](#plugin-check-commands) for common plugins is shipped with Icinga 2 as part of the [Icinga Template Library](#itl).
183
184 * Revamped Commands
185
186 One command to rule them all - supporting optional and conditional [command arguments](#command-arguments).
187 [Environment variables](#command-environment-variables) exported on-demand populated with
188 runtime evaluated macros.
189 Three types of commands used for different actions: checks, notifications and events.
190 Check timeout for commands instead of a global option. Commands also have custom attributes allowing
191 you to specify default values.
192 There is no plugin output or performance data length restriction anymore compared to Icinga 1.x.
193
194 * Custom Runtime Macros
195
196 Access [custom attributes](#custom-attributes) with their short name, for example $mysql_user$,
197 or any object attribute, for example $host.notes$. Additional macros with runtime and statistic
198 information are available as well. Use these [runtime macros](#runtime-custom-attributes) in
199 the command line, environment variables and custom attribute assignments.
200
201 * Notifications simplified
202
203 Multiple [notifications](#notifications) for one host or service with existing users
204 and notification commands. No more duplicated contacts for different notification types.
205 Telling notification filters by state and type, even more fine-grained than Icinga 1.x.
206 [Escalation notifications](#notification-escalations) and [delayed notifications](#first-notification-delay)
207 are just notifications with an additional begin and/or end time attribute.
208
209 * Dependencies between Hosts and Services
210
211 Classic [dependencies](#dependencies) between host and parent hosts, and services and parent services work the
212 same way as "mixed" dependencies from a service to a parent host and vice versa. Host checks
213 depending on an upstream link port (as service) are not a problem anymore.
214 No more additional parents settings - host dependencies already define the host parent relationship
215 required for network reachability calculations.
216 Set parent host/services based on [host/service custom attributes](#dependencies-apply-custom-attributes)
217 generated from your cloud inventory or CMDB and make your dependency rules simple and short.
218
219 * [Recurring Downtimes](#recurring-downtimes)
220
221 Forget using cronjobs to set up recurring downtime - you can configure them as Icinga 2 configuration
222 objects and specify their active time window.
223
224 * Embedded Health Checks
225
226 No more external statistic tool but an [instance](#itl-icinga) and [cluster](#itl-cluster) health
227 check providing direct statistics as performance data for your graphing addon, for example Graphite.
228
229 * Compatibility with Icinga 1.x
230
231 All known interfaces are optionally available: [status files](#status-data), [logs](#compat-logging),
232 [DB IDO](#configuring-ido) MySQL/PostgreSQL, [performance data](#performance-data),
233 [external command pipe](#external-commands) and for migration reasons a
234 [checkresult file reader](#check-result-files) too.
235 All [Monitoring Plugins](#setting-up-check-plugins) can be integrated into Icinga 2 with
236 newly created check command configuration if not already provided.
237 [Configuration migration](#configuration-migration) is possible through an external migration tool.
238
239 Detailed [migration hints](#manual-config-migration-hints) explain migration of the Icinga 1.x
240 configuration objects into the native Icinga 2 configuration schema.
241 Additional information on the differences is documented in the [migration](#differences-1x-2) chapter.
242
243 * Configuration Syntax Highlighting
244
245 Icinga 2 ships [syntax highlighting](#configuration-syntax-highlighting) for `vim` and `nano` to help
246 edit your configuration.
247
248 * Puppet modules, Chef Cookbooks, Ansible Playbooks, Salt Formulas, etc
249
250 This is a constant work-in-progress. For details checkout https://dev.icinga.org/projects/icinga-tools
251 If you want to contribute to these projects, do not hesitate to contact us at https://support.icinga.org
252
253 * [Vagrant Demo VM](#vagrant)
254
255 Used for demo cases and development tests. Get Icinga 2 running within minutes and spread the #monitoringlove
256 to your friends and colleagues.