Nagios Integration

Iris can easily be integrated into an existing Nagios implementation.

Iris Configuration

To support communication from Nagios, an Iris application plugin needs to be created. The example plugin defines a basic application named Nagios to handle requests. This plugin can be extended further to handle sending acknowledgements back to Nagios.

Example Nagios Plugin

Code:

from __future__ import absolute_import
import logging

from iris.plugins.core import register_plugin, IrisPlugin


logger = logging.getLogger(__name__)


@register_plugin()
class Nagios(IrisPlugin):
    name = 'Nagios'
    phone_response_menu = {
        '2': {
            'title': 'Press 2 to claim.',
            'cmd': 'claim',
        },
    }

    def process_command(self, msg_id, source, mode, cmd, args=None):
        if cmd == 'claim':
            return self.process_iris_claim(msg_id, source, mode, cmd, args)
        elif cmd == 'batch_claim':
            return self.process_iris_batch_claim(msg_id, source, mode, cmd, args)
        elif cmd == 'claim_all':
            return self.process_claim_all(msg_id, source, mode)
        else:
            return 'Unknown command.'

Application Variables

Nagios has a concept of “host” and “service” alerts, defined by the type of check that is being performed. While Iris can receive any type of notification, carrying the context of “host” and “service” from Nagios into the Nagios application can be useful when building robust templates.

Suggested Variables:

hostname
hostnotes
hostnotesurl
hostoutput
hoststate
notificationtype
servicedescription
servicename
servicenotes
servicenotesurl
serviceoutput
servicestate

Nagios Configuration

Sending Messages from Nagios

Nagios requires a custom script for sending notifications to Iris. Nagios supports custom notification logic through the “commands” configuration, where by default it sends notifications via e-mails. Creating additional command definitions allows for the separate notification for host and service checks, where the same or different plan may be applied to both checks.

Command definitions should be setup for both host and service checks, only to provide context between host-level checks and service-level checks.

Nagios Contact Definition

Iris can be used for some or all notifications by Nagios. Regardless of how messages are sent, a contact definition will need to be setup in the contacts.cfg configuration in Nagios.

Example Contact Definition:

#
# Iris contact definition
#

define contact{
            contact_name                    iris
            alias                           Contact for Iris
            service_notification_period     24x7
            host_notification_period        24x7
            service_notification_options    w,u,c
            host_notification_options       d,u,f
            service_notification_commands   notify-service-by-iris
            host_notification_commands      notify-host-by-iris
        }

Nagios Service Defininition

If the example Nagios application plugin is being used, it will be required to remove notification intervals (set to 0) so multiple Iris events are not generated.