summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-05-25 09:14:29 +0200
committerRory& <root@rory.gay>2026-05-28 17:27:08 +0200
commitacc4a10f09958ba6dc668fb7fc48099b40e1369b (patch)
treef137ab72373d7d6ef7418fcc4378e244570cee60
parentmonitoring: ignore OPTIONS requests that dont have a route handler (diff)
downloadserver-ts-acc4a10f09958ba6dc668fb7fc48099b40e1369b.tar.xz
monitoring: add helper to register a metric without duplicating
-rw-r--r--src/util/monitoring/Monitoring.ts14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/util/monitoring/Monitoring.ts b/src/util/monitoring/Monitoring.ts

index c72e33d9..24792674 100644 --- a/src/util/monitoring/Monitoring.ts +++ b/src/util/monitoring/Monitoring.ts
@@ -16,20 +16,28 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import http, { IncomingMessage, ServerResponse } from "node:http"; +import { IncomingMessage, ServerResponse } from "node:http"; import * as client from "prom-client"; import { Application, Router } from "express"; -import { sleep } from "@spacebar/util"; +import { Metric } from "prom-client"; export class Monitoring { static isInitialised = false; public static async init() { if (Monitoring.isInitialised) return; console.log("[Monitoring] Initialising prometheus metrics"); - client.collectDefaultMetrics(); + client.collectDefaultMetrics({ prefix: "spacebar_" }); Monitoring.isInitialised = true; } + public static attachMetric<T extends Metric>(name: string, metric: T): T { + const existingMetric = client.register.getSingleMetric(name); + // TODO: is there any way to *ensure* the metric is T? We're assuming that there's no conflicting definitions across the app... + if (existingMetric) return existingMetric as T; + client.register.registerMetric(metric); + return metric; + } + public static attach(app: Application) { const http_request_total = new client.Counter({ name: "spacebar_http_request_total",