From 8a4eadefcb5fe3aa0cebf4d5655262d64893687bfa4936514aaa600f12ac269f Mon Sep 17 00:00:00 2001 From: localhorst Date: Tue, 14 Jan 2025 21:03:44 +0100 Subject: [PATCH] use db wifi_location as metric source --- server/src/controller/metricsController.ts | 24 ++++++++++++++-------- server/src/proxy/wigle.ts | 6 ------ server/src/services/metricsService.ts | 23 --------------------- server/src/services/wifiLocationService.ts | 12 +++++++++++ 4 files changed, 27 insertions(+), 38 deletions(-) delete mode 100644 server/src/services/metricsService.ts diff --git a/server/src/controller/metricsController.ts b/server/src/controller/metricsController.ts index 71b06a9..65d9438 100644 --- a/server/src/controller/metricsController.ts +++ b/server/src/controller/metricsController.ts @@ -1,12 +1,10 @@ import express, { Request, Response } from "express"; import { container } from "tsyringe"; import { Counter, Gauge, collectDefaultMetrics, register } from "prom-client"; -import { MetricsService } from "../services/metricsService"; import { LocationService } from "../services/locationService"; import { WifiLocationService } from "../services/wifiLocationService"; const router = express.Router(); -const metricsService = container.resolve(MetricsService); const locationService = container.resolve(LocationService); const wifiLocationService = container.resolve(WifiLocationService); @@ -24,21 +22,28 @@ const requestCounter = new Counter({ const locationsTotal = new Gauge({ name: `${prefix}locations_total`, help: "Total number of location entries in database", - labelNames: ["database"], + labelNames: ["database"], }); const wifiLocationTotal = new Gauge({ name: `${prefix}wifi_locations_total`, help: "Total number of wifi location entries in database", - labelNames: ["database"], + labelNames: ["database"], }); -const wigleApiRequest = new Gauge({ - name: `${prefix}wigle_api_requests_total`, - help: "Total number of wifi location entries in database", - labelNames: ["wigle"], +const wifiLocationNotResolvable = new Gauge({ + name: `${prefix}wifi_locations_not_resolvable`, + help: "Unresolved number of wifi location entries in database", + labelNames: ["database"], }); +const wifiLocationRequestLimitExceeded = new Gauge({ + name: `${prefix}wifi_locations_request_limit_exceeded`, + help: "Unresolved number of wifi location because request limit exceeded entries in database", + labelNames: ["database"], +}); + + // Define the metrics endpoint router.get("/", async (req: Request, res: Response) => { try { @@ -46,7 +51,8 @@ router.get("/", async (req: Request, res: Response) => { locationsTotal.set((await locationService.getAllLocations()).length); wifiLocationTotal.set((await wifiLocationService.getAllWifiLocations()).length); - wigleApiRequest.set(metricsService.getWigleApiNumberOfRequests()); + wifiLocationNotResolvable.set((await wifiLocationService.getAllWifiLocationsByNotResolvable).length); + wifiLocationRequestLimitExceeded.set((await wifiLocationService.getAllWifiLocationsByRequestLimitExceeded).length); // Increment the counter with labels requestCounter.inc({ method: req.method, route: req.route.path, status: 200 }); diff --git a/server/src/proxy/wigle.ts b/server/src/proxy/wigle.ts index d6903de..5bc5747 100644 --- a/server/src/proxy/wigle.ts +++ b/server/src/proxy/wigle.ts @@ -1,8 +1,3 @@ -import { container } from "tsyringe"; -import { MetricsService } from "../services/metricsService"; - -const metricsService = container.resolve(MetricsService); - interface WigleApiResonse { response?: WifiLocationResponse, status_code: number, @@ -52,7 +47,6 @@ interface Result { export const getLocationForWifi = async ( mac: string ): Promise => { - metricsService.incWigleApiNumberOfRequests(); try { const url = `${process.env.WIGLE_BASE_URL!}${process.env .WIGLE_NETWORK_SEARCH!}?netid=${encodeURIComponent(mac)}`; diff --git a/server/src/services/metricsService.ts b/server/src/services/metricsService.ts deleted file mode 100644 index 35e6309..0000000 --- a/server/src/services/metricsService.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { inject, injectable } from "tsyringe"; - -@injectable() -export class MetricsService { - private wigleApiNumberOfRequests: number; - - constructor() { - this.wigleApiNumberOfRequests = 0; // Initialize the variable - } - - // Method to increment the request count - public incWigleApiNumberOfRequests() { - console.log("inc") - this.wigleApiNumberOfRequests += 1; // Increment the number of requests - console.log(this.wigleApiNumberOfRequests) - } - - // Method to get the current request count - public getWigleApiNumberOfRequests() { - console.log("get: " + this.wigleApiNumberOfRequests) - return this.wigleApiNumberOfRequests; - } -} \ No newline at end of file diff --git a/server/src/services/wifiLocationService.ts b/server/src/services/wifiLocationService.ts index 2617db8..a635f5f 100644 --- a/server/src/services/wifiLocationService.ts +++ b/server/src/services/wifiLocationService.ts @@ -29,6 +29,18 @@ export class WifiLocationService { }); } + public async getAllWifiLocationsByNotResolvable() { + return this.repository.findAll({ + where: { location_not_resolvable: true }, + }); + } + + public async getAllWifiLocationsByRequestLimitExceeded() { + return this.repository.findAll({ + where: { request_limit_exceeded: true }, + }); + } + public async getWifiLocationByMac(mac: string) { let wifiLocation = await this.repository.findById(mac);