Icinga

Object Configuration Overview

What Are Objects?

Objects are all the elements that are involved in the monitoring and notification logic. Types of objects include:

More information on what objects are and how they relate to each other can be found below.

Where Are Objects Defined?

Objects can be defined in one or more configuration files and/or directories that you specify using the cfg_file and/or cfg_dir directives in the main configuration file.

include_file / include_dir

An object definition file can include other object definition files with the use of the include_file=< file_name> and include_dir=<directory_name> directives. The former includes the single file specified, the latter will process all files ending in the .cfg extension in the directory specified. These directives may be repeated to include multiple files/directories.

The directives are not allowed within the actual definition of an object, and should appear before, after, or in between any object definitions. They are closely related to the cfg_file= and cfg_dir= directives in the main configuration file.

These directives may be chained; e.g. an object definition file included from the main configuration file with a cfg_file= or cfg_dir= directive can use include_file= or include_dir= to include another object definition file, which in turn can also use include_file= or include_dir= to include yet another object definition file, and so on.

[Tip] Tip

When you follow quickstart installation guide, several sample object configuration files are placed in /usr/local/icinga/etc/objects/. You can use these sample files to see how object inheritance works and learn how to define your own object definitions.

How Are Objects Defined?

Objects are defined in a flexible template format, which can make it much easier to manage your Icinga configuration in the long term. Basic information on how to define objects in your configuration files can be found here.

Once you get familiar with the basics of how to define objects, you should read up on object inheritance, as it will make your configuration more robust for the future. Seasoned users can exploit some advanced features of object definitions as described in the documentation on object tricks.

Objects Explained

Some of the main object types are explained in greater detail below...

Hosts are one of the central objects in the monitoring logic. Important attributes of hosts are as follows:

  • Hosts are usually physical devices on your network (servers, workstations, routers, switches, printers, etc).

  • Hosts have an address of some kind (e.g. an IP or MAC address).

  • Hosts have one or more more services associated with them.

  • Hosts can have parent/child relationships with other hosts, often representing real-world network connections, which is used in the network reachability logic.

Host Groups are groups of one or more hosts. Host groups can make it easier to (1) view the status of related hosts in the Icinga web interface and (2) simplify your configuration through the use of object tricks.

Services are one of the central objects in the monitoring logic. Services are associated with hosts and can be:

  • Attributes of a host (CPU load, disk usage, uptime, etc.)

  • Services provided by the host (HTTP, POP3, FTP, SSH, etc.)

  • Other things associated with the host (DNS records, etc.)

Service Groups are groups of one or more services. Service groups can make it easier to (1) view the status of related services in the Icinga web interface and (2) simplify your configuration through the use of object tricks.

Contacts are people involved in the notification process:

  • Contacts have one or more notification methods (cellphone, pager, email, instant messaging, etc.)

  • Contacts receive notifications for hosts and service they are responsible for

Contact Groups are groups of one or more contacts. Contact groups can make it easier to define all the people who get notified when certain host or service problems occur.

Timeperiods are are used to control:

  • When hosts and services can be monitored

  • When contacts can receive notifications

Information on how timeperiods work can be found here.

Commands are used to tell Icinga what programs, scripts, etc. it should execute to perform:

  • Host and service checks

  • Notifications

  • Event handlers

  • and more...