From fe09b75db9246a441ea54814653dc1e32b257577 Mon Sep 17 00:00:00 2001 From: clerie Date: Sat, 15 May 2021 14:40:53 +0200 Subject: [PATCH] Configure settings by config file --- README.md | 25 +++++++++++++++++++++++++ uptimestatus/__init__.py | 2 ++ uptimestatus/views.py | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b67246c..c7d9ef6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,28 @@ # Uptime Status Simple status page for server uptime. + +## Deployment +Init codebase +``` +git clone https://github.com/clerie/uptime-status.git +cd uptime-status/ +virtualenv -p python3 ENV +cd .. +``` + +Create `config.cfg` with the following contents and edit values for your needs: + +``` +PROMETHEUS_API_BASE="http://[::1]:9090" +``` + +Starten und updaten lässt sich die Flask-App folgendermaßen: +``` +cd uptime-status/ +git pull +source ENV/bin/activate +pip install -r requirements.txt +UPTIMESTATUS_SETTINGS=/path/to/config.cfg gunicorn uptimestatus:app +deactivate +``` diff --git a/uptimestatus/__init__.py b/uptimestatus/__init__.py index 71c343a..990a2f4 100644 --- a/uptimestatus/__init__.py +++ b/uptimestatus/__init__.py @@ -4,4 +4,6 @@ from flask import Flask app = Flask(__name__) +app.config.from_envvar('UPTIMESTATUS_SETTINGS') + from .views import app diff --git a/uptimestatus/views.py b/uptimestatus/views.py index ab94596..9486988 100644 --- a/uptimestatus/views.py +++ b/uptimestatus/views.py @@ -9,7 +9,7 @@ import requests @app.route("/") def status(): - r = requests.get("https://prometheus.monitoring.clerie.de/api/v1/query?query=%28sum_over_time%28up%7Bjob%3D%22node-exporter%22%7D%5B6h%5D%29+%2F+count_over_time%28up%7Bjob%3D%22node-exporter%22%7D%5B6h%5D%29%29%5B14d%3A6h%5D") + r = requests.get(app.config["PROMETHEUS_API_BASE"] + "/api/v1/query?query=%28sum_over_time%28up%7Bjob%3D%22node-exporter%22%7D%5B6h%5D%29+%2F+count_over_time%28up%7Bjob%3D%22node-exporter%22%7D%5B6h%5D%29%29%5B14d%3A6h%5D") j = json.loads(r.text) metrics = sorted(map(process_instance, j["data"]["result"]), key=lambda m: m["name"]) return render_template("status.html", metrics=metrics)