No description
Find a file
Thorben Günther a9fa7e4b23
config: Switch default values of alert mode and cache type
By default alerts will no longer be split apart and any caching
functionality will be disabled. With this the behaviour will be closer
to what the user has configured in Alertmanger/Prometheus itself.
2023-07-12 19:17:47 +02:00
cache cache: Add a "disabled" cache 2023-07-12 19:13:47 +02:00
config config: Switch default values of alert mode and cache type 2023-07-12 19:17:47 +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 cache: Move creation logic into cache package 2023-07-12 19:00:25 +02:00
README.md config: Switch default values of alert mode and cache type 2023-07-12 19:17:47 +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 multi)
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 disabled, memory or redis; default is disabled).
    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.