chat-ui / src /lib /server /metrics.ts
nsarrazin's picture
nsarrazin HF staff
Move vars to dynamic, add metrics (#1085)
98b1c51 unverified
import { collectDefaultMetrics, Registry } from "prom-client";
import express from "express";
import { logger } from "$lib/server/logger";
import { env } from "$env/dynamic/private";
export class MetricsServer {
private static instance: MetricsServer;
private constructor() {
const app = express();
const port = env.METRICS_PORT || "5565";
const server = app.listen(port, () => {
logger.info(`Metrics server listening on port ${port}`);
});
const register = new Registry();
collectDefaultMetrics({ register });
app.get("/metrics", (req, res) => {
register.metrics().then((metrics) => {
res.set("Content-Type", "text/plain");
res.send(metrics);
});
});
process.on("SIGINT", async () => {
logger.info("Sigint received, disconnect metrics server ...");
server.close(() => {
logger.info("Server stopped ...");
});
process.exit();
});
}
public static getInstance(): MetricsServer {
if (!MetricsServer.instance) {
MetricsServer.instance = new MetricsServer();
}
return MetricsServer.instance;
}
}