add metric TTN Uplinks

This commit is contained in:
Hendrik Schutter 2025-01-16 21:50:00 +01:00
parent 85e3509731
commit abf6b9af82

View File

@ -3,10 +3,12 @@ import { container } from "tsyringe";
import { Counter, Gauge, collectDefaultMetrics, register } from "prom-client";
import { LocationService } from "../services/locationService";
import { WifiLocationService } from "../services/wifiLocationService";
import { TtnGatewayReceptionService } from "../services/ttnGatewayReceptionService";
const router = express.Router();
const locationService = container.resolve(LocationService);
const wifiLocationService = container.resolve(WifiLocationService);
const ttnGatewayReceptionService = container.resolve(TtnGatewayReceptionService);
// Collect default system metrics (e.g., CPU, memory usage)
const prefix = 'locationhub_';
@ -43,6 +45,12 @@ const wifiLocationRequestLimitExceeded = new Gauge({
labelNames: ["database"],
});
const ttnGatewayReceptions = new Gauge({
name: `${prefix}ttn_gateway_receptions`,
help: "Total number of TTN Gateway receptions entries in database",
labelNames: ["database"],
});
// Define the metrics endpoint
router.get("/", async (req: Request, res: Response) => {
@ -53,6 +61,7 @@ router.get("/", async (req: Request, res: Response) => {
wifiLocationTotal.set((await wifiLocationService.getAllWifiLocations()).length);
wifiLocationNotResolvable.set((await wifiLocationService.getAllWifiLocationsByNotResolvable()).length);
wifiLocationRequestLimitExceeded.set((await wifiLocationService.getAllWifiLocationsByRequestLimitExceeded()).length);
ttnGatewayReceptions.set((await ttnGatewayReceptionService.getAllGatewayReceptions()).length);
// Increment the counter with labels
requestCounter.inc({ method: req.method, route: req.route.path, status: 200 });