move metrics definition to service
This commit is contained in:
parent
f969b0a4c0
commit
4d0e84b84a
@ -4,58 +4,21 @@ import { Counter, Gauge, collectDefaultMetrics, register } from "prom-client";
|
|||||||
import { LocationService } from "../services/locationService";
|
import { LocationService } from "../services/locationService";
|
||||||
import { WifiLocationService } from "../services/wifiLocationService";
|
import { WifiLocationService } from "../services/wifiLocationService";
|
||||||
import { TtnGatewayReceptionService } from "../services/ttnGatewayReceptionService";
|
import { TtnGatewayReceptionService } from "../services/ttnGatewayReceptionService";
|
||||||
|
import { MetricsService } from "../services/metricsService";
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const locationService = container.resolve(LocationService);
|
const locationService = container.resolve(LocationService);
|
||||||
const wifiLocationService = container.resolve(WifiLocationService);
|
const wifiLocationService = container.resolve(WifiLocationService);
|
||||||
const ttnGatewayReceptionService = container.resolve(TtnGatewayReceptionService);
|
const ttnGatewayReceptionService = container.resolve(TtnGatewayReceptionService);
|
||||||
|
const metricsService = container.resolve(MetricsService);
|
||||||
|
|
||||||
// Collect default system metrics (e.g., CPU, memory usage)
|
const requestCounter = metricsService.getRequestCounter();
|
||||||
const prefix = 'locationhub_';
|
const locationsTotal = metricsService.getLocationsTotal();
|
||||||
collectDefaultMetrics({ prefix });
|
const gnssLocationsTotal = metricsService.getGnssLocationsTotal()
|
||||||
|
const wifiLocationTotal = metricsService.getWifiLocationTotal();
|
||||||
// Define a custom Counter metric
|
const wifiLocationNotResolvable = metricsService.getWifiLocationResolvable();
|
||||||
const requestCounter = new Counter({
|
const wifiLocationRequestLimitExceeded = metricsService.getLWifiLocationRequestLimitExceeded();
|
||||||
name: `${prefix}http_requests_total`,
|
const ttnGatewayReceptions = metricsService.getTnnGatewayReceptions();
|
||||||
help: "Total number of HTTP requests",
|
|
||||||
labelNames: ["method", "route", "status"],
|
|
||||||
});
|
|
||||||
|
|
||||||
const locationsTotal = new Gauge({
|
|
||||||
name: `${prefix}locations_total`,
|
|
||||||
help: "Total number of location entries in database",
|
|
||||||
labelNames: ["database"],
|
|
||||||
});
|
|
||||||
|
|
||||||
const gnssLocationsTotal = new Gauge({
|
|
||||||
name: `${prefix}gnss_locations_total`,
|
|
||||||
help: "Total number of location entries with GNSS in database",
|
|
||||||
labelNames: ["database"],
|
|
||||||
});
|
|
||||||
|
|
||||||
const wifiLocationTotal = new Gauge({
|
|
||||||
name: `${prefix}wifi_locations_total`,
|
|
||||||
help: "Total number of wifi location entries in database",
|
|
||||||
labelNames: ["database"],
|
|
||||||
});
|
|
||||||
|
|
||||||
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"],
|
|
||||||
});
|
|
||||||
|
|
||||||
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
|
// Define the metrics endpoint
|
||||||
router.get("/", async (req: Request, res: Response) => {
|
router.get("/", async (req: Request, res: Response) => {
|
||||||
|
70
server/src/services/metricsService.ts
Normal file
70
server/src/services/metricsService.ts
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import {injectable } from "tsyringe";
|
||||||
|
import { Counter, Gauge, collectDefaultMetrics} from "prom-client";
|
||||||
|
|
||||||
|
// Collect default system metrics (e.g., CPU, memory usage)
|
||||||
|
const prefix = 'locationhub_';
|
||||||
|
collectDefaultMetrics({ prefix });
|
||||||
|
|
||||||
|
@injectable()
|
||||||
|
export class MetricsService {
|
||||||
|
constructor(
|
||||||
|
) { }
|
||||||
|
|
||||||
|
public getRequestCounter() {
|
||||||
|
const requestCounter = new Counter({
|
||||||
|
name: `${prefix}http_requests_total`,
|
||||||
|
help: "Total number of HTTP requests",
|
||||||
|
labelNames: ["method", "route", "status"],
|
||||||
|
});
|
||||||
|
return requestCounter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getLocationsTotal() {
|
||||||
|
const locationsTotal = new Gauge({
|
||||||
|
name: `${prefix}locations_total`,
|
||||||
|
help: "Total number of location entries in database",
|
||||||
|
labelNames: ["database"],
|
||||||
|
});
|
||||||
|
return locationsTotal;
|
||||||
|
}
|
||||||
|
public getGnssLocationsTotal() {
|
||||||
|
const gnssLocationsTotal = new Gauge({
|
||||||
|
name: `${prefix}gnss_locations_total`,
|
||||||
|
help: "Total number of location entries with GNSS in database",
|
||||||
|
labelNames: ["database"],
|
||||||
|
});
|
||||||
|
return gnssLocationsTotal;
|
||||||
|
}
|
||||||
|
public getWifiLocationTotal() {
|
||||||
|
const wifiLocationTotal = new Gauge({
|
||||||
|
name: `${prefix}wifi_locations_total`,
|
||||||
|
help: "Total number of wifi location entries in database",
|
||||||
|
labelNames: ["database"],
|
||||||
|
});
|
||||||
|
return wifiLocationTotal;
|
||||||
|
}
|
||||||
|
public getWifiLocationResolvable() {
|
||||||
|
const wifiLocationNotResolvable = new Gauge({
|
||||||
|
name: `${prefix}wifi_locations_not_resolvable`,
|
||||||
|
help: "Unresolved number of wifi location entries in database",
|
||||||
|
labelNames: ["database"],
|
||||||
|
});
|
||||||
|
return wifiLocationNotResolvable;
|
||||||
|
}
|
||||||
|
public getLWifiLocationRequestLimitExceeded() {
|
||||||
|
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"],
|
||||||
|
});
|
||||||
|
return wifiLocationRequestLimitExceeded;
|
||||||
|
}
|
||||||
|
public getTnnGatewayReceptions() {
|
||||||
|
const ttnGatewayReceptions = new Gauge({
|
||||||
|
name: `${prefix}ttn_gateway_receptions`,
|
||||||
|
help: "Total number of TTN Gateway receptions entries in database",
|
||||||
|
labelNames: ["database"],
|
||||||
|
});
|
||||||
|
return ttnGatewayReceptions;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user