diff --git a/scripts/dashboard.html b/scripts/dashboard.html new file mode 100644 index 0000000..82ff496 --- /dev/null +++ b/scripts/dashboard.html @@ -0,0 +1,388 @@ + + + + + +uno-q Audio Synth — Diagnostics + + + + +
+

uno-q Audio Synth — Diagnostics

+
+ + + + +
+
+ +
+
+ Enter board IP above and click Refresh + Dashboard will auto-fetch on load if IP is set +
+
+ +

+ + + + \ No newline at end of file diff --git a/scripts/prometheus-exporter.py b/scripts/prometheus-exporter.py index 7220a28..bbb1a0e 100644 --- a/scripts/prometheus-exporter.py +++ b/scripts/prometheus-exporter.py @@ -236,6 +236,9 @@ def format_metrics(): return "\n".join(lines) + "\n" +DASHBOARD_PATH = os.path.join(os.path.dirname(__file__), "dashboard.html") + + class Handler(http.server.BaseHTTPRequestHandler): def do_GET(self): if self.path == "/metrics": @@ -252,6 +255,18 @@ class Handler(http.server.BaseHTTPRequestHandler): self.send_header("Content-Type", "application/json") self.end_headers() self.wfile.write(body) + elif self.path in ("/dashboard", "/dashboard.html"): + try: + with open(DASHBOARD_PATH) as f: + body = f.read().encode() + self.send_response(200) + self.send_header("Content-Type", "text/html; charset=utf-8") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + except OSError: + self.send_response(404) + self.end_headers() else: self.send_response(404) self.end_headers() @@ -268,6 +283,7 @@ def main(): t.start() server = http.server.HTTPServer(("0.0.0.0", PORT), Handler) print(f"[metrics] Listening on :{PORT}/metrics") + print(f"[metrics] Dashboard: http://0.0.0.0:{PORT}/dashboard") server.serve_forever()