Icinga

Icinga delivers software for monitoring and managing networks and systems. This workflow lets you send actionable alerts to on-call resources when xMatters gets a signal from Icinga. Responders can initiate an incident with the press of a button, or you can build on the flow to perform automated resolution tasks.

How it works

When an alert is generated in Icinga, it sends a JSON-formatted webhook to xMatters, based on user-defined alert rules. An Icinga trigger in xMatters parses the webhook and initiates a flow. The webook includes essential alert data that is included in notifications sent to users, and details about the origin of the alert that you can use to enrich the notifications or use when building automated tasks.

Install the workflow

The following instructions describe how to install the workflow through the xMatters one-click installation process. If you're looking for instructions on the previous version of the integration, you can find them here.

  1. Go to the Workflows Templates page and click the Icinga tile.
  2. On the Install Workflow dialog box, give the workflow a name (this must be unique in your instance) and add an optional description.
    • You can edit these later, if needed.

  1. Click Install.
    • After the workflow installs, the screen shows next steps as well the installation logs. The installation logs give you additional information about the installation, such as if you have languages in your instance that aren't configured for the messages in the workflow.

  2. Select the authentication method you want to use.
  3. Copy the trigger URL — you’ll use this to configure a webhook in Icinga.
    • The trigger URL includes the recipients parameter, which specifies who should be notified. By default, this parameter is set to notify you (the logged in user), but you can set it to target any user or group you want.
  4. Click Done.

Configure Icinga to send requests to the trigger URL

The following instructions describe how to configure Icinga to send signals to your triggers.

  1. Download the xm-host-notification.sh, xm-service-notification.sh, and xmatters-plugin.conf files to your computer.
  2. Go to the location of your Icinga scripts folder. For example: /etc/icinga/scripts.
  3. Add both shell files to the scripts folder.
    • If you're using Basic Authentication, open each shell file and add -u <username>:<password> to the cURL command and insert your username and password. For example: 
      #!/bin/shecho 

      "Sending xMatters host notification."
      curl -i \
      -u <mmcbride>:<SecurePwd!!>
      -H "Content-Type: application/json" \
  4. Save your changes to the shell files, if required.
  5. Open the xmatters-plugin.config file in a text editor.
  6. On the XM_INTEGRATION_URL line replace <YOUR_HOST_TRIGGER_URL> and <YOUR_SERVICE_TRIGGER_URL> with the URL you copied from the Icinga trigger in Flow Designer.
    object NotificationCommand "xm-host-notification" {
      command = [ SysconfDir + "/icinga2/scripts/xm-host-notification.sh" ]

      env = {
        ADDRESS = "$address$"
        HOSTDISPLAYNAME = "$host.display_name$"
        HOSTNAME = "$host.name$"
        HOSTOUTPUT = "$host.output$"
        HOSTSTATE = "$host.state$"
        HOSTSTATETYPE = "$host.state_type$"
        LASTHOSTSTATECHANGE = "$host.last_state_change$"
        NOTIFICATIONAUTHOR = "$notification.author$"
        NOTIFICATIONCOMMENT = "$notification.comment$"
        NOTIFICATIONTYPE = "$notification.type$"
        SHORTDATETIME = "$icinga.short_date_time$"
        XM_INTEGRATION_URL = <YOUR_HOST_TRIGGER_URL>
      }
    }

    object NotificationCommand "xm-service-notification" {
      command = [ SysconfDir + "/icinga2/scripts/xm-service-notification.sh" ]

      env = {
        ADDRESS = "$address$"
        HOSTNAME = "$host.name$"
        LASTSERVICESTATECHANGE = "$service.last_state_change$"
        NOTIFICATIONAUTHOR = "$notification.author$"
        NOTIFICATIONCOMMENT = "$notification.comment$"
        NOTIFICATIONTYPE = "$notification.type$"
        SERVICEDISPLAYNAME = "$service.display_name$"
        SERVICENAME = "$service.name$"
        SERVICEOUTPUT = "$service.output$"
        SERVICESTATE = "$service.state$"
        SERVICESTATETYPE = "$service.state_type$"
        SHORTDATETIME = "$icinga.short_date_time$"
        XM_INTEGRATION_URL = <YOUR_SERVICE_TRIGGER_URL>
      }
    }
  7. Add the target names of any recipients you want to notify when the notification fires.
    • For example, if you want to notify Emma Pearson, Mary McBride, and the on-call members in the Monitor Team responsible for the service, you'd add ?recipients=epearson,mmcbride,monitor%20team to the URL.
    • You must URL-encode any special characters or spaces in the target names.
  8. Save the file.
  9. Move the xmatters-plugin.config file to your Icinga config file folder. For example: /etc/icinga/conf.d.
  10. Optional: If you have any other Icinga notification attributes, you can add them to the env part of the xmatters-plugin.conf file. You must then update the cURL commands in the shell scripts for each host/service to match.

Now add the notification to any Icinga host you want to monitor.

  1. Go to the location of your Icinga hosts. For example: /etc/icinga2/conf.d/hosts.conf.
  2. Add the following code to each host.
    Copy
    vars.notification["xm"] = {
      groups = [ "icingaadmins" ]
    }
  3. Restart your Icinga service so all changes are captured and applied.

You're ready to use the webhook to trigger automated flows, including steps such as sending alerts and initiating incidents, though we always recommend testing before putting things into use.

Set recipients in the trigger URL

The trigger expects the recipients in the trigger URL. When you copy the URL from xMatters, it includes the recipients parameter: recipients=<yourname>. Of course, you don’t want to receive all the alerts.

To change the recipients for alerts from this webhook, swap out your name for the people or groups you want to target. For example, to target the 'DatabaseTeam', 'Antares Service Team', and 'HR & Marketing' groups, add recipients=databaseteam,antares%20service%20team,HR%20%26%20Marketing to the trigger URL. Remember to URL-encode any special characters, including spaces, in your group names.

We recommend using groups so you can take advantage of the xMatters group features — rotations, escalations, and absences — to reach the right on-call people to jump on an issue.

How to use the workflow

When a condition you've set fires, it sends a signal to xMatters, which creates an event and notifies the individual or the on-call members of the people or groups you set as recipients in the webhook URL. When the trigger receives a signal saying the issue is resolved, it automatically terminates related events in xMatters.

Next Steps

Now that you've installed the workflow, you can use it as-is, or customize it to suit your needs better. Here are some examples of things you can add to the workflow to customize it:

Previous versions

Instructions for the previous built-in version of this integration are available below.