Compare commits

..

3 Commits

Author SHA1 Message Date
caacaced97 Make the prometheus query configurable 2021-05-15 15:22:38 +02:00
137c81b245 Explain more, what it does. 2021-05-15 15:00:31 +02:00
14d4f76a46 Add screenshot 2021-05-15 14:56:11 +02:00
4 changed files with 8 additions and 1 deletions

View File

@@ -2,6 +2,10 @@
Simple status page for server uptime.
![screenshot](screenshot.png)
Displays the up indicator of node-exporter from your prometheus for the last 14 days in 6h steps.
## Deployment
Init codebase
```
@@ -15,6 +19,7 @@ Create `config.cfg` with the following contents and edit values for your needs:
```
PROMETHEUS_API_BASE="http://[::1]:9090"
PROMETHEUS_QUERY='(sum_over_time(up{job="node-exporter"}[6h]) / count_over_time(up{job="node-exporter"}[6h]))[14d:6h]'
```
Starten und updaten lässt sich die Flask-App folgendermaßen:

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -6,6 +6,7 @@ import os
app = Flask(__name__)
app.config["PROMETHEUS_API_BASE"] = "http://[::1]:9090"
app.config["PROMETHEUS_QUERY"] = '(sum_over_time(up{job="node-exporter"}[6h]) / count_over_time(up{job="node-exporter"}[6h]))[14d:6h]'
if "UPTIMESTATUS_SETTINGS" in os.environ:
app.config.from_envvar('UPTIMESTATUS_SETTINGS')

View File

@@ -6,10 +6,11 @@ from .utils import process_instance
from flask import render_template
import json
import requests
import urllib.parse
@app.route("/")
def status():
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")
r = requests.get(app.config["PROMETHEUS_API_BASE"] + "/api/v1/query?" + urllib.parse.urlencode({'query': app.config["PROMETHEUS_QUERY"]}))
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)