workadventure/back/src/Controller/PrometheusController.ts
2022-02-02 23:47:36 +01:00

24 lines
890 B
TypeScript

import { App } from "../Server/sifrr.server";
import { HttpRequest, HttpResponse } from "uWebSockets.js";
import { register, collectDefaultMetrics } from "prom-client";
export class PrometheusController {
constructor(private App: App) {
collectDefaultMetrics({
gcDurationBuckets: [0.001, 0.01, 0.1, 1, 2, 5], // These are the default buckets.
});
this.App.get("/metrics", this.metrics.bind(this));
this.App.get("/metrics.json", this.metricsAsJSON.bind(this));
}
private metrics(res: HttpResponse, req: HttpRequest): void {
res.writeHeader("Content-Type", register.contentType);
res.end(register.metrics());
}
private metricsAsJSON(res: HttpResponse, req: HttpRequest): void {
res.writeHeader('Content-Type', 'application/json');
res.end(JSON.stringify(register.getMetricsAsJSON()));
}
}