No description
Find a file
2023-07-12 14:56:48 +02:00
cache cache/redis: Try to ping redis on cache creation 2023-07-10 12:20:16 +02:00
config config: Move to own package 2023-07-12 14:56:48 +02:00
docker docker: Add redis section to docker-compose file 2023-03-08 22:42:29 +01:00
.build.yml version: Use linker flag 2023-02-16 13:06:21 +01:00
.gitignore version: Use linker flag 2023-02-16 13:06:21 +01:00
functions.go Sort labels alphabetically 2023-02-21 14:37:26 +01:00
go.mod Upgrade dependencies 2023-07-05 14:02:59 +02:00
go.sum Upgrade dependencies 2023-07-05 14:02:59 +02:00
http.go Set default header for User-Agent 2023-02-20 13:27:41 +01:00
LICENSE Initial commit 2022-10-09 14:19:48 +02:00
main.go config: Move to own package 2023-07-12 14:56:48 +02:00
README.md Add phone call support 2023-07-07 21:37:11 +02:00
silence.go config: Move to own package 2023-07-12 14:56:48 +02:00

ntfy-alertmanager

builds.sr.ht status

A bridge between ntfy and Alertmanager.

Installation

Simply use go build or the docker image with docker-compose file. ntfy-alertmanager:latest is built from the latest tagged release while ntfy-alertmanager:dev is built from the master branch.

Configuration

You can specify the configuration file location with the --config flag. By default the configuration file will be read from /etc/ntfy-alertmanager/config. The format of this file is scfg.

ntfy-alertmanager has support for setting ntfy priority, tags, icon, action buttons (which can be used to create an Alertmanager silence), email notifications and phone calls. Define a decreasing order of labels in the config file and map those labels to tags, priority, an icon or an email address.

  • For priority and icon the first found value will be chosen. An icon for "resolved" alerts will take precedence.
  • Tags are added together.

Example:

# Public facing base URL of the service (e.g. https://ntfy-alertmanager.xenrox.net)
# This setting is required for the "Silence" feature.
base-url https://ntfy-alertmanager.xenrox.net
# http listen address
http-address :8080
# Log level (either debug, info, warning, error)
log-level info
# When multiple alerts are grouped together by Alertmanager, they can either be sent
# each on their own (single mode) or be kept together (multi mode) (either single or multi; default is single)
alert-mode single
# Optionally protect with HTTP basic authentication
user webhookUser
password webhookPass

labels {
    order "severity,instance"

    severity "critical" {
        priority 5
        tags "rotating_light"
        icon "https://foo.com/critical.png"
        # Forward messages which severity "critical" to the specified email address.
        email-address foo@bar.com
        # Call the specified number. Use `yes` to pick the first of your verified numbers.
        call yes
    }

    severity "info" {
        priority 1
    }

    instance "example.com" {
        tags "computer,example"
    }
}

# Settings for resolved alerts
resolved {
    tags "resolved,partying_face"
    icon "https://foo.com/resolved.png"
}

ntfy {
    # URL of the ntfy topic - required
    topic https://ntfy.sh/alertmanager-alerts
    # ntfy authentication via Basic Auth (https://docs.ntfy.sh/publish/#username-password)
    user user
    password pass
    # ntfy authentication via access tokens (https://docs.ntfy.sh/publish/#access-tokens)
    # Either access-token or a user/password combination can be used - not both.
    access-token foobar
    # Forward all messages to the specified email address.
    email-address foo@bar.com
    # Call the specified number for all alerts. Use `yes` to pick the first of your verified numbers.
    call +123456789
}

alertmanager {
    # If set, the ntfy message will contain a "Silence" button, which can be used
    # to create a silence via the Alertmanager API. Because of limitations in ntfy,
    # the request will be proxied through ntfy-alertmanager. Therefore ntfy-alertmanager
    # needs to be exposed to external network requests and base-url has to be set.
    #
    # When alert-mode is set to "single" all alert labels will be used to create the silence.
    # When it is "multi" common labels between all the alerts will be used. WARNING: This
    # could silence unwanted alerts.
    silence-duration 24h
    # Basic authentication (https://prometheus.io/docs/alerting/latest/https/)
    user user
    password pass
    # By default the Alertmanager URL gets parsed from the webhook. In case that
    # Alertmanger is not reachable under that URL, it can be overwritten here.
    url https://alertmanager.xenrox.net
}

# When the alert-mode is set to single, ntfy-alertmanager will cache each single alert
# to avoid sending recurrences.
cache {
    # The type of cache that will be used (either memory or redis; default is memory).
    type memory
    # How long messages stay in the cache for
    duration 24h

    # Memory cache settings
    # Interval in which the cache is cleaned up
    cleanup-interval 1h

    # Redis cache settings
    # URL to connect to redis (default: redis://localhost:6379)
    redis-url redis://user:password@localhost:6789/3
}

Alertmanager config

receivers:
    - name: "ntfy"
      webhook_configs:
          - url: "http://127.0.0.1:8080"
            http_config:
                basic_auth:
                    username: "webhookUser"
                    password: "webhookPass"

Contributing

Report bugs on the issue tracker, send patches/ask questions on the mailing list or write to me directly on matrix @xenrox:xenrox.net.