Restructure code again
This commit is contained in:
parent
390744abe1
commit
5039be644d
6
app.py
Executable file
6
app.py
Executable file
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from uptimestatus import app
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True)
|
@ -1,3 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from flask import Flask
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
from .views import app
|
||||
|
15
uptimestatus/utils.py
Normal file
15
uptimestatus/utils.py
Normal file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
def ratio_to_status(ratio):
|
||||
if ratio > 0.99:
|
||||
return "ok"
|
||||
elif ratio > 0.8:
|
||||
return "warning"
|
||||
else:
|
||||
return "critical"
|
||||
|
||||
def process_instance(instance):
|
||||
return {
|
||||
"name": instance["metric"]["instance"].split(".")[0],
|
||||
"i": [{"status": "unknown", "ratio": None} for i in range(56 - len(instance["values"]))] + [{"status": ratio_to_status(float(i[1])), "ratio": float(i[1])} for i in instance["values"]],
|
||||
}
|
@ -1,31 +1,15 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from flask import Flask, render_template
|
||||
from . import app
|
||||
from .utils import process_instance
|
||||
|
||||
from flask import render_template
|
||||
import json
|
||||
import requests
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
def ratio_to_status(ratio):
|
||||
if ratio > 0.99:
|
||||
return "ok"
|
||||
elif ratio > 0.8:
|
||||
return "warning"
|
||||
else:
|
||||
return "critical"
|
||||
|
||||
def process_instance(instance):
|
||||
return {
|
||||
"name": instance["metric"]["instance"].split(".")[0],
|
||||
"i": [{"status": "unknown", "ratio": None} for i in range(56 - len(instance["values"]))] + [{"status": ratio_to_status(float(i[1])), "ratio": float(i[1])} for i in instance["values"]],
|
||||
}
|
||||
|
||||
@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")
|
||||
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)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run()
|
||||
|
Loading…
Reference in New Issue
Block a user