mod_pubsub_alertmanager

Introduction

This module lets Alertmanager publish alerts to pubsub via webhooks.

Setup

The relevant pubsub nodes must be created and configured somehow. Because the request IP address is used to publish, the publisher affiliation should be given to the IP address Alertmanager sends webhooks from.

Configuration

Prometheus

A Prometheus rule_files might contain something along these lines:

groups:
- name: Stuff
  rules:
  - alert: Down
    expr: up == 0
    for: 5m
    annotations:
      title: 'Stuff is down!'
    labels:
      severity: 'critical'

Alertmanager

On the Alertmanager site the webhook configuration may look something like this:

receivers:
- name: pubsub
  webhook_configs:
  - url: http://pubsub.localhost:5280/pubsub_alertmanager

And then finally some Alertmanager routes would point at that receiver:

route:
  receiver: pubsub

Prosody

On the Prosody side, apart from creating and configuring the node(s) that will be used, configure your pubsub service like this:

Component "pubsub.example.com" "pubsub"
modules_enabled = {
    "pubsub_alertmanager",
}

-- optional extra settings:
alertmanager_body_template = [[
*ALARM!* {annotations.title?Alert} is {status}
Since {startsAt}{endsAt& until {endsAt}}
Labels: {labels%
  {idx}: {item}}
Annotations: {annotations%
  {idx}: {item}}
]]

alertmanager_node_template = "alerts/{alert.labels.severity}"

If no node template is given, either an optional part after “pubsub_alertmanager” in the HTTP path is used as node, or the string “alerts”. Here, an alerts would be published to different nodes based on the ‘severity’ label, so e.g. alerts/critical in this example.

All Options

Available configuration options:

alertmanager_body_template
Template for the textual representation of alerts.
alertmanager_node_template
Template for the pubsub node name, defaults to "{path?alerts}"