From 3fe7a670f8fe6a9f3760c411a0df3b346c96f80d Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Wed, 15 Jan 2025 08:57:09 +0100 Subject: [PATCH] basic metrics support --- src/server/routes/metrics/index.get.ts | 14 ++++++++++++++ src/server/routes/metrics/json.get.ts | 13 +++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/server/routes/metrics/index.get.ts create mode 100644 src/server/routes/metrics/json.get.ts diff --git a/src/server/routes/metrics/index.get.ts b/src/server/routes/metrics/index.get.ts new file mode 100644 index 00000000..6cd0d46d --- /dev/null +++ b/src/server/routes/metrics/index.get.ts @@ -0,0 +1,14 @@ +export default defineEventHandler(async (event) => { + // TODO: check password + + const system = await Database.system.get(); + if (!system.metrics.prometheus.enabled) { + throw createError({ + statusCode: 400, + message: 'Prometheus metrics are not enabled', + }); + } + + setHeader(event, 'Content-Type', 'text/plain'); + return WireGuard.getMetrics(); +}); diff --git a/src/server/routes/metrics/json.get.ts b/src/server/routes/metrics/json.get.ts new file mode 100644 index 00000000..eaef7024 --- /dev/null +++ b/src/server/routes/metrics/json.get.ts @@ -0,0 +1,13 @@ +export default defineEventHandler(async () => { + // TODO: check password + + const system = await Database.system.get(); + if (!system.metrics.prometheus.enabled) { + throw createError({ + statusCode: 400, + message: 'Prometheus metrics are not enabled', + }); + } + + return WireGuard.getMetricsJSON(); +});