]> granicus.if.org Git - icinga2/commitdiff
Documentation: Reduce 33 to 3 TODOs.
authorMichael Friedrich <michael.friedrich@netways.de>
Fri, 18 Oct 2013 18:05:08 +0000 (20:05 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Fri, 18 Oct 2013 18:05:08 +0000 (20:05 +0200)
15 files changed:
doc/1-about.md
doc/2.1-setting-up-icinga-2.md
doc/2.2-setting-up-icinga-classic-ui.md
doc/2.3-setting-up-check-plugins.md
doc/2.4-setting-up-ido.md
doc/3.06-groups.md
doc/3.07-time-periods.md
doc/3.09-event-handlers.md
doc/3.10-logging.md
doc/3.11-performance-data.md
doc/3.12-status-data.md
doc/3.13-compat-logging.md
doc/3.14-check-result-files.md
doc/4.3-object-types.md
doc/6-advanced-topics.md

index 3b2b1f79ad6e2f1735a01914010796f4192f820e..b8c7ee6b5d50689a31e41e751f22e98c4f812aa8 100644 (file)
@@ -2,7 +2,10 @@
 
 ## What is Icinga 2?
 
-Icinga 2 is an enterprise-grade open source monitoring system which keeps watch over networks and any conceivable network resource, notifies the user of errors and recoveries and generates performance data for reporting. Scalable and extensible, Icinga can monitor complex, large environments across dispersed locations.
+Icinga 2 is an enterprise-grade open source monitoring system which keeps watch over networks
+and any conceivable network resource, notifies the user of errors and recoveries and generates
+performance data for reporting. Scalable and extensible, Icinga 2 can monitor complex, large
+environments across dispersed locations.
 
 ## Licensing
 
@@ -13,8 +16,27 @@ LICENSE file included in the package.
 ## Support
 
 Support for Icinga 2 is available in a number of ways. Please have a look at
-the support overview page at https://www.icinga.org/support/.
+the support overview page at [https://support.icinga.org].
 
 ## What's New in Version 0.0.3
 
-* Lots of things.
+* `StatusDataWriter` and `ExternalCommandListener` (former `Compat`) and `CompatLogger`
+(former CompatLog) for status.dat/objects.cache/icinga2.cmd/icinga.log for Icinga 1.x Classic UI support
+* `IdoMysqlConnection` and `ExternalCommandListener` for Icinga 1.x Web
+* `IdoMysqlConnection` for Icinga 1.x Reporting, NagVis
+* `LivestatusListener` for addons using the livestatus interface (history tables tbd)
+* `PerfDataWriter` for graphing addons such as PNP/inGraph/graphite (can be loaded multiple times!)
+* `GraphiteWriter` for sending metrics to directly to graphite carbon sockets
+* `CheckResultReader` to collect Icinga 1.x slave checkresults (migrate your distributed setup step-by-step)
+* `ClusterListener` for real distributed architecture including config and runtime data (checks, comments, downtimes) sync and replay
+* `SyslogLogger`, `FileLogger` and `ConsoleLogger` for different types of logging
+* Domain support for distributed cluster environments
+* Config migration script supporting easier migration from Icinga 1.x configuration
+* Reviewed configuration options, additional attributes added
+* Enhanced ITL, added sample configuration
+* Enable/Disable Icinga 2 features on CLI
+* Documentation using Markdown (`Getting Started`, `Monitoring Basics`, `Object Types`, `Icinga Template Library`,
+`Advanced Topics`, `Migration from Icinga 1.x`, `Differences between Icinga 1.x and 2`, `Vagrant Demo VM`)
+* Vagrant Demo VM supported by Puppet modules installing RPM snapshots for Icinga 2, Icinga 1.x Classic UI and Web
+* Package snapshots available on [packages.icinga.org]
+
index ff2b56a9f324814989e81d200b7bbd704ed7b4de..80b47ef3214bfd02c9270c4577667b85e1044c19 100644 (file)
@@ -129,34 +129,50 @@ The `conf.d/localhost.conf` file contains our first host definition:
      */
     object Host "localhost" {
       services["ping4"] = {
+        templates = [ "generic-service" ],
+
         check_command = "ping4"
       },
 
       services["ping6"] = {
+        templates = [ "generic-service" ],
+
         check_command = "ping6"
       },
 
       services["http"] = {
+        templates = [ "generic-service" ],
+
         check_command = "http_ip"
       },
 
       services["ssh"] = {
+        templates = [ "generic-service" ],
+
         check_command = "ssh"
       },
 
       services["load"] = {
+        templates = [ "generic-service" ],
+
         check_command = "load"
       },
 
       services["processes"] = {
+        templates = [ "generic-service" ],
+
         check_command = "processes"
       },
 
       services["users"] = {
+        templates = [ "generic-service" ],
+
         check_command = "users"
       },
 
       services["disk"] = {
+        templates = [ "generic-service" ],
+
         check_command = "disk"
       },
 
index 176e39eafef7b3b1bbb2785e31c491ac46b9c790..e806cd0f77c145de53bcc21e88886837d4ac2de6 100644 (file)
@@ -10,14 +10,14 @@ log files which are required for the reporting functionality in the Classic UI.
 You can download and build Icinga 1.x Classic UI in standalone mode using the
 following commands:
 
-    $ wget http://downloads.sourceforge.net/project/icinga/icinga/1.9.3/icinga-1.9.3.tar.gz
-    $ tar xzf icinga-1.9.3.tar.gz ; cd icinga-1.9.3
+    $ wget http://downloads.sourceforge.net/project/icinga/icinga/1.10.0/icinga-1.10.0.tar.gz
+    $ tar xzf icinga-1.10.0.tar.gz ; cd icinga-1.10.0
     $ ./configure --enable-classicui-standalone --prefix=/usr/local/icinga2-classicui
     $ make classicui-standalone
 
 Once you've built Classic UI you can install it:
 
-    # make install-classicui-standalone install-webconf-auth
+    # make install-classicui-standalone install-classicui-standalone-conf install-webconf-auth
     # service apache2 restart
 
 > **Note**
index 848b0579191000139bbab7f041cb881856f8786c..6822acb46cb9f29bdcc0ae387a5d480446477b14 100644 (file)
@@ -20,3 +20,27 @@ Depending on which directory your plugins are installed into you may need to
 update the `plugindir` macro in your Icinga 2 configuration. This macro is used
 by the service templates contained in the Icinga Template Library to determine
 where to find the plugin binaries.
+
+### Integrate Additonal Plugins
+
+You may require a custom check plugin not provided by the official Nagios plugins.
+All existing Nagios or Icinga 1.x plugins found on public community websites
+will work with Icinga 2 as well.
+
+* [MonitoringExchange](https://www.monitoringexchange.org)
+* [Icinga Wiki]()
+
+Once you have downloaded the plugin copy them into the directory defined by the global
+`IcingaMacro` `$plugindir$` and make sure that the user the Icinga daemon is running as
+can execute the the plugin binary. Plugins should provide the `--help` parameter
+providing details how they must get called in your command definition later on.
+
+    # cp check_snmp_int.pl /usr/local/icinga/libexec/
+    # chmod +x /usr/local/icinga/libexec/check_snmp_int.pl
+    
+    # /usr/local/icinga/libexec/check_snmp_int.pl --help
+    
+> **Note**
+>
+> You may require additional libraries for scripts. Please consult the installation
+> documentation and/or README for their installation requirements.
index be58c426f0eaee54764d8b43bf5b892dc3827ea0..8bf656d327a52e42551c66e7cfb914af4f39818d 100644 (file)
@@ -42,8 +42,8 @@ following command:
 > **Note**
 >
 > The Icinga 2 RPM packages install the schema files into
-> `/usr/share/doc/icinga2-ido-mysql-*/schema`. The Icinga 2 dist tarball ships
-> the schema files in `components/db_ido_mysql/schema/`.
+> `/usr/share/doc/icinga2-ido-mysql-*/schema` (`*` means package version).
+> The Icinga 2 dist tarball ships the schema files in `components/db_ido_mysql/schema/`.
 
 ### Upgrading the database
 
index f06c1f13e52d13797f8e8c7da5f91007ae491746..89634728bab8f909f754302834a5b817acbcc7f0 100644 (file)
@@ -1,3 +1,84 @@
 ## Groups
 
-TODO
+Groups are used for combining hosts, services and users into
+accessible configuration attributes and views in external (web)
+interfaces.
+
+Group membership is defined at the respective object itself. If
+you have a hostgroup name `windows` for example, and want to assign
+specific hosts to this group for later viewing the group on your
+alert dashboard, first create the hostgroup:
+
+    object HostGroup "windows" {
+      display_name = "Windows Servers"
+    }
+    
+Then add your hosts to this hostgroup
+
+    object Host "mssql-srv1" {
+      groups = [ "windows" ],
+      macros = {
+        "mssql_port" = 1433
+      }
+    }
+    
+    object Host "mssql-srv2" {
+      groups = [ "windows" ],
+      macros = {
+        "mssql_port" = 1433
+      }
+    }
+
+> **Best Practice**
+>
+> Add the hostgroup membership into generic templates combined with
+> other attributes and let all windows hosts inherit from that template.
+> You can also define multiple group memberships.
+
+    template Host "windows-mssql-template" {
+      groups = [ "windows" ],
+      macros = {
+        "mssql_port" = 1433
+      }
+    }
+    
+    object Host "mssql-srv1" {
+      templates = [ "windows-mssql-template" ]
+    }
+    
+    object Host "mssql-srv2" {
+      templates = [ "windows-mssql-template" ]
+    }    
+
+This can be done for service and user groups the same way. Additionally
+the user groups are associated as attributes in `Notification` objects.
+
+    object UserGroup "windows-mssql-admins" {
+      display_name = "Windows MSSQL Admins"
+    }
+    
+    template User "generic-windows-mssql-users" {
+      groups = [ "windows-mssql-admins" ]
+    }
+    
+    object User "win-mssql-noc" inherits "generic-windows-mssql-users" {
+      macros = {
+        "email" = "noc@company.com"
+      }
+    }
+    
+    object User "win-mssql-ops" inherits "generic-windows-mssql-users" {
+      macros = {
+        "email" = "ops@company.com"
+      }    
+    }
+
+    object Host "localhost" {
+      services["ping4"] = {
+        notifications["mail"] = {
+          templates = [ "generic-notification" ],
+          notification_command = "mail-notification",
+          user_groups = [ "windows-admins" ],
+        }      
+      }
+    }
index 0ef2f9a626eb98be60f67a1ec7180b6c995d581e..afcef40ae01c1d7915308090a4602bd099ca8d47 100644 (file)
@@ -1,3 +1,74 @@
 ## Time Periods
 
-TODO
+Time Periods define time ranges in Icinga where event actions are
+triggered, for example if a service check is executed or not within
+the `check_period` attribute. Or a notification should be sent to
+users or not, filtered by the `notification_period` configuration
+attribute for `Notification` and `User` objects.
+
+> **Note**
+>
+> If you are familar with Icinga 1.x - these time period definitions
+> are called `legacy timeperiods` in Icinga 2.
+>
+> An Icinga 2 legacy timeperiod requires the `ITL` provided template
+>`legacy-timeperiod`.
+
+The `TimePeriod` attribute `ranges` may contain multiple directives,
+including weekdays, days of the month, and calendar dates.
+These types may overlap/override other types in your ranges dictionary.
+
+The descending order of precedence is as follows:
+
+* Calendar date (2008-01-01)
+* Specific month date (January 1st)
+* Generic month date (Day 15)
+* Offset weekday of specific month (2nd Tuesday in December)
+* Offset weekday (3rd Monday)
+* Normal weekday (Tuesday)
+
+If you don't set any `check_period` or `notification_period` attribute
+on your configuration objects Icinga 2 assumes `24x7` as time period
+as shown below.
+
+    object TimePeriod "24x7" inherits "legacy-timeperiod" {
+      display_name = "Icinga 2 24x7 TimePeriod",
+      ranges = {
+        "monday"    = "00:00-24:00",
+        "tuesday"   = "00:00-24:00",
+        "wednesday" = "00:00-24:00",
+        "thursday"  = "00:00-24:00",
+        "friday"    = "00:00-24:00",
+        "saturday"  = "00:00-24:00",
+        "sunday"    = "00:00-24:00",
+      }
+    }
+    
+If your operation staff should only be notified during workhours
+create a new timeperiod named `workhours` defining a work day with
+09:00 to 17:00.
+
+    object TimePeriod "workhours" inherits "legacy-timeperiod" {
+      display_name = "Icinga 2 8x5 TimePeriod",
+      ranges = {
+        "monday"    = "09:00-17:00",
+        "tuesday"   = "09:00-17:00",
+        "wednesday" = "09:00-17:00",
+        "thursday"  = "09:00-17:00",
+        "friday"    = "09:00-17:00",
+      }
+    }
+
+Assign the timeperiod as `notification_period` to the `Notification`
+object then.
+
+    object Host "localhost" {
+      services["ping4"] = {
+        notifications["mail"] = {
+          templates = [ "generic-notification" ],
+          notification_command = "mail-notification",
+          users = [ "icingaadmin" ],
+          notification_period = "workhours"
+        }      
+      }
+    }
index d7a91e49c30ca41f4514e19d5eb22e351b914505..9d92eb9239a74e488d9e7386c9b7f236ff6d3b67 100644 (file)
@@ -1,3 +1,16 @@
 ## Event Handlers
 
-TODO
+Event handlers are defined as `EventCommand` objects in Icinga 2.
+
+Unlike notifications event commands are called on every service state change
+if defined. Therefore the `EventCommand` object should define a command line
+evaluating the current service state and other service runtime attributes
+available through runtime macros. Runtime macros such as `$SERVICESTATETYPE$`
+and `$SERVICESTATE$` will be processed by Icinga 2 helping on fine-granular
+events being triggered.
+
+Common use case scenarios are a failing HTTP check requiring an immediate
+restart via event command, or a an application is locked and requires
+a restart on detection.
+
+
index 590adacefb65714127b8074aafe0ddb41d85d2c6..5d66037831e8703ec662c356d10d1a59159f8a10 100644 (file)
@@ -1,3 +1,37 @@
 ## Logging
 
-TODO
+Icinga 2 supports three different types of logging:
+
+* File logging (local Icinga 2 log file)
+* Syslog facility logging (system's syslog application)
+* Console logging (`STDOUT` on tty)
+
+> **Note**
+>
+> You can define multiple logging objects at once.
+
+The most common scenario will be logging Icinga 2's output to
+syslog with severity `information`.
+
+    object SyslogLogger "syslog" {
+      severity = "information"
+    }
+
+For debugging purposes you can install a `FileLogger` object
+and forward the `debug` serverity into an Icinga 2 debug file.
+
+    object FileLogger "debug-file" {
+      severity = "debug",
+      path = "/var/log/icinga2/icinga2-debug.log"
+    }
+    
+If you're starting Icinga 2 not as daemon, but in foreground
+using `/usr/bin/icinga2 -c /etc/icinga2/icinga2.conf` you may
+want to enable console logging temporary too.
+
+    object ConsoleLogger "debug-console" {
+      severity = "debug"
+    }
+
+
+
index 34afa1f526db8c3441291472a4be717a84061151..c1ba4270239f8647f57b7b4875cc9591ccdf0c25 100644 (file)
@@ -1,3 +1,63 @@
 ## Performance Data
 
-TODO
+When a service check is executed plugins should provide so-called
+`performance data`. Next to that additional check performance data
+can be fetched using Icinga 2 runtime macros such as the check latency
+or the current service state.
+
+The performance data may be passed to external applications which
+then generate nice graphs for historical reporting and trending.
+
+Well-known addons processing Icinga performance data are PNP4Nagios,
+inGraph and Graphite.
+
+> **Note**
+>
+> As there are no real host checks in Icinga 2, there is no performance
+> data generated for hosts.
+
+### Writing Performance Data Files
+
+PNP4Nagios and inGraph use performance data collector daemons to fetch
+the current performance files for their backend updates.
+
+Therefore the Icinga 2 `PerfdataWriter` object allows you to define
+the output template format backed with Icinga 2 runtime macros.
+
+    format_template = "DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$",
+    
+The default template is already provided with the Icinga 2 feature configuration
+which can be enabled using
+
+    # i2enfeature perfdata
+
+By default all performance data files are rotated in a 15 seconds interval into
+the `/var/spool/icinga2/perfdata/` directory as `service-perfdata.<timestamp>`.
+External collectors need to parse the rotated performance data files and then
+remove the processed files.
+
+> **Note**
+>
+> If you enable this feature by accident and no collector daemon is processing
+> these files, the filesystem's inodes may run out. Make sure to watch the
+> `localhost` service check `disks` and define your own inode warning
+> and critical thresholds.
+
+
+### Graphite Carbon Cache Writer
+
+While there are some Graphite collector scripts for Icinga 1.x available it's
+more reasonable to directly process the check and plugin performance in memory
+in Icinga 2. Once there are new metrics available, Icinga 2 will directly
+write these to the defined Graphite Carbon daemon tcp socket.
+
+You can enable the feature using
+
+    # i2enfeature graphite
+    
+The `GraphiteWriter` object expects the Graphite Carbon Cache socket listening
+at `127.0.0.1` on port `2003` by default.
+
+The current naming schema is
+
+    icinga.<hostname>.<servicename>.<metricname>
index 7fd15ab6c0c35bdb89c1ec8932830e9b9c494340..3d9e6e3f653c7ffa3bb55ee45954dce02ee8ccd0 100644 (file)
@@ -1,3 +1,15 @@
 ## Status Data
 
-TODO
+Icinga 1.x writes object configuration data and status data in a cyclic
+interval to its `objects.cache` and `status.dat` files. Icinga 2 provides
+the `StatusDataWriter` object which dumps all configuration objects and
+status updates in a regular interval.
+
+    # i2enfeature statusdata
+    
+Icinga 1.x Classic UI requires this data set as part of its backend.
+    
+> **Note**
+>
+> If you are not using any web interface or addon requiring this output
+> do not enable this feature.
index 49be73654fbf05be74cf5c6bd52bd5beac73e9e2..a319ccc981288322c386b4517de34b985413371a 100644 (file)
@@ -1 +1,44 @@
 ## Compat Logging
+
+The Icinga 1.x log format is considered being the `Compat Log`
+in Icinga 2 provided with the `CompatLogger` object.
+
+These logs are not only used for informal representation in
+external web interfaces parsing the logs, but also to generate
+sla reports and trends in Icinga 1.x Classic UI.
+
+The `CompatLogger` object can be enabled with
+
+    # i2enfeature compatlog
+    
+By default, the Icinga 1.x log file called `icinga.log` is located
+in `/var/log/icinga2/compat`. Rotated log files are moved into
+`var/log/icinga2/compat/archives`.
+
+The format cannot be changed without breaking compatibility to
+existing log parsers.
+
+    # tail -f /var/log/icinga2/compat/icinga.log
+
+    [1382115688] LOG ROTATION: HOURLY
+    [1382115688] LOG VERSION: 2.0
+    [1382115688] HOST STATE: CURRENT;localhost;UP;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;disk;WARNING;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;http;OK;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;load;OK;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;ping4;OK;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;ping6;OK;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;processes;WARNING;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;ssh;OK;HARD;1;
+    [1382115688] SERVICE STATE: CURRENT;localhost;users;OK;HARD;1;
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;disk;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;http;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;load;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;ping4;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;ping6;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;processes;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;ssh;1382115705
+    [1382115706] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;localhost;users;1382115705
+    [1382115731] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;localhost;ping6;2;critical test|
+    [1382115731] SERVICE ALERT: localhost;ping6;CRITICAL;SOFT;2;critical test
+
index 74233af697ec7b53d407766dd54207722674d656..f09d76864ff898928ecc5db538d528af20701194 100644 (file)
@@ -1,3 +1,21 @@
 ## Check Result Files
 
-TODO
+Icinga 1.x writes its check result files into a temporary spool directory
+where it reads these check result files in a regular interval from.
+While this is extremly inefficient in performance regards it has been
+rendered useful for passing passive check results directly into Icinga 1.x
+skipping the external command pipe.
+
+Several clustered/distributed environments and check-aggregation addons
+use that method. In order to support step-by-step migration of these
+environments, Icinga 2 ships the `CheckResultReader` object.
+
+There is no feature configuration available, but it must be defined
+on-demand in your Icinga 2 objects configuration.
+
+    object CheckResultReader "reader" {
+      spool_dir = "/data/check-results"
+    }
+
+
+
index 620fd0de9973098636f237d2615ec1917a4c0cc1..4bdfa0861b4433e94d3cc4e6ecd7850f776ddf47 100644 (file)
@@ -116,8 +116,8 @@ Attributes:
   enable\_passive\_checks|**Optional.** Whether passive checks are enabled. Defaults to true.
   enable\_event\_handler|**Optional.** Enables event handlers for this service. Defaults to true.
   event\_command  |**Optional.** The name of an event command that should be executed every time the service's state changes.
-  flapping\_threshold|TODO
-  volatile        |TODO
+  flapping\_threshold|**Optional.** The flapping threshold in percent when a service is considered to be flapping.
+  volatile        |**Optional.** The volatile setting enables always `HARD` state types if `NOT-OK` state changes occur.
   host_dependencies|**Optional.** A list of host names which this host depends on. These dependencies are used to determine whether the host is unreachable.
   service_dependencies|**Optional.** A list of services which this host depends on. Each array element must be a dictionary containing the keys "host" and "service". These dependencies are used to determine whether the host is unreachable.
   groups          |**Optional.** The service groups this service belongs to.
@@ -170,12 +170,33 @@ Attributes:
   macros          |**Optional.** A dictionary containing macros that are specific to this notification object.
   users           |**Optional.** A list of user names who should be notified.
   user_groups     |**Optional.** A list of user group names who should be notified.
-  times           |TODO
-  notification_command|TODO
-  notification_interval|TODO
-  notification_period|TODO
-  notification_type_filter|TODO
-  notification_state_filter|TODO
+  times           |**Optional.** A dictionary containing `begin` and `end` attributes for the notification.
+  notification_command|**Required.** The name of the notification command which should be executed when the notification is triggered.
+  notification_interval|**Optional.** The notification interval (in seconds). This interval is used for active notifications. Defaults to 5 minutes. 
+  notification_period|**Optional.** The name of a time period which determines when this notification should be triggered. Not set by default.
+  notification_type_filter|**Optional.** A set of state filters when this notification should be triggered. By default everything is matched.
+  notification_state_filter|**Optional.** A set of type filters when this notification should be triggered. By default everything is matched.
+  
+Available notification type and state filters:
+
+    StateFilterOK
+    StateFilterWarning
+    StateFilterCritical
+    StateFilterUnknown
+    
+    NotificationFilterDowntimeStart
+    NotificationFilterDowntimeEnd
+    NotificationFilterDowntimeRemoved
+    NotificationFilterCustom
+    NotificationFilterAcknowledgement
+    NotificationFilterProblem
+    NotificationFilterRecovery
+    NotificationFilterFlappingStart
+    NotificationFilterFlappingEnd
+    
+> **Note**
+>
+> In order to notify on problem states, you will need the type filter `NotificationFilterProblem`.
 
 ### <a id="objecttype-user"></a> User
 
@@ -206,6 +227,26 @@ Example:
       }
     }
 
+Available notification type and state filters:
+
+    StateFilterOK
+    StateFilterWarning
+    StateFilterCritical
+    StateFilterUnknown
+    
+    NotificationFilterDowntimeStart
+    NotificationFilterDowntimeEnd
+    NotificationFilterDowntimeRemoved
+    NotificationFilterCustom
+    NotificationFilterAcknowledgement
+    NotificationFilterProblem
+    NotificationFilterRecovery
+    NotificationFilterFlappingStart
+    NotificationFilterFlappingEnd
+    
+> **Note**
+>
+> In order to notify on problem states, you will need the type filter `NotificationFilterProblem`.
 
 Attributes:
 
@@ -216,9 +257,9 @@ Attributes:
   custom          |**Optional.** A dictionary containing custom attributes that are specific to this user.
   groups          |**Optional.** An array of group names.
   enable_notifications|**Optional.** Whether notifications are enabled for this user.
-  notification_period|TODO
-  notification_type_filter|TODO
-  notification_state_filter|TODO
+  notification_period|**Optional.** The name of a time period which determines when this notification should be triggered. Not set by default.
+  notification_type_filter|**Optional.** A set of state filters when this notification should be triggered. By default everything is matched.
+  notification_state_filter|**Optional.** A set of type filters when this notification should be triggered. By default everything is matched.
 
 ### <a id="objecttype-usergroup"></a> UserGroup
 
@@ -262,7 +303,7 @@ Attributes:
   ----------------|----------------
   display_name    |**Optional.** A short description of the time period.
   methods         |**Required.** The "update" script method takes care of updating the internal representation of the time period. In virtually all cases you should just inherit from the "legacy-timeperiod" template to take care of this setting.
-  ranges          |TODO
+  ranges          |**Required.** A dictionary containing information which days and durations apply to this timeperiod.
 
 The `/etc/icinga2/conf.d/timeperiods.conf` file is usually used to define
 timeperiods including this one.
@@ -651,7 +692,9 @@ Example:
 
 ### <a id="objecttype-clusterlistener"></a> ClusterListener
 
-TODO
+ClusterListener objects are used to specify remote cluster
+node peers and the certificate files used for ssl
+authorization.
 
 Example:
 
@@ -698,7 +741,7 @@ Attributes:
   ----------------|----------------
   node            |**Required.** The hostname/IP address of the remote Icinga 2 instance.
   service         |**Required.** The service name/port of the remote Icinga 2 instance.
-  config\_files   |TODO
+  config\_files   |**Optional.** A list of configuration files sent to remote peers (wildcards possible).
   accept\_config  |**Optional.** A list of endpoint names from which this endpoint accepts configuration files.
 
 ### <a id="objecttype-domain"></a> Domain
index b10c574fb60f91cbae1c745d4959ed695d4d8203..a46f506075cf61aa4877236ec704f361f35497f1 100644 (file)
@@ -281,7 +281,7 @@ configuration attribute named `flapping_threshold`.
 
 ## Volatile Services
 
-By default all services remain in a non-volatile state. Whe a problem
+By default all services remain in a non-volatile state. When a problem
 occurs, the `SOFT` state applies and once `max_check_attempts` attribute
 is reached with the check counter, a `HARD` state transition happens.
 Notifications are only triggered by `HARD` state changes and are then