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
+
+
+
+
+
+
+
+
+ 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()