# Appendix
## Icinga Template Library
### Overview
The Icinga Template Library (ITL) implements standard templates and object
definitions for commonly used services.
You can include the ITL by using the `include` directive in your configuration
file:
include
### Generic Templates
These templates are imported by the provided example configuration.
#### plugin-check-command
Check command template for plugins executed by Icinga 2.
The `plugin-check-command` check command does not support any vars.
#### plugin-check-command
Check command template for notification scripts executed by Icinga 2.
The `plugin-notification-command` check command does not support any vars.
#### plugin-check-command
Check command template for event handler scripts executed by Icinga 2.
The `plugin-event-command` check command does not support any vars.
### Check Commands
These check commands are embedded into Icinga 2 and do not require any external
plugin scripts.
#### icinga
Check command for the built-in `icinga` check. This check returns performance
data for the current Icinga instance.
The `icinga` check command does not support any vars.
#### cluster
Check command for the built-in `cluster` check. This check returns performance
data for the current Icinga instance and connected endpoints.
The `cluster` check command does not support any vars.
## Plugin Check Commands
### Overview
The Plugin Check Commands provides example configuration for plugin check commands
provided by the the Monitoring Plugins project.
You can include the plugin check command definitions by using the `include`
directive in your configuration file:
include
The plugin check commands assume that there's a global constant named `PluginDir`
which contains the path of the plugins from the Monitoring Plugins project.
#### ping4
Check command object for the `check_ping` plugin.
Custom Attributes:
Name | Description
----------------|--------------
ping_address | **Optional.** The host's IPv4 address. Defaults to "$address$".
ping_wrta | **Optional.** The RTA warning threshold in milliseconds. Defaults to 100.
ping_wpl | **Optional.** The packet loss warning threshold in %. Defaults to 5.
ping_crta | **Optional.** The RTA critical threshold in milliseconds. Defaults to 200.
ping_cpl | **Optional.** The packet loss critical threshold in %. Defaults to 15.
ping_packets | **Optional.** The number of packets to send. Defaults to 5.
ping_timeout | **Optional.** The plugin timeout in seconds. Defaults to 0 (no timeout).
#### ping6
Check command object for the `check_ping` plugin.
Custom Attributes:
Name | Description
----------------|--------------
ping_address | **Optional.** The host's IPv6 address. Defaults to "$address6$".
ping_wrta | **Optional.** The RTA warning threshold in milliseconds. Defaults to 100.
ping_wpl | **Optional.** The packet loss warning threshold in %. Defaults to 5.
ping_crta | **Optional.** The RTA critical threshold in milliseconds. Defaults to 200.
ping_cpl | **Optional.** The packet loss critical threshold in %. Defaults to 15.
ping_packets | **Optional.** The number of packets to send. Defaults to 5.
ping_timeout | **Optional.** The plugin timeout in seconds. Defaults to 0 (no timeout).
#### hostalive
Check command object for the `check_ping` plugin with host check default values.
Custom Attributes:
Name | Description
----------------|--------------
ping_address | **Optional.** The host's IPv4 address. Defaults to "$address$".
ping_wrta | **Optional.** The RTA warning threshold in milliseconds. Defaults to 3000.
ping_wpl | **Optional.** The packet loss warning threshold in %. Defaults to 80.
ping_crta | **Optional.** The RTA critical threshold in milliseconds. Defaults to 5000.
ping_cpl | **Optional.** The packet loss critical threshold in %. Defaults to 100.
ping_packets | **Optional.** The number of packets to send. Defaults to 5.
ping_timeout | **Optional.** The plugin timeout in seconds. Defaults to 0 (no timeout).
#### dummy
Check command object for the `check_dummy` plugin.
Custom Attributes:
Name | Description
----------------|--------------
dummy_state | **Optional.** The state. Can be one of 0 (ok), 1 (warning), 2 (critical) and 3 (unknown). Defaults to 0.
dummy_text | **Optional.** Plugin output. Defaults to "Check was successful.".
#### passive
Specialised check command object for passive checks executing the `check_dummy` plugin with appropriate default values.
Custom Attributes:
Name | Description
----------------|--------------
dummy_state | **Optional.** The state. Can be one of 0 (ok), 1 (warning), 2 (critical) and 3 (unknown). Defaults to 3.
dummy_text | **Optional.** Plugin output. Defaults to "No Passive Check Result Received.".
#### tcp
Check command object for the `check_tcp` plugin.
Custom Attributes:
Name | Description
----------------|--------------
tcp_address | **Optional.** The host's address. Defaults to "$address$".
tcp_port | **Required.** The port that should be checked.
#### udp
Check command object for the `check_udp` plugin.
Custom Attributes:
Name | Description
----------------|--------------
udp_address | **Optional.** The host's address. Defaults to "$address$".
udp_port | **Required.** The port that should be checked.
#### http
Check command object for the `check_http` plugin.
Custom Attributes:
Name | Description
-------------------|--------------
http_address | **Optional.** The host's address. Defaults to "$address".
http_vhost | **Optional.** The virtual host that should be sent in the "Host" header.
http_uri | **Optional.** The request URI.
http_port | **Optional.** The TCP port. Defaults to 80 when not using SSL, 443 otherwise.
http_ssl | **Optional.** Whether to use SSL. Defaults to false.
http_warn_time | **Optional.** The warning threshold.
http_critical_time | **Optional.** The critical threshold.
#### smtp
Check command object for the `check_smtp` plugin.
Custom Attributes:
Name | Description
---------------------|--------------
smtp_address | **Optional.** The host's address. Defaults to "$address$".
#### ssmtp
Check command object for the `check_ssmtp` plugin.
Custom Attributes:
Name | Description
----------------|--------------
ssmtp_address | **Required.** The host's address. Defaults to "$address$".
ssmtp_port | **Optional.** The port that should be checked. Defaults to 465.
#### ntp_time
Check command object for the `check_ntp_time` plugin.
Custom Attributes:
Name | Description
----------------|--------------
ntp_address | **Optional.** The host's address. Defaults to "$address$".
#### ssh
Check command object for the `check_ssh` plugin.
Custom Attributes:
Name | Description
----------------|--------------
ssh_address | **Optional.** The host's address. Defaults to "$address$".
ssh_port | **Optional.** The port that should be checked. Defaults to 22.
#### disk
Check command object for the `check_disk` plugin.
Custom Attributes:
Name | Description
----------------|--------------
disk_wfree | **Optional.** The free space warning threshold in %. Defaults to 20.
disk_cfree | **Optional.** The free space critical threshold in %. Defaults to 10.
#### users
Check command object for the `check_disk` plugin.
Custom Attributes:
Name | Description
----------------|--------------
users_wgreater | **Optional.** The user count warning threshold. Defaults to 20.
users_cgreater | **Optional.** The user count critical threshold. Defaults to 50.
#### procs
Check command object for the `check_procs` plugin.
Custom Attributes:
Name | Description
----------------|--------------
procs_wgreater | **Optional.** The process count warning threshold. Defaults to 250.
procs_cgreater | **Optional.** The process count critical threshold. Defaults to 400.
#### swap
Check command object for the `check_swap` plugin.
Custom Attributes:
Name | Description
----------------|--------------
swap_wfree | **Optional.** The free swap space warning threshold in %. Defaults to 50.
swap_cfree | **Optional.** The free swap space critical threshold in %. Defaults to 25.
#### load
Check command object for the `check_load` plugin.
Custom Attributes:
Name | Description
----------------|--------------
load_wload1 | **Optional.** The 1-minute warning threshold. Defaults to 5.
load_wload5 | **Optional.** The 5-minute warning threshold. Defaults to 4.
load_wload15 | **Optional.** The 15-minute warning threshold. Defaults to 3.
load_cload1 | **Optional.** The 1-minute critical threshold. Defaults to 10.
load_cload5 | **Optional.** The 5-minute critical threshold. Defaults to 6.
load_cload15 | **Optional.** The 15-minute critical threshold. Defaults to 4.
#### snmp
Check command object for the `check_snmp` plugin.
Custom Attributes:
Name | Description
----------------|--------------
snmp_address | **Optional.** The host's address. Defaults to "$address$".
snmp_oid | **Required.** The SNMP OID.
snmp_community | **Optional.** The SNMP community. Defaults to "public".
#### snmp-uptime
Check command object for the `check_snmp` plugin.
Custom Attributes:
Name | Description
----------------|--------------
snmp_address | **Optional.** The host's address. Defaults to "$address$".
snmp_oid | **Optional.** The SNMP OID. Defaults to "1.3.6.1.2.1.1.3.0".
snmp_community | **Optional.** The SNMP community. Defaults to "public".
#### apt
Check command for the `check_apt` plugin.
The `apt` check command does not support any vars.
## Schemas
### Status Files
Status files used by Icinga 1.x Classic UI: `status.dat`, `objects.cache`.
Icinga 2 specific extensions:
* host and service objects support 'check_source' (added in Classic UI 1.10.0)
* command objects support custom variables (added in Classic UI 1.11.2)
* host and service objects support 'is_reachable' (added in Classic UI 1.11.3)
### DB IDO
There is a detailed documentation for the Icinga IDOUtils 1.x
database schema available on [http://docs.icinga.org/latest/en/db_model.html]
#### DB IDO Schema Extensions
Icinga 2 specific extensions are shown below:
New tables: `endpoints`, `endpointstatus`
Table | Column | Type | Default | Description
--------------------|--------------------|----------|---------|-------------
endpoints | endpoint_object_id | bigint | NULL | FK: objects table
endpoints | identity | TEXT | NULL | endpoint name
endpoints | node | TEXT | NULL | local node name
Table | Column | Type | Default | Description
--------------------|--------------------|----------|---------|-------------
endpointstatus | endpoint_object_id | bigint | NULL | FK: objects table
endpointstatus | identity | TEXT | NULL | endpoint name
endpointstatus | node | TEXT | NULL | local node name
endpointstatus | is_connected | smallint | 0 | update on endpoint connect/disconnect
New columns:
Table | Column | Type | Default | Description
--------------------|-------------------------|----------|---------|-------------
all status/history | endpoint_object_id | bigint | NULL | FK: objects table
servicestatus | check_source | TEXT | NULL | node name where check was executed
hoststatus | check_source | TEXT | NULL | node name where check was executed
statehistory | check_source | TEXT | NULL | node name where check was executed
servicestatus | is_reachable | integer | NULL | object reachability
hoststatus | is_reachable | integer | NULL | object reachability
logentries | object_id | bigint | NULL | FK: objects table (service associated with column)
{host,service}group | notes | TEXT | NULL | -
{host,service}group | notes_url | TEXT | NULL | -
{host,service}group | action_url | TEXT | NULL | -
Additional command custom variables populated from 'vars' dictionary.
Additional global custom variables populated from 'Vars' constant (object_id is NULL).
### Livestatus
#### Livestatus Tables
Table | Join |Description
--------------|-----------|----------------------------
hosts | | host config and status attributes, services counter
hostgroups | | hostgroup config, status attributes and host/service counters
services | hosts | service config and status attributes
servicegroups | | servicegroup config, status attributes and service counters
contacts | | contact config and status attributes
contactgroups | | contact config, members
commands | | command name and line
status | | programstatus, config and stats
comments | services | status attributes
downtimes | services | status attributes
timeperiods | | name and is inside flag
endpoints | | config and status attributes
log | services, hosts, contacts, commands | parses [compatlog](#objecttype-compatlogger) and shows log attributes
statehist | hosts, services | parses [compatlog](#objecttype-compatlogger) and aggregates state change attributes
The `commands` table is populated with `CheckCommand`, `EventCommand` and `NotificationCommand` objects.
#### Livestatus Table Attributes
A detailed list which table attributes are supported can be found here: [https://wiki.icinga.org/display/icinga2/Livestatus#Livestatus-Attributes]
#### Livestatus GET Queries
$ echo -e 'GET services' | netcat 127.0.0.1 6558
$ cat servicegroups < Livestatus COMMAND Queries
A list of available external commands and their parameters can be found [here](#external-commands-list-detail)
$ echo -e 'COMMAND ' | netcat 127.0.0.1 6558
#### Livestatus Filters
and, or, negate
Operator | Negate | Description
----------|------------------------
= | != | Euqality
~ | !~ | Regex match
=~ | !=~ | Euqality ignoring case
~~ | !~~ | Regex ignoring case
> | | Less than
< | | Greater than
>= | | Less than or equal
<= | | Greater than or equal
#### Livestatus Stats
Schema: "Stats: aggregatefunction aggregateattribute"
Aggregate Function | Description
-------------------|--------------
sum |
min |
max |
avg | sum / count
std | standard deviation
suminv | sum (1 / value)
avginv | suminv / count
count | ordinary default for any stats query if not aggregate function defined
Example:
GET hosts
Filter: has_been_checked = 1
Filter: check_type = 0
Stats: sum execution_time
Stats: sum latency
Stats: sum percent_state_change
Stats: min execution_time
Stats: min latency
Stats: min percent_state_change
Stats: max execution_time
Stats: max latency
Stats: max percent_state_change
OutputFormat: json
ResponseHeader: fixed16
#### Livestatus Output
* CSV
CSV Output uses two levels of array seperators: The members array separator
is a comma (1st level) while extra info and host|service relation separator
is a pipe (2nd level).
Seperators can be set using ASCII codes like:
Separators: 10 59 44 124
* JSON
Default separators.
#### Livestatus Error Codes
Code | Description
----------|--------------
200 | OK
404 | Table does not exist
452 | Exception on query
#### Livestatus Schema Extensions
Icinga 2 specific extensions are shown below:
New table: `endpoints`
Table | Column
----------|--------------
endpoints | name
endpoints | identity
endpoints | node
endpoints | is_connected
New columns:
Table | Column
----------|--------------
hosts | is_reachable
services | is_reachable
hosts | check_source
services | check_source
downtimes | triggers
downtimes | trigger_time
commands | custom_variable_names
commands | custom_variable_values
commands | custom_variables
commands | modified_attributes
commands | modified_attributes_list
status | custom_variable_names
status | custom_variable_values
status | custom_variables
Command custom variables reflect the local 'vars' dictionary.
Status custom variables reflect the global 'Vars' constant.
## External Commands List
Additional details can be found in the [Icinga 1.x Documentation](http://docs.icinga.org/latest/en/extcommands2.html)
Command name | Parameters | Description
------------------------------------------|-----------------------------------|--------------------------
PROCESS_HOST_CHECK_RESULT | ;;; (3) | -
PROCESS_SERVICE_CHECK_RESULT | ;;;; (4) | -
SCHEDULE_HOST_CHECK | ;; (2) | -
SCHEDULE_FORCED_HOST_CHECK | ;; (2) | -
SCHEDULE_SVC_CHECK | ;;; (3) | -
SCHEDULE_FORCED_SVC_CHECK | ;;; (3) | -
ENABLE_HOST_CHECK | ; (1) | -
DISABLE_HOST_CHECK | ; (1) | -
ENABLE_SVC_CHECK | ;; (2) | -
DISABLE_SVC_CHECK | ;; (2) | -
SHUTDOWN_PROCESS | (0) | -
RESTART_PROCESS | (0) | -
SCHEDULE_FORCED_HOST_SVC_CHECKS | ;; (2) | -
SCHEDULE_HOST_SVC_CHECKS | ;; (2) | -
ENABLE_HOST_SVC_CHECKS | ; (1) | -
DISABLE_HOST_SVC_CHECKS | ; (1) | -
ACKNOWLEDGE_SVC_PROBLEM | ;;;;;;; (7) | Note: Icinga 2 treats all comments as persistent.
ACKNOWLEDGE_SVC_PROBLEM_EXPIRE | ;;;;;;;; (8) | Note: Icinga 2 treats all comments as persistent.
REMOVE_SVC_ACKNOWLEDGEMENT | ;; (2) | -
ACKNOWLEDGE_HOST_PROBLEM | ;;;;;; (6) | Note: Icinga 2 treats all comments as persistent.
ACKNOWLEDGE_HOST_PROBLEM_EXPIRE | ;;;;;;; (7) | Note: Icinga 2 treats all comments as persistent.
REMOVE_HOST_ACKNOWLEDGEMENT | ; (1) | -
DISABLE_HOST_FLAP_DETECTION | ; (1) | -
ENABLE_HOST_FLAP_DETECTION | ; (1) | -
DISABLE_SVC_FLAP_DETECTION | ;; (2) | -
ENABLE_SVC_FLAP_DETECTION | ;; (2) | -
ENABLE_HOSTGROUP_SVC_CHECKS | ; (1) | -
DISABLE_HOSTGROUP_SVC_CHECKS | ; (1) | -
ENABLE_SERVICEGROUP_SVC_CHECKS | ; (1) | -
DISABLE_SERVICEGROUP_SVC_CHECKS | ; (1) | -
ENABLE_PASSIVE_HOST_CHECKS | ; (1) | -
DISABLE_PASSIVE_HOST_CHECKS | ; (1) | -
ENABLE_PASSIVE_SVC_CHECKS | ;; (2) | -
DISABLE_PASSIVE_SVC_CHECKS | ;; (2) | -
ENABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS | ; (1) | -
DISABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS | ; (1) | -
ENABLE_HOSTGROUP_PASSIVE_SVC_CHECKS | ; (1) | -
DISABLE_HOSTGROUP_PASSIVE_SVC_CHECKS | ; (1) | -
PROCESS_FILE | ;; (2) | -
SCHEDULE_SVC_DOWNTIME | ;;;;;;;;; (9) | -
DEL_SVC_DOWNTIME | ; (1) | -
SCHEDULE_HOST_DOWNTIME | ;;;;;;;; (8) | -
DEL_HOST_DOWNTIME | ; (1) | -
SCHEDULE_HOST_SVC_DOWNTIME | ;;;;;;;; (8) | -
SCHEDULE_HOSTGROUP_HOST_DOWNTIME | ;;;;;;;; (8) | -
SCHEDULE_HOSTGROUP_SVC_DOWNTIME | ;;;;;;;; (8) | -
SCHEDULE_SERVICEGROUP_HOST_DOWNTIME | ;;;;;;;; (8) | -
SCHEDULE_SERVICEGROUP_SVC_DOWNTIME | ;;;;;;;; (8) | -
ADD_HOST_COMMENT | ;;;; (4) | Note: Icinga 2 treats all comments as persistent.
DEL_HOST_COMMENT | ; (1) | -
ADD_SVC_COMMENT | ;;;;; (5) | Note: Icinga 2 treats all comments as persistent.
DEL_SVC_COMMENT | ; (1) | -
DEL_ALL_HOST_COMMENTS | ; (1) | -
DEL_ALL_SVC_COMMENTS | ;; (2) | -
SEND_CUSTOM_HOST_NOTIFICATION | ;;;; (4) | -
SEND_CUSTOM_SVC_NOTIFICATION | ;;;;; (5) | -
DELAY_HOST_NOTIFICATION | ;; (2) | -
DELAY_SVC_NOTIFICATION | ;;; (3) | -
ENABLE_HOST_NOTIFICATIONS | ; (1) | -
DISABLE_HOST_NOTIFICATIONS | ; (1) | -
ENABLE_SVC_NOTIFICATIONS | ;; (2) | -
DISABLE_SVC_NOTIFICATIONS | ;; (2) | -
DISABLE_HOSTGROUP_HOST_CHECKS | ; (1) | -
DISABLE_HOSTGROUP_PASSIVE_HOST_CHECKS | ; (1) | -
DISABLE_SERVICEGROUP_HOST_CHECKS | ; (1) | -
DISABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS | ; (1) | -
ENABLE_HOSTGROUP_HOST_CHECKS | ; (1) | -
ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS | ; (1) | -
ENABLE_SERVICEGROUP_HOST_CHECKS | ; (1) | -
ENABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS | ; (1) | -
ENABLE_NOTIFICATIONS | (0) | -
DISABLE_NOTIFICATIONS | (0) | -
ENABLE_FLAP_DETECTION | (0) | -
DISABLE_FLAP_DETECTION | (0) | -
ENABLE_EVENT_HANDLERS | (0) | -
DISABLE_EVENT_HANDLERS | (0) | -
ENABLE_PERFORMANCE_DATA | (0) | -
DISABLE_PERFORMANCE_DATA | (0) | -
START_EXECUTING_HOST_CHECKS | (0) | -
STOP_EXECUTING_HOST_CHECKS | (0) | -
START_EXECUTING_SVC_CHECKS | (0) | -
STOP_EXECUTING_SVC_CHECKS | (0) | -
CHANGE_SVC_MODATTR | ;;; (3) | -
CHANGE_HOST_MODATTR | ;; (2) | -
CHANGE_USER_MODATTR | ;; (2) | -
CHANGE_CHECKCOMMAND_MODATTR | ;; (2) | -
CHANGE_EVENTCOMMAND_MODATTR | ;; (2) | -
CHANGE_NOTIFICATIONCOMMAND_MODATTR | ;; (2) | -
CHANGE_NORMAL_SVC_CHECK_INTERVAL | ;;; (3) | -
CHANGE_NORMAL_HOST_CHECK_INTERVAL | ;; (2) | -
CHANGE_RETRY_SVC_CHECK_INTERVAL | ;;; (3) | -
CHANGE_RETRY_HOST_CHECK_INTERVAL | ;; (2) | -
ENABLE_HOST_EVENT_HANDLER | ; (1) | -
DISABLE_HOST_EVENT_HANDLER | ; (1) | -
ENABLE_SVC_EVENT_HANDLER | ;; (2) | -
DISABLE_SVC_EVENT_HANDLER | ;; (2) | -
CHANGE_HOST_EVENT_HANDLER | ;; (2) | -
CHANGE_SVC_EVENT_HANDLER | ;;; (3) | -
CHANGE_HOST_CHECK_COMMAND | ;; (2) | -
CHANGE_SVC_CHECK_COMMAND | ;;; (3) | -
CHANGE_MAX_HOST_CHECK_ATTEMPTS | ;; (2) | -
CHANGE_MAX_SVC_CHECK_ATTEMPTS | ;;; (3) | -
CHANGE_HOST_CHECK_TIMEPERIOD | ;; (2) | -
CHANGE_SVC_CHECK_TIMEPERIOD | ;;; | -
CHANGE_CUSTOM_HOST_VAR | ;;; (3) | -
CHANGE_CUSTOM_SVC_VAR | ;;;; (4) | -
CHANGE_CUSTOM_USER_VAR | ;;; (3) | -
CHANGE_CUSTOM_CHECKCOMMAND_VAR | ;;; (3) | -
CHANGE_CUSTOM_EVENTCOMMAND_VAR | ;;; (3) | -
CHANGE_CUSTOM_NOTIFICATIONCOMMAND_VAR | ;;;