Software /
code /
prosody-modules
File
mod_pubsub_alertmanager/README.md @ 5461:06640647d193
mod_http_oauth2: Fix use of arbitrary ports in loopback redirect URIs
Per draft-ietf-oauth-v2-1-08#section-8.4.2
> The authorization server MUST allow any port to be specified at the
> time of the request for loopback IP redirect URIs, to accommodate
> clients that obtain an available ephemeral port from the operating
> system at the time of the request.
Uncertain if it should normalize the host part, but it also seems
harmless to treat IPv6 and IPv4 the same here.
One thing is that "localhost" is NOT RECOMMENDED because it can
sometimes be pointed to non-loopback interfaces via DNS or hosts file.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 17 May 2023 13:51:30 +0200 |
parent | 4624:eba7e68120d8 |
child | 5485:67190744b1eb |
line wrap: on
line source
--- labels: - 'Stage-Alpha' summary: Alertmanager webhook receiver for pubsub --- # Introduction This module lets [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) publish alerts to [pubsub][doc:pubsub] via [webhooks](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config). # 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: ``` yaml 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: ``` yaml receivers: - name: pubsub webhook_configs: - url: http://pubsub.localhost:5280/pubsub_alertmanager ``` And then finally some Alertmanager routes would point at that receiver: ``` yaml 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: ``` lua 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}"`