add region to worker metrics

This commit is contained in:
Evan
2025-03-19 10:49:41 -07:00
parent 9d2ca6cc89
commit 8e05268863
5 changed files with 21 additions and 3 deletions
+1
View File
@@ -98,6 +98,7 @@ export interface ServerConfig {
workerPort(gameID: GameID): number;
workerPortByIndex(workerID: number): number;
env(): GameEnv;
region(): string;
adminToken(): string;
adminHeader(): string;
// Only available on the server
+6
View File
@@ -23,6 +23,12 @@ import { pastelTheme } from "./PastelTheme";
import { pastelThemeDark } from "./PastelThemeDark";
export abstract class DefaultServerConfig implements ServerConfig {
region(): string {
if (this.env() == GameEnv.Dev) {
return "dev";
}
return process.env.REGION;
}
gitCommit(): string {
return process.env.GIT_COMMIT;
}
+10 -3
View File
@@ -1,5 +1,9 @@
import promClient from "prom-client";
import { GameManager } from "./GameManager";
import { getServerConfigFromServer } from "../core/configuration/Config";
const config = getServerConfigFromServer();
const region = config.region();
// Initialize the Prometheus registry
const register = new promClient.Registry();
@@ -11,18 +15,21 @@ promClient.collectDefaultMetrics({ register });
const activeGamesGauge = new promClient.Gauge({
name: "openfont_active_games_count",
help: "Number of active games on this worker",
labelNames: ["region"],
registers: [register],
});
const connectedClientsGauge = new promClient.Gauge({
name: "openfont_connected_clients_count",
help: "Number of connected clients on this worker",
labelNames: ["region"],
registers: [register],
});
const memoryUsageGauge = new promClient.Gauge({
name: "openfont_memory_usage_bytes",
help: "Current memory usage of the worker process in bytes",
labelNames: ["region"],
registers: [register],
});
@@ -35,11 +42,11 @@ export const metrics = {
// Function to update game-related metrics
updateGameMetrics: (gameManager: GameManager) => {
activeGamesGauge.set(gameManager.activeGames());
connectedClientsGauge.set(gameManager.activeClients());
activeGamesGauge.set({ region: region }, gameManager.activeGames());
connectedClientsGauge.set({ region: region }, gameManager.activeClients());
// Update memory usage metrics
const memoryUsage = process.memoryUsage();
memoryUsageGauge.set(memoryUsage.heapUsed);
memoryUsageGauge.set({ region: region }, memoryUsage.heapUsed);
},
};
+3
View File
@@ -3,6 +3,9 @@ import { GameMapType } from "../../src/core/game/Game";
import { GameID } from "../../src/core/Schemas";
export class TestServerConfig implements ServerConfig {
region(): string {
return "test";
}
turnIntervalMs(): number {
throw new Error("Method not implemented.");
}
+1
View File
@@ -86,6 +86,7 @@ docker run -d -p 80:80 -p 127.0.0.1:9090:9090 \
--log-opt max-size=10m \
--log-opt max-file=3 \
--env GAME_ENV=${ENV} \
--env REGION=${REGION} \
--env-file /root/.env \
--name ${CONTAINER_NAME} \
$FULL_IMAGE_NAME