Skip to content
Snippets Groups Projects
README.md 3.68 KiB
Newer Older
Nagios Mattermost Plugin
========================
André Freitas's avatar
André Freitas committed

A plugin for [Nagios](https://www.nagios.org/) and compatible software (e.g. [Icinga](https://www.icinga.org/)) to enable notifications to a [Mattermost](http://www.mattermost.org/) server.
André Freitas's avatar
André Freitas committed

## Plugin Usage
Run `./mattermost.py --help` for full usage information.
## Mattermost Configuration
André Freitas's avatar
André Freitas committed

1. *Incoming Webhooks* must be enabled for your Mattermost server. Check the **Enable Incoming Webhooks** option under **Service Settings** in the *System Console*.
André Freitas's avatar
André Freitas committed

2. To use the optional `--username` parameter you must enable overriding of usernames from webhooks. Check the **Enable Overriding Usernames from Webhooks and Slash Commands** option under **Service Settings** in the *System Console*.
3. To use the optional `--iconurl` parameter you must enable overriding of icons from webhooks. Check the **Enable Overriding Icon from Webhooks and Slash Commands** option under **Service Settings** in the *System Console*.
André Freitas's avatar
André Freitas committed

## Nagios Configuration
André Freitas's avatar
André Freitas committed

The steps below are for a Nagios 4 server but should work with minimal modifications for compatible software:
André Freitas's avatar
André Freitas committed

1. Copy `mattermost.py` to `/usr/local/nagios/libexec`.
André Freitas's avatar
André Freitas committed

2. Create an *Incoming Webhook* integration for the approriate team and note the provided URL.
André Freitas's avatar
André Freitas committed

3. Create the command definitions in your Nagios configuration:

    ```
    define command {
        command_name notify-service-by-mattermost
        command_line /usr/local/nagios/libexec/mattermost.py --url [MATTERMOST-WEBHOOK-URL] \
                                                             --channel [OPTIONAL-MATTERMOST-CHANNEL] \
                                                             --notificationtype "$NOTIFICATIONTYPE$" \
                                                             --hostalias "$HOSTNAME$" \
abhishek verma's avatar
abhishek verma committed
                                                             --hostaddress "$HOSTADDRESS$" \
                                                             --servicedesc "$SERVICEDESC$" \
                                                             --servicestate "$SERVICESTATE$" \
                                                             --serviceoutput "$SERVICEOUTPUT$"
    }

    define command {
        command_name notify-host-by-mattermost
        command_line /usr/local/nagios/libexec/mattermost.py --url [MATTERMOST-WEBHOOK-URL] \
                                                             --channel [OPTIONAL-MATTERMOST-CHANNEL] \
                                                             --notificationtype "$NOTIFICATIONTYPE$" \
                                                             --hostalias "$HOSTNAME$" \
abhishek verma's avatar
abhishek verma committed
                                                             --hostaddress "$HOSTADDRESS$" \
                                                             --hoststate "$HOSTSTATE$" \
                                                             --hostoutput "$HOSTOUTPUT$"
    }
```

4. Create the contact definition in your Nagios configuration:

    ```
    define contact {
        contact_name                            mattermost
        alias                                   Mattermost
        service_notification_period             24x7
        host_notification_period                24x7
        service_notification_options            w,u,c,r
        host_notification_options               d,r
        host_notification_commands              notify-host-by-mattermost
        service_notification_commands           notify-service-by-mattermost
    }
```

5. Add the contact to a contact group in your Nagios configuration:

    ```
    define contactgroup{
        contactgroup_name       network-admins
        alias                   Network Administrators
        members                 email, mattermost
    }
```