From 2079268b5d54c5b88c3b8c0a4e1c2a7d787ce362 Mon Sep 17 00:00:00 2001 From: Scott Wallace Date: Tue, 13 Oct 2020 15:31:33 +0100 Subject: [PATCH] Update to first fully working version. --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ alertify.py | 13 +++++++++---- requirements.txt | 2 -- 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..560332f --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +This application will send Alertmanager alerts through to Gotify. + +# Notes +* Forwards `resolved` alerts, if sent. +* Defaults, if not sent: + | Field | Default value | + |-------------|---------------| + | Priority | `5` | + | Description | `...` | + | Severity | `Default` | + + +# Docker +## Run + +e.g. +```bash +docker run -e TZ=Europe/London -e GOTIFY_KEY=XXXXXXXX -e GOTIFY_SERVER=gotify -e GOTIFY_PORT=80 alertify:latest +``` + +## Compose: +```yaml +--- +version: "2" +services: + gotify: + image: gotify/server:latest + container_name: gotify + environment: + - TZ=Europe/London + volumes: + - config/config.yml:/etc/gotify/config.yml + - data:/app/data + restart: unless-stopped + + alertify: + image: alertify:latest + container_name: alertify + environment: + - TZ=Europe/London + - GOTIFY_KEY=XXXXXXXXXXXX + - GOTIFY_SERVER=gotify + - GOTIFY_PORT=80 + restart: unless-stopped +``` diff --git a/alertify.py b/alertify.py index 708eb91..dd746c8 100644 --- a/alertify.py +++ b/alertify.py @@ -65,18 +65,23 @@ class HTTPHandler(SimpleHTTPRequestHandler): """ if not self._healthcheck(message=False): return - + content_length = int(self.headers['Content-Length']) rawdata = self.rfile.read(content_length) alert = json.loads(rawdata.decode()) + if alert['status'] == 'resolved': + prefix = 'Resolved' + else: + prefix = alert['commonLabels'].get('severity', 'default').capitalize() + gotify_msg = { 'message': '{}: {}'.format( - alert['commonLabels']['severity'].capitalize(), - alert['commonAnnotations']['description'] + prefix, + alert['commonAnnotations'].get('description', '...') ), - 'priority': int(alert['commonLabels']['priority']) or 5 + 'priority': int(alert['commonLabels'].get('priority', 5)) } (status, reason) = gotify_send( diff --git a/requirements.txt b/requirements.txt index 90b4360..749d0fd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1 @@ # To ensure app dependencies are ported from your virtual environment/host machine into your container, run 'pip freeze > requirements.txt' in the terminal to overwrite this file -docker -prometheus_client