In this recipe, we'll create a new contactgroup into which we can add our contacts. Like hostgroups and servicegroups, contactgroups mostly amount to convenient shortcuts. In this case, it allows us to define a contactgroup as the recipient of notifications for a host or service definition. This means that we could define an ops
group, for example, and then even if people joined or left the group, we wouldn't need to change any definitions for the hosts or services.
You should have a working Nagios Core 4.0 or better server running.
You should also have at least two contacts that form a meaningful group. In this case, we have two staff members, John Smith and Jane Doe, who are both part of our network operations team. We want them both to be notified for all the appropriate hosts and services, so we'll add them to a group called ops
. Here are the definitions with which we're working:
define contact { use generic-contact contact_name john alias John Smith email [email protected] } define contact { use generic-contact contact_name jane alias Jane Doe email [email protected] }
We can create our new ops
contactgroup as follows:
contacts.cfg
file:# cd /usr/local/nagios/etc # vi contacts.cfg
define contactgroup { contactgroup_name ops alias Network operators }
contactgroups
directive to them. The definitions will end up looking something like this:define contact { use generic-contact contact_name john alias John Smith email [email protected] contactgroups ops } define contact { use generic-contact contact_name jane alias Jane Doe email [email protected] contactgroups ops }
# /etc/init.d/nagios reload
With this group set up, we are now able to use it in the contactgroups
directive for hosts and services to define which contacts notifications should be sent to. Notifications are sent to all the addresses in the group. This can replace the contacts
directive, where we name contacts individually.
As an example, consider the following service definition:
define service {
use generic-service
host_name sparta.example.net
service_description HTTP
check_command check_http
contacts john,jane
}
Instead of having a service definition as the preceding one, we could use this:
define service {
use generic-service
host_name sparta.example.net
service_description HTTP
check_command check_http
contact_groups ops
}
If John Smith were to leave the operations team, we could simply remove his contact definition and nothing else would require changing; from then on, only Jane would receive the services notification. This method provides a layer of abstraction between contacts and the hosts and services for which they receive notifications.
18.119.235.79