Add type __matrix_alertmanager_receiver
This commit is contained in:
parent
01e99e110f
commit
6957edfc1e
11 changed files with 204 additions and 0 deletions
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
Homeserver = "${HOMESERVER:?}"
|
||||||
|
TargetRoomID = "${ROOM_ID:?}"
|
||||||
|
MXID = "${USER_ID:?}"
|
||||||
|
MXToken = "${USER_TOKEN:?}"
|
||||||
|
HTTPPort = ${LISTENING_PORT:?}
|
||||||
|
HTTPAddress = "${LISTENING_HOST:?}"
|
||||||
|
EOF
|
7
type/__matrix_alertmanager_receiver/files/openrc-unit
Normal file
7
type/__matrix_alertmanager_receiver/files/openrc-unit
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
name="matrix-alertmanager-receiver"
|
||||||
|
description="Forwards Prometheus Alerts to a Matrix room"
|
||||||
|
command=/usr/local/bin/matrix-alertmanager-receiver
|
||||||
|
command_background=true
|
||||||
|
command_user="prometheus:prometheus"
|
||||||
|
pidfile=/run/matrix-alertmanager-receiver.pid
|
11
type/__matrix_alertmanager_receiver/files/systemd-unit
Normal file
11
type/__matrix_alertmanager_receiver/files/systemd-unit
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Sends Prometheus Alerts to a Matrix room
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=prometheus
|
||||||
|
ExecStart=/usr/local/bin/matrix-alertmanager-receiver
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
33
type/__matrix_alertmanager_receiver/gencode-remote
Normal file
33
type/__matrix_alertmanager_receiver/gencode-remote
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
UPSTREAM=https://git.sr.ht/~fnux/matrix-alertmanager-receiver
|
||||||
|
VERSION=0.1.1
|
||||||
|
|
||||||
|
# Fetch, build and install binary.
|
||||||
|
cat << EOF
|
||||||
|
if ! command -v matrix-alertmanager-receiver; then
|
||||||
|
workdir=\$(mktemp -d)
|
||||||
|
cd \$workdir
|
||||||
|
|
||||||
|
# Fetch source archive.
|
||||||
|
curl "$UPSTREAM/archive/$VERSION.tar.gz" -o "$VERSION.tar.gz"
|
||||||
|
tar xf "$VERSION.tar.gz"
|
||||||
|
cd "matrix-alertmanager-receiver-$VERSION"
|
||||||
|
|
||||||
|
# Build binary.
|
||||||
|
go build -v
|
||||||
|
|
||||||
|
# Install binary.
|
||||||
|
install -m 0755 matrix-alertmanager-receiver /usr/local/bin/
|
||||||
|
|
||||||
|
# Cleanup build directory.
|
||||||
|
rm -r \$workdir
|
||||||
|
|
||||||
|
# Start service.
|
||||||
|
service matrix-alertmanager-receiver start
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if grep -q "^__file/etc/matrix-alertmanager-receiver.toml:" "${__messages_in:?}"; then
|
||||||
|
echo "service matrix-alertmanager-receiver restart"
|
||||||
|
fi
|
70
type/__matrix_alertmanager_receiver/man.rst
Normal file
70
type/__matrix_alertmanager_receiver/man.rst
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
cdist-type__matrix_alertmanager_receiver(7)
|
||||||
|
=====================
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__matrix_alertmanager_receiver - Deploy a simple Prometheus Alertmanager-to-Matrix service
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
This (singleton) type deploys `matrix-alertmanager-receiver <https://git.sr.ht/~fnux/matrix-alertmanager-receiver>`_, a simple daemon allowing Prometheus alerts to be sent to a `Matrix <https://matrix/>`_ room.
|
||||||
|
|
||||||
|
REQUIRED PARAMETERS
|
||||||
|
-------------------
|
||||||
|
homeserver
|
||||||
|
Address of the matrix homeserver to use.
|
||||||
|
|
||||||
|
room-id
|
||||||
|
ID of the (Matrix) room receiving alerts. Note that it must be the room ID:
|
||||||
|
an alias won't work!
|
||||||
|
|
||||||
|
user-id
|
||||||
|
MXID of the (Matrix) user sending alerts.
|
||||||
|
|
||||||
|
user-token
|
||||||
|
Token of the (Matrix) user sending alerts. Can be found under
|
||||||
|
Settings/Advanced in the Element web client.
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
host
|
||||||
|
Host to bind, defaults to `localhost`.
|
||||||
|
|
||||||
|
port
|
||||||
|
Port to listen on, defaults to `9088`.
|
||||||
|
|
||||||
|
BOOLEAN PARAMETERS
|
||||||
|
------------------
|
||||||
|
None.
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
__matrix_alertmanager_receiver \
|
||||||
|
--homeserver 'https://matrix.domain.tld/' \
|
||||||
|
--room-id '!patatra:domain.tld' \
|
||||||
|
--user-id '@alerts:domain.tls' \
|
||||||
|
--user-token 'secretsecretsecret' \
|
||||||
|
--host 'localhost' \
|
||||||
|
--port 9088
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- `Upstream <https://git.sr.ht/~fnux/matrix-alertmanager-receiver>`_
|
||||||
|
- `__prometheus_alertmanager(7)`
|
||||||
|
|
||||||
|
AUTHORS
|
||||||
|
-------
|
||||||
|
Timothée Floure <t.floure@e-durable.ch>
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2020 Timothée Floure. You can redistribute it
|
||||||
|
and/or modify it under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
65
type/__matrix_alertmanager_receiver/manifest
Normal file
65
type/__matrix_alertmanager_receiver/manifest
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
os="$(cat "${__global:?}/explorer/os")"
|
||||||
|
init="$(cat "${__global:?}/explorer/init")"
|
||||||
|
|
||||||
|
case "$os" in
|
||||||
|
alpine)
|
||||||
|
__package go
|
||||||
|
__package prometheus
|
||||||
|
__package curl
|
||||||
|
;;
|
||||||
|
debian|ubuntu)
|
||||||
|
__package golang
|
||||||
|
__package prometheus
|
||||||
|
__package curl
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "This type does not support $os. Exiting." >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Type parameters.
|
||||||
|
HOMESERVER=$(cat "${__object:?}/parameter/homeserver")
|
||||||
|
ROOM_ID=$(cat "${__object:?}/parameter/room-id")
|
||||||
|
USER_ID=$(cat "${__object:?}/parameter/user-id")
|
||||||
|
USER_TOKEN=$(cat "${__object:?}/parameter/user-token")
|
||||||
|
export HOMESERVER ROOM_ID USER_ID USER_TOKEN
|
||||||
|
|
||||||
|
LISTENING_HOST=$(cat "${__object:?}/parameter/host")
|
||||||
|
LISTENING_PORT=$(cat "${__object:?}/parameter/port")
|
||||||
|
export LISTENING_PORT LISTENING_HOST
|
||||||
|
|
||||||
|
# Generate and deploy configuration
|
||||||
|
mkdir -p "${__object:?}/files"
|
||||||
|
"${__type:?}/files/matrix-alertmanager-receiver.toml.sh" > \
|
||||||
|
"${__object:?}/files/matrix-alertmanager-receiver.toml"
|
||||||
|
|
||||||
|
require="__package/prometheus" __file /etc/matrix-alertmanager-receiver.toml \
|
||||||
|
--source "${__object:?}/files/matrix-alertmanager-receiver.toml" \
|
||||||
|
--owner prometheus \
|
||||||
|
--mode 0644
|
||||||
|
|
||||||
|
case "$init" in
|
||||||
|
systemd)
|
||||||
|
unit_path='/etc/systemd/system/matrix-alertmanager-receiver.service'
|
||||||
|
__file "$unit_path" \
|
||||||
|
--source "${__type:?}/files/systemd-unit" \
|
||||||
|
--mode 0644
|
||||||
|
;;
|
||||||
|
busybox-init+openrc)
|
||||||
|
unit_path='/etc/init.d/matrix-alertmanager-receiver'
|
||||||
|
__file "$unit_path" \
|
||||||
|
--source "${__type:?}/files/openrc-unit" \
|
||||||
|
--owner prometheus \
|
||||||
|
--mode 0755
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown init: $init" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
require="__file/$unit_path" \
|
||||||
|
__start_on_boot matrix-alertmanager-receiver
|
|
@ -0,0 +1 @@
|
||||||
|
localhost
|
|
@ -0,0 +1 @@
|
||||||
|
9088
|
2
type/__matrix_alertmanager_receiver/parameter/optional
Normal file
2
type/__matrix_alertmanager_receiver/parameter/optional
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
host
|
||||||
|
port
|
4
type/__matrix_alertmanager_receiver/parameter/required
Normal file
4
type/__matrix_alertmanager_receiver/parameter/required
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
homeserver
|
||||||
|
room-id
|
||||||
|
user-id
|
||||||
|
user-token
|
0
type/__matrix_alertmanager_receiver/singleton
Normal file
0
type/__matrix_alertmanager_receiver/singleton
Normal file
Reference in a new issue