From 87b8c2bebeeb73fbe1389692f9b0e06e89a3389b Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Mon, 19 Aug 2024 21:23:47 +0200 Subject: [PATCH] feat: :sparkles: Implement Prometheus support --- app.ts | 15 +++++++++++++++ bun.lockb | Bin 278228 -> 279740 bytes package.json | 2 ++ 3 files changed, 17 insertions(+) diff --git a/app.ts b/app.ts index dca01d4a..182fc8a5 100644 --- a/app.ts +++ b/app.ts @@ -4,6 +4,7 @@ import { Hono } from "@hono/hono"; import { cors } from "@hono/hono/cors"; import { prettyJSON } from "@hono/hono/pretty-json"; import { secureHeaders } from "@hono/hono/secure-headers"; +import { prometheus } from "@hono/prometheus"; import { getLogger } from "@logtape/logtape"; import { config } from "~/packages/config-manager/index"; import { agentBans } from "./middlewares/agent-bans"; @@ -22,6 +23,18 @@ export const appFactory = async () => { strict: false, }); + const { printMetrics, registerMetrics } = prometheus({ + collectDefaultMetrics: true, + metricOptions: { + requestsTotal: { + customLabels: { + content_type: (c) => + c.res.headers.get("content-type") ?? "unknown", + }, + }, + }, + }); + app.use(ipBans); app.use(agentBans); app.use(bait); @@ -68,6 +81,8 @@ export const appFactory = async () => { credentials: true, }), ); + app.use("*", registerMetrics); + app.get("/metrics", printMetrics); // Disabled as federation now checks for this // app.use(urlCheck); diff --git a/bun.lockb b/bun.lockb index 07970ec5579d8ea80f30a355b796bd089034659f..9e9fcf750cd39c870ba4e6bbee7bfdad8016d772 100755 GIT binary patch delta 53039 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