mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 11:30:43 +00:00
46 lines
1.3 KiB
TypeScript
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);
|
|
},
|
|
};
|