Files
OpenFrontIO/src/server/WorkerMetrics.ts
T
2025-03-18 09:00:05 -07:00

46 lines
1.3 KiB
TypeScript

import promClient from "prom-client";
import { GameManager } from "./GameManager";
// Initialize the Prometheus registry
const register = new promClient.Registry();
// Enable default Node.js metrics collection
promClient.collectDefaultMetrics({ register });
// Add worker-specific metrics
const activeGamesGauge = new promClient.Gauge({
name: "active_games_count",
help: "Number of active games on this worker",
registers: [register],
});
const connectedClientsGauge = new promClient.Gauge({
name: "connected_clients_count",
help: "Number of connected clients on this worker",
registers: [register],
});
const memoryUsageGauge = new promClient.Gauge({
name: "memory_usage_bytes",
help: "Current memory usage of the worker process in bytes",
registers: [register],
});
// Export the metrics for use in the worker
export const metrics = {
register,
activeGamesGauge,
connectedClientsGauge,
memoryUsageGauge,
// Function to update game-related metrics
updateGameMetrics: (gameManager: GameManager) => {
activeGamesGauge.set(gameManager.activeGames());
connectedClientsGauge.set(gameManager.activeClients());
// Update memory usage metrics
const memoryUsage = process.memoryUsage();
memoryUsageGauge.set(memoryUsage.heapUsed);
},
};