1 # Config Object Types <a id="object-types"></a>
3 This chapter provides an overview of all available config object types which can be
4 instantiated using the `object` keyword.
6 Additional details on configuration and runtime attributes and their
7 description are explained as well.
9 Config objects share these runtime attributes which cannot be
10 modified by the user. You can access these attributes using
11 the [Icinga 2 API](12-icinga2-api.md#icinga2-api-config-objects).
14 --------------------------|--------------------------
15 version | Timestamp when the object was created or modified. Synced throughout cluster nodes.
17 original_attributes | Original values of object attributes modified at runtime.
18 active | Object is active (e.g. a service being checked).
19 paused | Object has been paused at runtime (e.g. [IdoMysqlConnection](09-object-types.md#objecttype-idomysqlconnection). Defaults to `false`.
20 templates | Templates imported on object compilation.
21 package | [Configuration package name](12-icinga2-api.md#icinga2-api-config-management) this object belongs to. Local configuration is set to `_etc`, runtime created objects use `_api`.
24 ## ApiListener <a id="objecttype-apilistener"></a>
26 ApiListener objects are used for distributed monitoring setups
27 and API usage specifying the certificate files used for ssl
28 authorization and additional restrictions.
30 The `NodeName` constant must be defined in [constants.conf](04-configuring-icinga-2.md#constants-conf).
35 object ApiListener "api" {
36 cert_path = LocalStateDir + "/lib/icinga2/certs/" + NodeName + ".crt"
37 key_path = LocalStateDir + "/lib/icinga2/certs/" + NodeName + ".key"
38 ca_path = LocalStateDir + "/lib/icinga2/certs/ca.crt"
40 ticket_salt = TicketSalt
44 Configuration Attributes:
47 --------------------------|--------------------------
48 cert\_path |**Required.** Path to the public key.
49 key\_path |**Required.** Path to the private key.
50 ca\_path |**Required.** Path to the CA certificate file.
51 ticket\_salt |**Optional.** Private key for auto-signing. **Required** for a signing master instance.
52 crl\_path |**Optional.** Path to the CRL file.
53 bind\_host |**Optional.** The IP address the api listener should be bound to. Defaults to `0.0.0.0`.
54 bind\_port |**Optional.** The port the api listener should be bound to. Defaults to `5665`.
55 accept\_config |**Optional.** Accept zone configuration. Defaults to `false`.
56 accept\_commands |**Optional.** Accept remote commands. Defaults to `false`.
57 cipher\_list |**Optional.** Cipher list that is allowed.
58 tls\_protocolmin |**Optional.** Minimum TLS protocol version. Must be one of `TLSv1`, `TLSv1.1` or `TLSv1.2`. Defaults to `TLSv1`.
60 ## ApiUser <a id="objecttype-apiuser"></a>
62 ApiUser objects are used for authentication against the Icinga 2 API.
66 object ApiUser "root" {
67 password = "mysecretapipassword"
72 Configuration Attributes:
75 --------------------------|--------------------------
76 password |**Optional.** Password string.
77 client\_cn |**Optional.** Client Common Name (CN).
78 permissions |**Required.** Array of permissions. Either as string or dictionary with the keys `permission` and `filter`. The latter must be specified as function.
80 Available permissions are described in the [API permissions](12-icinga2-api.md#icinga2-api-permissions)
83 ## CheckCommand <a id="objecttype-checkcommand"></a>
85 A check command definition. Additional default command custom attributes can be
90 > Icinga 2 versions < 2.6.0 require the import of the [plugin-check-command](10-icinga-template-library.md#itl-plugin-check-command) template.
94 object CheckCommand "check_http" {
95 command = [ PluginDir + "/check_http" ]
99 "-I" = "$http_address$"
103 set_if = "$http_ssl$"
106 set_if = "$http_sni$"
109 value = "$http_auth_pair$"
110 description = "Username:password on sites with basic authentication"
113 set_if = "$http_ignore_body$"
115 "-r" = "$http_expect_body_regex$"
116 "-w" = "$http_warn_time$"
117 "-c" = "$http_critical_time$"
118 "-e" = "$http_expect$"
121 vars.http_address = "$address$"
122 vars.http_ssl = false
123 vars.http_sni = false
127 Configuration Attributes:
130 ----------------|----------------
131 execute |**Required.** The "execute" script method takes care of executing the check. The default template "plugin-check-command" which is imported into all CheckCommand objects takes care of this setting.
132 command |**Required.** The command. This can either be an array of individual command arguments. Alternatively a string can be specified in which case the shell interpreter (usually /bin/sh) takes care of parsing the command. When using the "arguments" attribute this must be an array. Can be specified as function for advanced implementations.
133 env |**Optional.** A dictionary of macros which should be exported as environment variables prior to executing the command.
134 vars |**Optional.** A dictionary containing custom attributes that are specific to this command.
135 timeout |**Optional.** The command timeout in seconds. Defaults to 60 seconds.
136 arguments |**Optional.** A dictionary of command arguments.
139 ### CheckCommand Arguments <a id="objecttype-checkcommand-arguments"></a>
141 Command arguments can be defined as key-value-pairs in the `arguments`
142 dictionary. If the argument requires additional configuration, for example
143 a `description` attribute or an optional condition, the value can be defined
144 as dictionary specifying additional options.
148 vars.x_val = "My command argument value."
156 key = "-Xnew" /* optional, set a new key identifier */
157 description = "My plugin requires this argument for doing X."
158 required = false /* optional, no error if not set */
159 skip_key = false /* always use "-X <value>" */
160 set_if = "$have_x$" /* only set if variable defined and resolves to a numeric value. String values are not supported */
161 order = -1 /* first position */
162 repeat_key = true /* if `value` is an array, repeat the key as parameter: ... 'key' 'value[0]' 'key' 'value[1]' 'key' 'value[2]' ... */
166 description = "My plugin requires this argument for doing Y."
167 required = false /* optional, no error if not set */
168 skip_key = true /* don't prefix "-Y" only use "<value>" */
169 set_if = "$have_y$" /* only set if variable defined and resolves to a numeric value. String values are not supported */
170 order = 0 /* second position */
171 repeat_key = false /* if `value` is an array, do not repeat the key as parameter: ... 'key' 'value[0]' 'value[1]' 'value[2]' ... */
176 ------------|--------------
177 value | Optional argument value set by a macro string or a function call.
178 key | Optional argument key overriding the key identifier.
179 description | Optional argument description.
180 required | Required argument. Execution error if not set. Defaults to false (optional).
181 skip_key | Use the value as argument and skip the key.
182 set_if | Argument is added if the macro resolves to a defined numeric or boolean value. String values are not supported. Function calls returning a value are supported too.
183 order | Set if multiple arguments require a defined argument order.
184 repeat_key | If the argument value is an array, repeat the argument key, or not. Defaults to true (repeat).
188 `..., -3, -2, -1, <un-ordered keys>, 1, 2, 3, ...`
190 Argument array `repeat_key = true`:
192 `'key' 'value[0]' 'key' 'value[1]' 'key' 'value[2]'`
194 Argument array `repeat_key = false`:
196 `'key' 'value[0]' 'value[1]' 'value[2]'`
198 ## CheckerComponent <a id="objecttype-checkcomponent"></a>
200 The checker component is responsible for scheduling active checks.
206 object CheckerComponent "checker" {
207 concurrent_checks = 512
210 Configuration Attributes:
213 --------------------|----------------
214 concurrent\_checks |**Optional.** The maximum number of concurrent checks. Defaults to 512.
216 ## CheckResultReader <a id="objecttype-checkresultreader"></a>
218 Reads Icinga 1.x check results from a directory. This functionality is provided
219 to help existing Icinga 1.x users and might be useful for certain cluster
226 object CheckResultReader "reader" {
227 spool_dir = "/data/check-results"
230 Configuration Attributes:
233 ----------------|----------------
234 spool\_dir |**Optional.** The directory which contains the check result files. Defaults to LocalStateDir + "/lib/icinga2/spool/checkresults/".
236 ## Comment <a id="objecttype-comment"></a>
238 Comments created at runtime are represented as objects.
242 object Comment "localhost!my-comment" {
243 host_name = "localhost"
244 author = "icingaadmin"
245 text = "This is a comment."
248 Configuration Attributes:
251 ----------------|----------------
252 host_name | **Required.** The name of the host this comment belongs to.
253 service_name | **Optional.** The short name of the service this comment belongs to. If omitted, this comment object is treated as host comment.
254 author | **Required.** The author's name.
255 text | **Required.** The comment text.
256 entry_time | **Optional.** The unix timestamp when this comment was added.
257 entry_type | **Optional.** The comment type (`User` = 1, `Downtime` = 2, `Flapping` = 3, `Acknowledgement` = 4).
258 expire_time | **Optional.** The comment's expire time as unix timestamp.
259 persistent | **Optional.** Only evaluated for `entry_type` Acknowledgement. `true` does not remove the comment when the acknowledgement is removed.
261 ## CompatLogger <a id="objecttype-compatlogger"></a>
263 Writes log files in a format that's compatible with Icinga 1.x.
269 object CompatLogger "my-log" {
270 log_dir = "/var/log/icinga2/compat"
271 rotation_method = "HOURLY"
274 Configuration Attributes:
277 ----------------|----------------
278 log\_dir |**Optional.** Path to the compat log directory. Defaults to LocalStateDir + "/log/icinga2/compat".
279 rotation\_method|**Optional.** Specifies when to rotate log files. Can be one of "HOURLY", "DAILY", "WEEKLY" or "MONTHLY". Defaults to "HOURLY".
283 ## Dependency <a id="objecttype-dependency"></a>
285 Dependency objects are used to specify dependencies between hosts and services. Dependencies
286 can be defined as Host-to-Host, Service-to-Service, Service-to-Host, or Host-to-Service
291 > Rather than creating a `Dependency` object for a specific host or service it is usually easier
292 > to just create a `Dependency` template and use the `apply` keyword to assign the
293 > dependency to a number of hosts or services. Use the `to` keyword to set the specific target
294 > type for `Host` or `Service`.
295 > Check the [dependencies](03-monitoring-basics.md#dependencies) chapter for detailed examples.
297 Service-to-Service Example:
299 object Dependency "webserver-internet" {
300 parent_host_name = "internet"
301 parent_service_name = "ping4"
303 child_host_name = "webserver"
304 child_service_name = "ping4"
306 states = [ OK, Warning ]
308 disable_checks = true
311 Host-to-Host Example:
313 object Dependency "webserver-internet" {
314 parent_host_name = "internet"
316 child_host_name = "webserver"
320 disable_checks = true
323 Configuration Attributes:
326 ----------------------|----------------
327 parent_host_name |**Required.** The parent host.
328 parent_service_name |**Optional.** The parent service. If omitted, this dependency object is treated as host dependency.
329 child_host_name |**Required.** The child host.
330 child_service_name |**Optional.** The child service. If omitted, this dependency object is treated as host dependency.
331 disable_checks |**Optional.** Whether to disable checks when this dependency fails. Defaults to false.
332 disable_notifications |**Optional.** Whether to disable notifications when this dependency fails. Defaults to true.
333 ignore_soft_states |**Optional.** Whether to ignore soft states for the reachability calculation. Defaults to true.
334 period |**Optional.** Time period during which this dependency is enabled.
335 states |**Optional.** A list of state filters when this dependency should be OK. Defaults to [ OK, Warning ] for services and [ Up ] for hosts.
337 Available state filters:
346 When using [apply rules](03-monitoring-basics.md#using-apply) for dependencies, you can leave out certain attributes which will be
347 automatically determined by Icinga 2.
349 Service-to-Host Dependency Example:
351 apply Dependency "internet" to Service {
352 parent_host_name = "dsl-router"
353 disable_checks = true
355 assign where host.name != "dsl-router"
358 This example sets all service objects matching the assign condition into a dependency relation to
359 the parent host object `dsl-router` as implicit child services.
361 Service-to-Service-on-the-same-Host Dependency Example:
363 apply Dependency "disable-nrpe-checks" to Service {
364 parent_service_name = "nrpe-health"
366 assign where service.check_command == "nrpe"
367 ignore where service.name == "nrpe-health"
370 This example omits the `parent_host_name` attribute and Icinga 2 automatically sets its value to the name of the
371 host object matched by the apply rule condition. All services where apply matches are made implicit child services
372 in this dependency relation.
375 Dependency objects have composite names, i.e. their names are based on the `child_host_name` and `child_service_name` attributes and the
376 name you specified. This means you can define more than one object with the same (short) name as long as one of the `child_host_name` and
377 `child_service_name` attributes has a different value.
379 ## Downtime <a id="objecttype-downtime"></a>
381 Downtimes created at runtime are represented as objects.
385 object Downtime "localhost!my-downtime" {
386 host_name = "localhost"
387 author = "icingaadmin"
388 comment = "This is a downtime."
389 start_time = 1505312869
390 end_time = 1505312924
393 Configuration Attributes:
396 ----------------|----------------
397 host_name | **Required.** The name of the host this comment belongs to.
398 service_name | **Optional.** The short name of the service this comment belongs to. If omitted, this comment object is treated as host comment.
399 author | **Required.** The author's name.
400 comment | **Required.** The comment text.
401 start_time | **Required.** The start time as unix timestamp.
402 end_time | **Required.** The end time as unix timestamp.
403 duration | **Optional.** The duration as number.
404 entry_time | **Optional.** The unix timestamp when this downtime was added.
405 fixed | **Optional.** Whether the downtime is fixed (true) or flexible (false). Defaults to flexible. Details in the [advanced topics chapter](08-advanced-topics.md#fixed-flexible-downtimes).
406 triggers | **Optional.** List of downtimes which should be triggered by this downtime.
411 ----------------|----------------
412 trigger_time | The unix timestamp when this downtime was triggered.
413 triggered_by | The name of the downtime this downtime was triggered by.
417 ## Endpoint <a id="objecttype-endpoint"></a>
419 Endpoint objects are used to specify connection information for remote
424 object Endpoint "icinga2b" {
425 host = "192.168.5.46"
430 Example (disable replay log):
432 object Endpoint "icinga2b" {
433 host = "192.168.5.46"
438 Configuration Attributes:
441 ----------------|----------------
442 host |**Optional.** The hostname/IP address of the remote Icinga 2 instance.
443 port |**Optional.** The service name/port of the remote Icinga 2 instance. Defaults to `5665`.
444 log_duration |**Optional.** Duration for keeping replay logs on connection loss. Defaults to `1d` (86400 seconds). Attribute is specified in seconds. If log_duration is set to 0, replaying logs is disabled. You could also specify the value in human readable format like `10m` for 10 minutes or `1h` for one hour.
446 Endpoint objects cannot currently be created with the API.
448 ## EventCommand <a id="objecttype-eventcommand"></a>
450 An event command definition.
454 > Icinga 2 versions < 2.6.0 require the import of the [plugin-event-command](10-icinga-template-library.md#itl-plugin-event-command) template.
458 object EventCommand "restart-httpd-event" {
459 command = "/opt/bin/restart-httpd.sh"
463 Configuration Attributes:
466 ----------------|----------------
467 execute |**Required.** The "execute" script method takes care of executing the event handler. The default template "plugin-event-command" which is imported into all CheckCommand objects takes care of this setting.
468 command |**Required.** The command. This can either be an array of individual command arguments. Alternatively a string can be specified in which case the shell interpreter (usually /bin/sh) takes care of parsing the command.
469 env |**Optional.** A dictionary of macros which should be exported as environment variables prior to executing the command.
470 vars |**Optional.** A dictionary containing custom attributes that are specific to this command.
471 timeout |**Optional.** The command timeout in seconds. Defaults to 60 seconds.
472 arguments |**Optional.** A dictionary of command arguments.
474 Command arguments can be used the same way as for [CheckCommand objects](09-object-types.md#objecttype-checkcommand-arguments).
476 More advanced examples for event command usage can be found [here](03-monitoring-basics.md#event-commands).
478 ## ExternalCommandListener <a id="objecttype-externalcommandlistener"></a>
480 Implements the Icinga 1.x command pipe which can be used to send commands to Icinga.
486 object ExternalCommandListener "external" {
487 command_path = "/var/run/icinga2/cmd/icinga2.cmd"
490 Configuration Attributes:
493 ----------------|----------------
494 command\_path |**Optional.** Path to the command pipe. Defaults to RunDir + "/icinga2/cmd/icinga2.cmd".
498 ## FileLogger <a id="objecttype-filelogger"></a>
500 Specifies Icinga 2 logging to a file.
504 object FileLogger "debug-file" {
506 path = "/var/log/icinga2/debug.log"
509 Configuration Attributes:
512 ----------------|----------------
513 path |**Required.** The log path.
514 severity |**Optional.** The minimum severity for this log. Can be "debug", "notice", "information", "warning" or "critical". Defaults to "information".
517 ## GelfWriter <a id="objecttype-gelfwriter"></a>
519 Writes event log entries to a defined GELF receiver host (Graylog2, Logstash).
525 object GelfWriter "gelf" {
530 Configuration Attributes:
533 ----------------------|----------------------
534 host |**Optional.** GELF receiver host address. Defaults to '127.0.0.1'.
535 port |**Optional.** GELF receiver port. Defaults to `12201`.
536 source |**Optional.** Source name for this instance. Defaults to `icinga2`.
537 enable_send_perfdata |**Optional.** Enable performance data for 'CHECK RESULT' events.
540 ## GraphiteWriter <a id="objecttype-graphitewriter"></a>
542 Writes check result metrics and performance data to a defined
543 Graphite Carbon host.
549 object GraphiteWriter "graphite" {
554 Configuration Attributes:
557 ----------------------|----------------------
558 host |**Optional.** Graphite Carbon host address. Defaults to '127.0.0.1'.
559 port |**Optional.** Graphite Carbon port. Defaults to 2003.
560 host_name_template |**Optional.** Metric prefix for host name. Defaults to "icinga2.$host.name$.host.$host.check_command$".
561 service_name_template |**Optional.** Metric prefix for service name. Defaults to "icinga2.$host.name$.services.$service.name$.$service.check_command$".
562 enable_send_thresholds | **Optional.** Send additional threshold metrics. Defaults to `false`.
563 enable_send_metadata | **Optional.** Send additional metadata metrics. Defaults to `false`.
565 Additional usage examples can be found [here](14-features.md#graphite-carbon-cache-writer).
569 ## Host <a id="objecttype-host"></a>
575 object Host NodeName {
576 display_name = "Local host on this node"
577 address = "127.0.0.1"
580 groups = [ "all-hosts" ]
582 check_command = "hostalive"
585 Configuration Attributes:
588 ----------------|----------------
589 display_name |**Optional.** A short description of the host (e.g. displayed by external interfaces instead of the name if set).
590 address |**Optional.** The host's address. Available as command runtime macro `$address$` if set.
591 address6 |**Optional.** The host's address. Available as command runtime macro `$address6$` if set.
592 groups |**Optional.** A list of host groups this host belongs to.
593 vars |**Optional.** A dictionary containing custom attributes that are specific to this host.
594 check\_command |**Required.** The name of the check command.
595 max\_check\_attempts|**Optional.** The number of times a host is re-checked before changing into a hard state. Defaults to 3.
596 check\_period |**Optional.** The name of a time period which determines when this host should be checked. Not set by default.
597 check\_timeout |**Optional.** Check command timeout in seconds. Overrides the CheckCommand's `timeout` attribute.
598 check\_interval |**Optional.** The check interval (in seconds). This interval is used for checks when the host is in a `HARD` state. Defaults to 5 minutes.
599 retry\_interval |**Optional.** The retry interval (in seconds). This interval is used for checks when the host is in a `SOFT` state. Defaults to 1 minute.
600 enable\_notifications|**Optional.** Whether notifications are enabled. Defaults to true.
601 enable\_active\_checks|**Optional.** Whether active checks are enabled. Defaults to true.
602 enable\_passive\_checks|**Optional.** Whether passive checks are enabled. Defaults to true.
603 enable\_event\_handler|**Optional.** Enables event handlers for this host. Defaults to true.
604 enable\_flapping|**Optional.** Whether flap detection is enabled. Defaults to false.
605 enable\_perfdata|**Optional.** Whether performance data processing is enabled. Defaults to true.
606 event\_command |**Optional.** The name of an event command that should be executed every time the host's state changes or the host is in a `SOFT` state.
607 flapping\_threshold|**Optional.** The flapping threshold in percent when a host is considered to be flapping.
608 volatile |**Optional.** The volatile setting enables always `HARD` state types if `NOT-OK` state changes occur.
609 zone |**Optional.** The zone this object is a member of.
610 command\_endpoint|**Optional.** The endpoint where commands are executed on.
611 notes |**Optional.** Notes for the host.
612 notes\_url |**Optional.** Url for notes for the host (for example, in notification commands).
613 action\_url |**Optional.** Url for actions for the host (for example, an external graphing tool).
614 icon\_image |**Optional.** Icon image for the host. Used by external interfaces only.
615 icon\_image\_alt|**Optional.** Icon image description for the host. Used by external interface only.
617 The actual check interval might deviate slightly from the configured values due to the fact that Icinga tries
618 to evenly distribute all checks over a certain period of time, i.e. to avoid load spikes.
622 > The `address` and `address6` attributes are required for running commands using
623 > the `$address$` and `$address6$` runtime macros.
627 Name | Type | Description
628 --------------------------|---------------|-----------------
629 next\_check | Number | When the next check occurs (as a UNIX timestamp).
630 last\_check | Number | When the last check occured (as a UNIX timestamp).
631 check\_attempt | Number | The current check attempt number.
632 state\_type | Number | The current state type (0 = SOFT, 1 = HARD).
633 last\_state\_type | Number | The previous state type (0 = SOFT, 1 = HARD).
634 last\_reachable | Boolean | Whether the host was reachable when the last check occurred.
635 last\_check\_result | CheckResult | The current check result.
636 last\_state\_change | Number | When the last state change occurred (as a UNIX timestamp).
637 last\_hard\_state\_change | Number | When the last hard state change occurred (as a UNIX timestamp).
638 last\_in\_downtime | Boolean | Whether the host was in a downtime when the last check occurred.
639 acknowledgement | Number | The acknowledgement type (0 = NONE, 1 = NORMAL, 2 = STICKY).
640 acknowledgement_expiry | Number | When the acknowledgement expires (as a UNIX timestamp; 0 = no expiry).
641 downtime\_depth | Number | Whether the host has one or more active downtimes.
642 flapping_last_change | Number | When the last flapping change occurred (as a UNIX timestamp).
643 flapping | Boolean | Whether the host is flapping between states.
644 state | Number | The current state (0 = UP, 1 = DOWN).
645 last\_state | Number | The previous state (0 = UP, 1 = DOWN).
646 last\_hard\_state | Number | The last hard state (0 = UP, 1 = DOWN).
647 last_state_up | Number | When the last UP state occurred (as a UNIX timestamp).
648 last_state_down | Number | When the last DOWN state occurred (as a UNIX timestamp).
652 ## HostGroup <a id="objecttype-hostgroup"></a>
658 > Assign host group members using the [group assign](17-language-reference.md#group-assign) rules.
662 object HostGroup "my-hosts" {
663 display_name = "My hosts"
666 Configuration Attributes:
669 ----------------|----------------
670 display_name |**Optional.** A short description of the host group.
671 groups |**Optional.** An array of nested group names.
673 ## IcingaApplication <a id="objecttype-icingaapplication"></a>
675 The IcingaApplication object is required to start Icinga 2.
676 The object name must be `app`. If the object configuration
677 is missing, Icinga 2 will automatically create an IcingaApplication
682 object IcingaApplication "app" {
683 enable_perfdata = false
686 Configuration Attributes:
689 ----------------------|--------------------------
690 enable_notifications |**Optional.** Whether notifications are globally enabled. Defaults to true.
691 enable_event_handlers |**Optional.** Whether event handlers are globally enabled. Defaults to true.
692 enable_flapping |**Optional.** Whether flap detection is globally enabled. Defaults to true.
693 enable_host_checks |**Optional.** Whether active host checks are globally enabled. Defaults to true.
694 enable_service_checks |**Optional.** Whether active service checks are globally enabled. Defaults to true.
695 enable_perfdata |**Optional.** Whether performance data processing is globally enabled. Defaults to true.
696 vars |**Optional.** A dictionary containing custom attributes that are available globally.
698 ## IdoMySqlConnection <a id="objecttype-idomysqlconnection"></a>
700 IDO database adapter for MySQL.
704 library "db_ido_mysql"
706 object IdoMysqlConnection "mysql-ido" {
714 downtimehistory_age = 48h
715 contactnotifications_age = 31d
719 Configuration Attributes:
722 ----------------|----------------
723 host |**Optional.** MySQL database host address. Defaults to "localhost".
724 port |**Optional.** MySQL database port. Defaults to 3306.
725 socket_path |**Optional.** MySQL socket path.
726 user |**Optional.** MySQL database user with read/write permission to the icinga database. Defaults to "icinga".
727 password |**Optional.** MySQL database user's password. Defaults to "icinga".
728 database |**Optional.** MySQL database name. Defaults to "icinga".
729 enable\_ssl |**Optional.** Use SSL. Defaults to false. Change to `true` in case you want to use any of the SSL options.
730 ssl\_key |**Optional.** MySQL SSL client key file path.
731 ssl\_cert |**Optional.** MySQL SSL certificate file path.
732 ssl\_ca |**Optional.** MySQL SSL certificate authority certificate file path.
733 ssl\_capath |**Optional.** MySQL SSL trusted SSL CA certificates in PEM format directory path.
734 ssl\_cipher |**Optional.** MySQL SSL list of allowed ciphers.
735 table\_prefix |**Optional.** MySQL database table prefix. Defaults to "icinga\_".
736 instance\_name |**Optional.** Unique identifier for the local Icinga 2 instance. Defaults to "default".
737 instance\_description|**Optional.** Description for the Icinga 2 instance.
738 enable_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](06-distributed-monitoring.md#distributed-monitoring-high-availability-db-ido). Defaults to "true".
739 failover_timeout | **Optional.** Set the failover timeout in a [HA cluster](06-distributed-monitoring.md#distributed-monitoring-high-availability-db-ido). Must not be lower than 60s. Defaults to "60s".
740 cleanup |**Optional.** Dictionary with items for historical table cleanup.
741 categories |**Optional.** Array of information types that should be written to the database.
746 ----------------|----------------
747 acknowledgements_age |**Optional.** Max age for acknowledgements table rows (entry_time). Defaults to 0 (never).
748 commenthistory_age |**Optional.** Max age for commenthistory table rows (entry_time). Defaults to 0 (never).
749 contactnotifications_age |**Optional.** Max age for contactnotifications table rows (start_time). Defaults to 0 (never).
750 contactnotificationmethods_age |**Optional.** Max age for contactnotificationmethods table rows (start_time). Defaults to 0 (never).
751 downtimehistory_age |**Optional.** Max age for downtimehistory table rows (entry_time). Defaults to 0 (never).
752 eventhandlers_age |**Optional.** Max age for eventhandlers table rows (start_time). Defaults to 0 (never).
753 externalcommands_age |**Optional.** Max age for externalcommands table rows (entry_time). Defaults to 0 (never).
754 flappinghistory_age |**Optional.** Max age for flappinghistory table rows (event_time). Defaults to 0 (never).
755 hostchecks_age |**Optional.** Max age for hostalives table rows (start_time). Defaults to 0 (never).
756 logentries_age |**Optional.** Max age for logentries table rows (logentry_time). Defaults to 0 (never).
757 notifications_age |**Optional.** Max age for notifications table rows (start_time). Defaults to 0 (never).
758 processevents_age |**Optional.** Max age for processevents table rows (event_time). Defaults to 0 (never).
759 statehistory_age |**Optional.** Max age for statehistory table rows (state_time). Defaults to 0 (never).
760 servicechecks_age |**Optional.** Max age for servicechecks table rows (start_time). Defaults to 0 (never).
761 systemcommands_age |**Optional.** Max age for systemcommands table rows (start_time). Defaults to 0 (never).
765 Name | Description | Required by
766 ---------------------|------------------------|--------------------
767 DbCatConfig | Configuration data | Icinga Web 2
768 DbCatState | Current state data | Icinga Web 2
769 DbCatAcknowledgement | Acknowledgements | Icinga Web 2
770 DbCatComment | Comments | Icinga Web 2
771 DbCatDowntime | Downtimes | Icinga Web 2
772 DbCatEventHandler | Event handler data | Icinga Web 2
773 DbCatExternalCommand | External commands | --
774 DbCatFlapping | Flap detection data | Icinga Web 2
775 DbCatCheck | Check results | --
776 DbCatLog | Log messages | --
777 DbCatNotification | Notifications | Icinga Web 2
778 DbCatProgramStatus | Program status data | Icinga Web 2
779 DbCatRetention | Retention data | Icinga Web 2
780 DbCatStateHistory | Historical state data | Icinga Web 2
782 The default value for `categories` includes everything required
783 by Icinga Web 2 in the table above.
785 In addition to the category flags listed above the `DbCatEverything`
786 flag may be used as a shortcut for listing all flags.
788 ## IdoPgSqlConnection <a id="objecttype-idopgsqlconnection"></a>
790 IDO database adapter for PostgreSQL.
794 library "db_ido_pgsql"
796 object IdoPgsqlConnection "pgsql-ido" {
804 downtimehistory_age = 48h
805 contactnotifications_age = 31d
809 Configuration Attributes:
812 ----------------|----------------
813 host |**Optional.** PostgreSQL database host address. Defaults to "localhost".
814 port |**Optional.** PostgreSQL database port. Defaults to "5432".
815 user |**Optional.** PostgreSQL database user with read/write permission to the icinga database. Defaults to "icinga".
816 password |**Optional.** PostgreSQL database user's password. Defaults to "icinga".
817 database |**Optional.** PostgreSQL database name. Defaults to "icinga".
818 table\_prefix |**Optional.** PostgreSQL database table prefix. Defaults to "icinga\_".
819 instance\_name |**Optional.** Unique identifier for the local Icinga 2 instance. Defaults to "default".
820 instance\_description|**Optional.** Description for the Icinga 2 instance.
821 enable_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](06-distributed-monitoring.md#distributed-monitoring-high-availability-db-ido). Defaults to "true".
822 failover_timeout | **Optional.** Set the failover timeout in a [HA cluster](06-distributed-monitoring.md#distributed-monitoring-high-availability-db-ido). Must not be lower than 60s. Defaults to "60s".
823 cleanup |**Optional.** Dictionary with items for historical table cleanup.
824 categories |**Optional.** Array of information types that should be written to the database.
829 ----------------|----------------
830 acknowledgements_age |**Optional.** Max age for acknowledgements table rows (entry_time). Defaults to 0 (never).
831 commenthistory_age |**Optional.** Max age for commenthistory table rows (entry_time). Defaults to 0 (never).
832 contactnotifications_age |**Optional.** Max age for contactnotifications table rows (start_time). Defaults to 0 (never).
833 contactnotificationmethods_age |**Optional.** Max age for contactnotificationmethods table rows (start_time). Defaults to 0 (never).
834 downtimehistory_age |**Optional.** Max age for downtimehistory table rows (entry_time). Defaults to 0 (never).
835 eventhandlers_age |**Optional.** Max age for eventhandlers table rows (start_time). Defaults to 0 (never).
836 externalcommands_age |**Optional.** Max age for externalcommands table rows (entry_time). Defaults to 0 (never).
837 flappinghistory_age |**Optional.** Max age for flappinghistory table rows (event_time). Defaults to 0 (never).
838 hostchecks_age |**Optional.** Max age for hostalives table rows (start_time). Defaults to 0 (never).
839 logentries_age |**Optional.** Max age for logentries table rows (logentry_time). Defaults to 0 (never).
840 notifications_age |**Optional.** Max age for notifications table rows (start_time). Defaults to 0 (never).
841 processevents_age |**Optional.** Max age for processevents table rows (event_time). Defaults to 0 (never).
842 statehistory_age |**Optional.** Max age for statehistory table rows (state_time). Defaults to 0 (never).
843 servicechecks_age |**Optional.** Max age for servicechecks table rows (start_time). Defaults to 0 (never).
844 systemcommands_age |**Optional.** Max age for systemcommands table rows (start_time). Defaults to 0 (never).
848 Name | Description | Required by
849 ---------------------|------------------------|--------------------
850 DbCatConfig | Configuration data | Icinga Web 2
851 DbCatState | Current state data | Icinga Web 2
852 DbCatAcknowledgement | Acknowledgements | Icinga Web 2
853 DbCatComment | Comments | Icinga Web 2
854 DbCatDowntime | Downtimes | Icinga Web 2
855 DbCatEventHandler | Event handler data | Icinga Web 2
856 DbCatExternalCommand | External commands | --
857 DbCatFlapping | Flap detection data | Icinga Web 2
858 DbCatCheck | Check results | --
859 DbCatLog | Log messages | --
860 DbCatNotification | Notifications | Icinga Web 2
861 DbCatProgramStatus | Program status data | Icinga Web 2
862 DbCatRetention | Retention data | Icinga Web 2
863 DbCatStateHistory | Historical state data | Icinga Web 2
865 The default value for `categories` includes everything required
866 by Icinga Web 2 in the table above.
868 In addition to the category flags listed above the `DbCatEverything`
869 flag may be used as a shortcut for listing all flags.
871 ## InfluxdbWriter <a id="objecttype-influxdbwriter"></a>
873 Writes check result metrics and performance data to a defined InfluxDB host.
879 object InfluxdbWriter "influxdb" {
884 flush_threshold = 1024
888 measurement = "$host.check_command$"
890 hostname = "$host.name$"
894 measurement = "$service.check_command$"
896 hostname = "$host.name$"
897 service = "$service.name$"
902 Measurement names and tags are fully configurable by the end user. The InfluxdbWriter
903 object will automatically add a `metric` tag to each data point. This correlates to the
904 perfdata label. Fields (value, warn, crit, min, max) are created from data if available
905 and the configuration allows it. If a value associated with a tag is not able to be
906 resolved, it will be dropped and not sent to the target host.
908 Backslashes are allowed in tag keys, tag values and field keys, however they are also
909 escape characters when followed by a space or comma, but cannot be escaped themselves.
910 As a result all trailling slashes in these fields are replaced with an underscore. This
911 predominantly affects Windows paths e.g. `C:\` becomes `C:_`.
913 The database is assumed to exist so this object will make no attempt to create it currently.
915 Configuration Attributes:
918 -----------------------|---------------------------------------------------------------------------------------------------------
919 host | **Required.** InfluxDB host address. Defaults to `127.0.0.1`.
920 port | **Required.** InfluxDB HTTP port. Defaults to `8086`.
921 database | **Required.** InfluxDB database name. Defaults to `icinga2`.
922 username | **Optional.** InfluxDB user name. Defaults to `none`.
923 password | **Optional.** InfluxDB user password. Defaults to `none`.
924 ssl_enable | **Optional.** Whether to use a TLS stream. Defaults to `false`.
925 ssl_ca_cert | **Optional.** CA certificate to validate the remote host.
926 ssl_cert | **Optional.** Host certificate to present to the remote host for mutual verification.
927 ssl_key | **Optional.** Host key to accompany the ssl_cert
928 host_template | **Required.** Host template to define the InfluxDB line protocol.
929 service_template | **Required.** Service template to define the influxDB line protocol.
930 enable_send_thresholds | **Optional.** Whether to send warn, crit, min & max tagged data.
931 enable_send_metadata | **Optional.** Whether to send check metadata e.g. states, execution time, latency etc.
932 flush_interval | **Optional.** How long to buffer data points before transfering to InfluxDB. Defaults to `10s`.
933 flush_threshold | **Optional.** How many data points to buffer before forcing a transfer to InfluxDB. Defaults to `1024`.
935 Note: If `flush_threshold` is set too low, this will always force the feature to flush all data
936 to InfluxDB. Experiment with the setting, if you are processing more than 1024 metrics per second
939 ### Instance Tagging <a id="objecttype-influxdbwriter-instance-tags"></a>
941 Consider the following service check:
943 apply Service "disk" for (disk => attributes in host.vars.disks) {
944 import "generic-service"
945 check_command = "disk"
946 display_name = "Disk " + disk
947 vars.disk_partitions = disk
948 assign where host.vars.disks
951 This is a typical pattern for checking individual disks, NICs, SSL certificates etc associated
952 with a host. What would be useful is to have the data points tagged with the specific instance
953 for that check. This would allow you to query time series data for a check on a host and for a
954 specific instance e.g. /dev/sda. To do this quite simply add the instance to the service variables:
956 apply Service "disk" for (disk => attributes in host.vars.disks) {
962 Then modify your writer configuration to add this tag to your data points if the instance variable
963 is associated with the service:
965 object InfluxdbWriter "influxdb" {
968 measurement = "$service.check_command$"
970 hostname = "$host.name$"
971 service = "$service.name$"
972 instance = "$service.vars.instance$"
978 ## ElasticWriter <a id="objecttype-elasticwriter"></a>
980 Writes check result metrics and performance data to an Elasticsearch instance.
986 object ElasticWriter "elastic" {
991 enable_send_perfdata = true
993 flush_threshold = 1024
997 The index is rotated daily, as is recommended by Elastic, meaning the index will be renamed to `$index-$d.$M.$y`.
999 Configuration Attributes:
1002 -----------------------|---------------------------------------------------------------------------------------------------------
1003 host | **Required.** Elasticsearch host address. Defaults to `127.0.0.1`.
1004 port | **Required.** Elasticsearch port. Defaults to `9200`.
1005 index | **Required.** Elasticsearch index name. Defaults to `icinga2`.
1006 enable\_send\_perfdata | **Optional.** Send parsed performance data metrics for check results. Defaults to `false`.
1007 flush\_interval | **Optional.** How long to buffer data points before transfering to Elasticsearch. Defaults to `10`.
1008 flush\_threshold | **Optional.** How many data points to buffer before forcing a transfer to Elasticsearch. Defaults to `1024`.
1009 username | **Optional.** Basic auth username if Elasticsearch is hidden behind an HTTP proxy.
1010 password | **Optional.** Basic auth password if Elasticsearch is hidden behind an HTTP proxy.
1011 enable\_tls | **Optional.** Whether to use a TLS stream. Defaults to `false`. Requires an HTTP proxy.
1012 ca\_path | **Optional.** CA certificate to validate the remote host. Requires `enable_tls` set to `true`.
1013 cert\_path | **Optional.** Host certificate to present to the remote host for mutual verification. Requires `enable_tls` set to `true`.
1014 key\_path | **Optional.** Host key to accompany the cert\_path. Requires `enable_tls` set to `true`.
1016 Note: If `flush_threshold` is set too low, this will force the feature to flush all data to Elasticsearch too often.
1017 Experiment with the setting, if you are processing more than 1024 metrics per second or similar.
1019 Basic auth is supported with the `username` and `password` attributes. This requires an
1020 HTTP proxy (Nginx, etc.) in front of the Elasticsearch instance.
1022 TLS for the HTTP proxy can be enabled with `enable_tls`. In addition to that
1023 you can specify the certificates with the `ca_path`, `cert_path` and `cert_key` attributes.
1025 ## LiveStatusListener <a id="objecttype-livestatuslistener"></a>
1027 Livestatus API interface available as TCP or UNIX socket. Historical table queries
1028 require the [CompatLogger](09-object-types.md#objecttype-compatlogger) feature enabled
1029 pointing to the log files using the `compat_log_path` configuration attribute.
1033 library "livestatus"
1035 object LivestatusListener "livestatus-tcp" {
1037 bind_host = "127.0.0.1"
1041 object LivestatusListener "livestatus-unix" {
1042 socket_type = "unix"
1043 socket_path = "/var/run/icinga2/cmd/livestatus"
1046 Configuration Attributes:
1049 ----------------|----------------
1050 socket\_type |**Optional.** Specifies the socket type. Can be either "tcp" or "unix". Defaults to "unix".
1051 bind\_host |**Optional.** Only valid when socket\_type is "tcp". Host address to listen on for connections. Defaults to "127.0.0.1".
1052 bind\_port |**Optional.** Only valid when `socket_type` is "tcp". Port to listen on for connections. Defaults to 6558.
1053 socket\_path |**Optional.** Only valid when `socket_type` is "unix". Specifies the path to the UNIX socket file. Defaults to RunDir + "/icinga2/cmd/livestatus".
1054 compat\_log\_path |**Optional.** Required for historical table queries. Requires `CompatLogger` feature enabled. Defaults to LocalStateDir + "/log/icinga2/compat"
1058 > UNIX sockets are not supported on Windows.
1061 ## Notification <a id="objecttype-notification"></a>
1063 Notification objects are used to specify how users should be notified in case
1064 of host and service state changes and other events.
1068 > Rather than creating a `Notification` object for a specific host or service it is
1069 > usually easier to just create a `Notification` template and use the `apply` keyword
1070 > to assign the notification to a number of hosts or services. Use the `to` keyword
1071 > to set the specific target type for `Host` or `Service`.
1072 > Check the [notifications](03-monitoring-basics.md#alert-notifications) chapter for detailed examples.
1076 object Notification "localhost-ping-notification" {
1077 host_name = "localhost"
1078 service_name = "ping4"
1080 command = "mail-notification"
1082 users = [ "user1", "user2" ]
1084 types = [ Problem, Recovery ]
1087 Configuration Attributes:
1090 --------------------------|----------------
1091 host_name | **Required.** The name of the host this notification belongs to.
1092 service_name | **Optional.** The short name of the service this notification belongs to. If omitted, this notification object is treated as host notification.
1093 vars | **Optional.** A dictionary containing custom attributes that are specific to this notification object.
1094 users | **Optional.** A list of user names who should be notified.
1095 user_groups | **Optional.** A list of user group names who should be notified.
1096 times | **Optional.** A dictionary containing `begin` and `end` attributes for the notification.
1097 command | **Required.** The name of the notification command which should be executed when the notification is triggered.
1098 interval | **Optional.** The notification interval (in seconds). This interval is used for active notifications. Defaults to 30 minutes. If set to 0, [re-notifications](03-monitoring-basics.md#disable-renotification) are disabled.
1099 period | **Optional.** The name of a time period which determines when this notification should be triggered. Not set by default.
1100 zone |**Optional.** The zone this object is a member of.
1101 types | **Optional.** A list of type filters when this notification should be triggered. By default everything is matched.
1102 states | **Optional.** A list of state filters when this notification should be triggered. By default everything is matched.
1104 Available notification state filters for Service:
1111 Available notification state filters for Host:
1116 Available notification type filters:
1130 Name | Type | Description
1131 --------------------------|---------------|-----------------
1132 last\_notification | Number | When the last notification was sent for this Notification object (as a UNIX timestamp).
1133 next\_notification | Number | When the next notification is going to be sent for this assuming the associated host/service is still in a non-OK state (as a UNIX timestamp).
1134 notification\_number | Number | The notification number
1135 last\_problem\_notification | Number | When the last notification was sent for a problem (as a UNIX timestamp).
1138 ## NotificationCommand <a id="objecttype-notificationcommand"></a>
1140 A notification command definition.
1144 > Icinga 2 versions < 2.6.0 require the import of the [plugin-notification-command](10-icinga-template-library.md#itl-plugin-notification-command) template.
1148 object NotificationCommand "mail-service-notification" {
1149 command = [ SysconfDir + "/icinga2/scripts/mail-service-notification.sh" ]
1154 value = "$notification_address$"
1156 "-6" = "$notification_address6$"
1157 "-b" = "$notification_author$"
1158 "-c" = "$notification_comment$"
1161 value = "$notification_date$"
1165 value = "$notification_servicename$"
1168 value = "$notification_from$"
1169 description = "Set from address. Requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE)"
1171 "-i" = "$notification_icingaweb2url$"
1174 value = "$notification_hostname$"
1178 value = "$notification_hostdisplayname$"
1182 value = "$notification_serviceoutput$"
1186 value = "$notification_useremail$"
1190 value = "$notification_servicestate$"
1194 value = "$notification_type$"
1198 value = "$notification_servicedisplayname$"
1200 "-v" = "$notification_logtosyslog$"
1204 notification_address = "$address$"
1205 notification_address6 = "$address6$"
1206 notification_author = "$notification.author$"
1207 notification_comment = "$notification.comment$"
1208 notification_type = "$notification.type$"
1209 notification_date = "$icinga.long_date_time$"
1210 notification_hostname = "$host.name$"
1211 notification_hostdisplayname = "$host.display_name$"
1212 notification_servicename = "$service.name$"
1213 notification_serviceoutput = "$service.output$"
1214 notification_servicestate = "$service.state$"
1215 notification_useremail = "$user.email$"
1216 notification_servicedisplayname = "$service.display_name$"
1221 Configuration Attributes:
1224 ----------------|----------------
1225 execute |**Required.** The "execute" script method takes care of executing the notification. The default template "plugin-notification-command" which is imported into all CheckCommand objects takes care of this setting.
1226 command |**Required.** The command. This can either be an array of individual command arguments. Alternatively a string can be specified in which case the shell interpreter (usually /bin/sh) takes care of parsing the command.
1227 env |**Optional.** A dictionary of macros which should be exported as environment variables prior to executing the command.
1228 vars |**Optional.** A dictionary containing custom attributes that are specific to this command.
1229 timeout |**Optional.** The command timeout in seconds. Defaults to 60 seconds.
1230 arguments |**Optional.** A dictionary of command arguments.
1232 Command arguments can be used the same way as for [CheckCommand objects](09-object-types.md#objecttype-checkcommand-arguments).
1234 More details on specific attributes can be found in [this chapter](03-monitoring-basics.md#notification-commands).
1236 ## NotificationComponent <a id="objecttype-notificationcomponent"></a>
1238 The notification component is responsible for sending notifications. There are no configurable options.
1242 library "notification"
1244 object NotificationComponent "notification" { }
1246 Configuration Attributes:
1249 ----------------|----------------
1250 enable\_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](06-distributed-monitoring.md#distributed-monitoring-high-availability-notifications). Disabling this currently only affects reminder notifications. Defaults to "true".
1252 ## OpenTsdbWriter <a id="objecttype-opentsdbwriter"></a>
1254 Writes check result metrics and performance data to [OpenTSDB](http://opentsdb.net).
1260 object OpenTsdbWriter "opentsdb" {
1265 Configuration Attributes:
1268 ----------------------|----------------------
1269 host |**Optional.** OpenTSDB host address. Defaults to '127.0.0.1'.
1270 port |**Optional.** OpenTSDB port. Defaults to 4242.
1273 ## PerfdataWriter <a id="objecttype-perfdatawriter"></a>
1275 Writes check result performance data to a defined path using macro
1276 pattern consisting of custom attributes and runtime macros.
1282 object PerfdataWriter "pnp" {
1283 host_perfdata_path = "/var/spool/icinga2/perfdata/host-perfdata"
1285 service_perfdata_path = "/var/spool/icinga2/perfdata/service-perfdata"
1287 host_format_template = "DATATYPE::HOSTPERFDATA\tTIMET::$icinga.timet$\tHOSTNAME::$host.name$\tHOSTPERFDATA::$host.perfdata$\tHOSTCHECKCOMMAND::$host.check_command$\tHOSTSTATE::$host.state$\tHOSTSTATETYPE::$host.state_type$"
1288 service_format_template = "DATATYPE::SERVICEPERFDATA\tTIMET::$icinga.timet$\tHOSTNAME::$host.name$\tSERVICEDESC::$service.name$\tSERVICEPERFDATA::$service.perfdata$\tSERVICECHECKCOMMAND::$service.check_command$\tHOSTSTATE::$host.state$\tHOSTSTATETYPE::$host.state_type$\tSERVICESTATE::$service.state$\tSERVICESTATETYPE::$service.state_type$"
1290 rotation_interval = 15s
1293 Configuration Attributes:
1296 ------------------------|----------------
1297 host_perfdata\_path |**Optional.** Path to the host performance data file. Defaults to LocalStateDir + "/spool/icinga2/perfdata/host-perfdata".
1298 service_perfdata\_path |**Optional.** Path to the service performance data file. Defaults to LocalStateDir + "/spool/icinga2/perfdata/service-perfdata".
1299 host_temp\_path |**Optional.** Path to the temporary host file. Defaults to LocalStateDir + "/spool/icinga2/tmp/host-perfdata".
1300 service_temp\_path |**Optional.** Path to the temporary service file. Defaults to LocalStateDir + "/spool/icinga2/tmp/service-perfdata".
1301 host_format\_template |**Optional.** Host Format template for the performance data file. Defaults to a template that's suitable for use with PNP4Nagios.
1302 service_format\_template|**Optional.** Service Format template for the performance data file. Defaults to a template that's suitable for use with PNP4Nagios.
1303 rotation\_interval |**Optional.** Rotation interval for the files specified in `{host,service}_perfdata_path`. Defaults to 30 seconds.
1305 When rotating the performance data file the current UNIX timestamp is appended to the path specified
1306 in `host_perfdata_path` and `service_perfdata_path` to generate a unique filename.
1309 ## ScheduledDowntime <a id="objecttype-scheduleddowntime"></a>
1311 ScheduledDowntime objects can be used to set up recurring downtimes for hosts/services.
1315 > Rather than creating a `ScheduledDowntime` object for a specific host or service it is usually easier
1316 > to just create a `ScheduledDowntime` template and use the `apply` keyword to assign the
1317 > scheduled downtime to a number of hosts or services. Use the `to` keyword to set the specific target
1318 > type for `Host` or `Service`.
1319 > Check the [recurring downtimes](08-advanced-topics.md#recurring-downtimes) example for details.
1323 object ScheduledDowntime "some-downtime" {
1324 host_name = "localhost"
1325 service_name = "ping4"
1327 author = "icingaadmin"
1328 comment = "Some comment"
1334 "sunday" = "02:00-03:00"
1338 Configuration Attributes:
1341 ----------------|----------------
1342 host_name |**Required.** The name of the host this scheduled downtime belongs to.
1343 service_name |**Optional.** The short name of the service this scheduled downtime belongs to. If omitted, this downtime object is treated as host downtime.
1344 author |**Required.** The author of the downtime.
1345 comment |**Required.** A comment for the downtime.
1346 fixed |**Optional.** Whether this is a fixed downtime. Defaults to true.
1347 duration |**Optional.** How long the downtime lasts. Only has an effect for flexible (non-fixed) downtimes.
1348 ranges |**Required.** A dictionary containing information which days and durations apply to this timeperiod.
1350 ScheduledDowntime objects have composite names, i.e. their names are based
1351 on the `host_name` and `service_name` attributes and the
1352 name you specified. This means you can define more than one object
1353 with the same (short) name as long as one of the `host_name` and
1354 `service_name` attributes has a different value.
1357 ## Service <a id="objecttype-service"></a>
1359 Service objects describe network services and how they should be checked
1364 > Rather than creating a `Service` object for a specific host it is usually easier
1365 > to just create a `Service` template and use the `apply` keyword to assign the
1366 > service to a number of hosts.
1367 > Check the [apply](03-monitoring-basics.md#using-apply) chapter for details.
1371 object Service "uptime" {
1372 host_name = "localhost"
1374 display_name = "localhost Uptime"
1376 check_command = "check_snmp"
1378 vars.community = "public"
1379 vars.oid = "DISMAN-EVENT-MIB::sysUpTimeInstance"
1381 check_interval = 60s
1382 retry_interval = 15s
1384 groups = [ "all-services", "snmp" ]
1387 Configuration Attributes:
1390 ----------------|----------------
1391 display_name |**Optional.** A short description of the service.
1392 host_name |**Required.** The host this service belongs to. There must be a `Host` object with that name.
1393 name |**Required.** The service name. Must be unique on a per-host basis (Similar to the service_description attribute in Icinga 1.x).
1394 groups |**Optional.** The service groups this service belongs to.
1395 vars |**Optional.** A dictionary containing custom attributes that are specific to this service.
1396 check\_command |**Required.** The name of the check command.
1397 max\_check\_attempts|**Optional.** The number of times a service is re-checked before changing into a hard state. Defaults to 3.
1398 check\_period |**Optional.** The name of a time period which determines when this service should be checked. Not set by default.
1399 check\_timeout |**Optional.** Check command timeout in seconds. Overrides the CheckCommand's `timeout` attribute.
1400 check\_interval |**Optional.** The check interval (in seconds). This interval is used for checks when the service is in a `HARD` state. Defaults to 5 minutes.
1401 retry\_interval |**Optional.** The retry interval (in seconds). This interval is used for checks when the service is in a `SOFT` state. Defaults to 1 minute.
1402 enable\_notifications|**Optional.** Whether notifications are enabled. Defaults to true.
1403 enable\_active\_checks|**Optional.** Whether active checks are enabled. Defaults to true.
1404 enable\_passive\_checks|**Optional.** Whether passive checks are enabled. Defaults to true.
1405 enable\_event\_handler|**Optional.** Enables event handlers for this host. Defaults to true.
1406 enable\_flapping|**Optional.** Whether flap detection is enabled. Defaults to false.
1407 enable\_perfdata|**Optional.** Whether performance data processing is enabled. Defaults to true.
1408 event\_command |**Optional.** The name of an event command that should be executed every time the service's state changes or the service is in a `SOFT` state.
1409 flapping\_threshold|**Optional.** The flapping threshold in percent when a service is considered to be flapping.
1410 volatile |**Optional.** The volatile setting enables always `HARD` state types if `NOT-OK` state changes occur.
1411 zone |**Optional.** The zone this object is a member of.
1412 command\_endpoint|**Optional.** The endpoint where commands are executed on.
1413 notes |**Optional.** Notes for the service.
1414 notes\_url |**Optional.** Url for notes for the service (for example, in notification commands).
1415 action_url |**Optional.** Url for actions for the service (for example, an external graphing tool).
1416 icon\_image |**Optional.** Icon image for the service. Used by external interfaces only.
1417 icon\_image\_alt|**Optional.** Icon image description for the service. Used by external interface only.
1419 Service objects have composite names, i.e. their names are based on the host_name attribute and the name you specified. This means
1420 you can define more than one object with the same (short) name as long as the `host_name` attribute has a different value.
1422 The actual check interval might deviate slightly from the configured values due to the fact that Icinga tries
1423 to evenly distribute all checks over a certain period of time, i.e. to avoid load spikes.
1427 Name | Type | Description
1428 --------------------------|---------------|-----------------
1429 next\_check | Number | When the next check occurs (as a UNIX timestamp).
1430 last\_check | Number | When the last check occured (as a UNIX timestamp).
1431 check\_attempt | Number | The current check attempt number.
1432 state\_type | Number | The current state type (0 = SOFT, 1 = HARD).
1433 last\_state\_type | Number | The previous state type (0 = SOFT, 1 = HARD).
1434 last\_reachable | Boolean | Whether the service was reachable when the last check occurred.
1435 last\_check\_result | CheckResult | The current check result.
1436 last\_state\_change | Number | When the last state change occurred (as a UNIX timestamp).
1437 last\_hard\_state\_change | Number | When the last hard state change occurred (as a UNIX timestamp).
1438 last\_in\_downtime | Boolean | Whether the service was in a downtime when the last check occurred.
1439 acknowledgement | Number | The acknowledgement type (0 = NONE, 1 = NORMAL, 2 = STICKY).
1440 acknowledgement_expiry | Number | When the acknowledgement expires (as a UNIX timestamp; 0 = no expiry).
1441 downtime\_depth | Number | Whether the service has one or more active downtimes.
1442 flapping_last_change | Number | When the last flapping change occurred (as a UNIX timestamp).
1443 flapping | Boolean | Whether the host is flapping between states.
1444 state | Number | The current state (0 = OK, 1 = WARNING, 2 = CRITICAL, 3 = UNKNOWN).
1445 last\_state | Number | The previous state (0 = OK, 1 = WARNING, 2 = CRITICAL, 3 = UNKNOWN).
1446 last\_hard\_state | Number | The last hard state (0 = OK, 1 = WARNING, 2 = CRITICAL, 3 = UNKNOWN).
1447 last_state_ok | Number | When the last OK state occurred (as a UNIX timestamp).
1448 last_state_warning | Number | When the last WARNING state occurred (as a UNIX timestamp).
1449 last_state_critical | Number | When the last CRITICAL state occurred (as a UNIX timestamp).
1450 last_state_unknown | Number | When the last UNKNOWN state occurred (as a UNIX timestamp).
1453 ## ServiceGroup <a id="objecttype-servicegroup"></a>
1455 A group of services.
1459 > Assign service group members using the [group assign](17-language-reference.md#group-assign) rules.
1463 object ServiceGroup "snmp" {
1464 display_name = "SNMP services"
1467 Configuration Attributes:
1470 ----------------|----------------
1471 display_name |**Optional.** A short description of the service group.
1472 groups |**Optional.** An array of nested group names.
1475 ## StatusDataWriter <a id="objecttype-statusdatawriter"></a>
1477 Periodically writes status data files which are used by the Classic UI and other third-party tools.
1483 object StatusDataWriter "status" {
1484 status_path = "/var/cache/icinga2/status.dat"
1485 objects_path = "/var/cache/icinga2/objects.cache"
1486 update_interval = 30s
1489 Configuration Attributes:
1492 ----------------|----------------
1493 status\_path |**Optional.** Path to the status.dat file. Defaults to LocalStateDir + "/cache/icinga2/status.dat".
1494 objects\_path |**Optional.** Path to the objects.cache file. Defaults to LocalStateDir + "/cache/icinga2/objects.cache".
1495 update\_interval|**Optional.** The interval in which the status files are updated. Defaults to 15 seconds.
1498 ## SyslogLogger <a id="objecttype-sysloglogger"></a>
1500 Specifies Icinga 2 logging to syslog.
1504 object SyslogLogger "crit-syslog" {
1505 severity = "critical"
1508 Configuration Attributes:
1511 ----------------|----------------
1512 severity |**Optional.** The minimum severity for this log. Can be "debug", "notice", "information", "warning" or "critical". Defaults to "warning".
1515 ## TimePeriod <a id="objecttype-timeperiod"></a>
1517 Time periods can be used to specify when hosts/services should be checked or to limit
1518 when notifications should be sent out.
1522 object TimePeriod "nonworkhours" {
1523 import "legacy-timeperiod"
1525 display_name = "Icinga 2 TimePeriod for non working hours"
1528 monday = "00:00-8:00,17:00-24:00"
1529 tuesday = "00:00-8:00,17:00-24:00"
1530 wednesday = "00:00-8:00,17:00-24:00"
1531 thursday = "00:00-8:00,17:00-24:00"
1532 friday = "00:00-8:00,16:00-24:00"
1533 saturday = "00:00-24:00"
1534 sunday = "00:00-24:00"
1538 object TimePeriod "exampledays" {
1539 import "legacy-timeperiod"
1541 display_name = "Icinga 2 TimePeriod for random example days"
1544 //We still believe in Santa, no peeking!
1545 //Applies every 25th of December every year
1546 "december 25" = "00:00-24:00"
1548 //Any point in time can be specified,
1549 //but you still have to use a range
1550 "2038-01-19" = "03:13-03:15"
1552 //Evey 3rd day from the second monday of February
1553 //to 8th of November
1554 "monday 2 february - november 8 / 3" = "00:00-24:00"
1559 Additional examples can be found [here](08-advanced-topics.md#timeperiods).
1561 Configuration Attributes:
1564 ----------------|----------------
1565 display_name |**Optional.** A short description of the time period.
1566 update |**Required.** The "update" script method takes care of updating the internal representation of the time period. In virtually all cases you should import the "legacy-timeperiod" template to take care of this setting.
1567 ranges |**Required.** A dictionary containing information which days and durations apply to this timeperiod.
1568 prefer_includes |**Optional.** Boolean whether to prefer timeperiods `includes` or `excludes`. Default to true.
1569 excludes |**Optional.** An array of timeperiods, which should exclude from your timerange.
1570 includes |**Optional.** An array of timeperiods, which should include into your timerange
1572 The `/etc/icinga2/conf.d/timeperiods.conf` file is usually used to define
1573 timeperiods including this one.
1577 Name | Type | Description
1578 --------------------------|---------------|-----------------
1579 is\_inside | Boolean | Whether we're currently inside this timeperiod.
1582 ## User <a id="objecttype-user"></a>
1588 object User "icingaadmin" {
1589 display_name = "Icinga 2 Admin"
1590 groups = [ "icingaadmins" ]
1591 email = "icinga@localhost"
1592 pager = "icingaadmin@localhost.localdomain"
1596 states = [ OK, Warning, Critical, Unknown ]
1597 types = [ Problem, Recovery ]
1599 vars.additional_notes = "This is the Icinga 2 Admin account."
1602 Available notification state filters:
1611 Available notification type filters:
1623 Configuration Attributes:
1626 ----------------|----------------
1627 display_name |**Optional.** A short description of the user.
1628 email |**Optional.** An email string for this user. Useful for notification commands.
1629 pager |**Optional.** A pager string for this user. Useful for notification commands.
1630 vars |**Optional.** A dictionary containing custom attributes that are specific to this user.
1631 groups |**Optional.** An array of group names.
1632 enable_notifications|**Optional.** Whether notifications are enabled for this user.
1633 period |**Optional.** The name of a time period which determines when a notification for this user should be triggered. Not set by default.
1634 types |**Optional.** A set of type filters when this notification should be triggered. By default everything is matched.
1635 states |**Optional.** A set of state filters when this notification should be triggered. By default everything is matched.
1639 Name | Type | Description
1640 --------------------------|---------------|-----------------
1641 last\_notification | Number | When the last notification was sent for this user (as a UNIX timestamp).
1643 ## UserGroup <a id="objecttype-usergroup"></a>
1649 > Assign user group members using the [group assign](17-language-reference.md#group-assign) rules.
1653 object UserGroup "icingaadmins" {
1654 display_name = "Icinga 2 Admin Group"
1657 Configuration Attributes:
1660 ----------------|----------------
1661 display_name |**Optional.** A short description of the user group.
1662 groups |**Optional.** An array of nested group names.
1665 ## Zone <a id="objecttype-zone"></a>
1667 Zone objects are used to specify which Icinga 2 instances are located in a zone.
1671 object Zone "config-ha-master" {
1672 endpoints = [ "icinga2a", "icinga2b" ]
1676 object Zone "check-satellite" {
1677 endpoints = [ "icinga2c" ]
1678 parent = "config-ha-master"
1681 Configuration Attributes:
1684 ----------------|----------------
1685 endpoints |**Optional.** Array of endpoint names located in this zone.
1686 parent |**Optional.** The name of the parent zone.
1687 global |**Optional.** Whether configuration files for this zone should be synced to all endpoints. Defaults to false.
1689 Zone objects cannot currently be created with the API.
1691 # Value Types <a id="value-types"></a>
1693 In addition to [configuration objects](09-object-types.md#object-types) Icinga 2 also uses a few other types to represent its internal state. The following types are exposed via the [API](12-icinga2-api.md#icinga2-api).
1695 ## CheckResult <a id="value-types-checkresult"></a>
1697 Name | Type | Description
1698 --------------------------|---------------|-----------------
1699 exit_status | Number | The exit status returned by the check execution.
1700 output | String | The check output.
1701 performance_data | Array | Array of [performance data values](09-object-types.md#value-types-perfdatavalue).
1702 check_source | String | Name of the node executing the check.
1703 state | Number | The current state (0 = OK, 1 = WARNING, 2 = CRITICAL, 3 = UNKNOWN).
1704 command | Value | Array of command with shell-escaped arguments or command line string.
1705 execution_start | Number | Check execution start time (as a UNIX timestamp).
1706 execution_end | Number | Check execution end time (as a UNIX timestamp).
1707 schedule_start | Number | Scheduled check execution start time (as a UNIX timestamp).
1708 schedule_end | Number | Scheduled check execution end time (as a UNIX timestamp).
1709 active | Boolean | Whether the result is from an active or passive check.
1710 vars_before | Dictionary | Internal attribute used for calculations.
1711 vars_after | Dictionary | Internal attribute used for calculations.
1713 ## PerfdataValue <a id="value-types-perfdatavalue"></a>
1715 Icinga 2 parses performance data strings returned by check plugins and makes the information available to external interfaces (e.g. [GraphiteWriter](09-object-types.md#objecttype-graphitewriter) or the [Icinga 2 API](12-icinga2-api.md#icinga2-api)).
1717 Name | Type | Description
1718 --------------------------|---------------|-----------------
1719 label | String | Performance data label.
1720 value | Number | Normalized performance data value without unit.
1721 counter | Boolean | Enabled if the original value contains `c` as unit. Defaults to `false`.
1722 unit | String | Unit of measurement (`seconds`, `bytes`. `percent`) according to the [plugin API](05-service-monitoring.md#service-monitoring-plugin-api).
1723 crit | Value | Critical threshold value.
1724 warn | Value | Warning threshold value.
1725 min | Value | Minimum value returned by the check.
1726 max | Value | Maximum value returned by the check.