From 86fcef5ade481fe28083e895dbf4be4de31474e2 Mon Sep 17 00:00:00 2001 From: MasterGordon Date: Thu, 17 Oct 2024 23:39:25 +0200 Subject: [PATCH] added metrics --- backend/index.ts | 31 +++++++++++++++++++++++++++++++ bun.lockb | Bin 244961 -> 246358 bytes package.json | 1 + 3 files changed, 32 insertions(+) diff --git a/backend/index.ts b/backend/index.ts index 8514b17..6c96a61 100644 --- a/backend/index.ts +++ b/backend/index.ts @@ -1,5 +1,6 @@ import { on } from "./events"; import { handleRequest } from "./router"; +import promClient, { Histogram } from "prom-client"; const allowCors = { "Access-Control-Allow-Origin": "*", @@ -7,6 +8,17 @@ const allowCors = { "Access-Control-Allow-Headers": "Content-Type", }; +promClient.collectDefaultMetrics(); + +const requestDuration = new Histogram({ + name: "request_duration", + help: "Request duration", + labelNames: ["action"], +}); + +const metricsUser = process.env.METRICS_USER; +const metricsPassword = process.env.METRICS_PASSWORD; + const server = Bun.serve({ async fetch(request: Request) { if (request.method === "OPTIONS") { @@ -16,6 +28,22 @@ const server = Bun.serve({ if (request.url.endsWith("ws")) { if (server.upgrade(request)) return new Response("ok"); } + if (request.url.endsWith("metrics")) { + const [type, auth] = + request.headers.get("Authorization")?.split(" ") ?? []; + const [user, password] = Buffer.from(auth, "base64") + .toString("utf-8") + .split(":"); + if ( + type !== "Basic" || + user !== metricsUser || + password !== metricsPassword + ) { + return new Response("Unauthorized", { status: 401 }); + } + return new Response(await promClient.register.metrics()); + } + return new Response("Not Found", { status: 404 }); }, websocket: { message: (ws, message) => { @@ -25,7 +53,10 @@ const server = Bun.serve({ try { const msg = JSON.parse(message); console.log("Received message", msg); + const start = Date.now(); handleRequest(msg, ws); + const duration = Date.now() - start; + requestDuration.observe({ action: msg.type }, duration); } catch (e) { console.error("Faulty request", message, e); return; diff --git a/bun.lockb b/bun.lockb index d0091f2fc444b6b3ba254d1b386a53d2f72aa3dc..9aa0d04c076d71deda6e602ce78164c9a9694507 100755 GIT binary patch delta 46161 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 delta 45529 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