No description
84c4c45d5b
Embedding the version file is slightly annoying for packaging, because the release tarball is not a git repository and so "go generate" would fail. Instead a packager would have to manually create the version.txt file. With using a linker flag, the version string has a graceful fallback. |
||
---|---|---|
docker | ||
.build.yml | ||
.gitignore | ||
cache.go | ||
config.go | ||
config_test.go | ||
functions.go | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
README.md | ||
silence.go |
ntfy-alertmanager
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 and tags. Define a decreasing order of labels in the config file and map those labels to tags or priority.
- For priority the first found value will be chosen.
- 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"
}
severity "info" {
priority 1
}
instance "example.com" {
tags "computer,example"
}
}
# Set tags for resolved alerts
resolved {
tags "resolved,partying_face"
}
ntfy {
# URL of the ntfy topic - required
topic https://ntfy.sh/alertmanager-alerts
# ntfy access control (https://ntfy.sh/docs/config/#access-control)
user user
password pass
}
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 {
# How long messages stay in the cache for
duration 24h
# Interval in which the cache is cleaned up
cleanup-interval 1h
}
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.