diff --git a/server/main.js b/server/main.js index 462ece7f..84c58d31 100644 --- a/server/main.js +++ b/server/main.js @@ -41,11 +41,17 @@ io.of("/").adapter.on("error", (err) => { io.on("connection", (socket) => { metrics.increment("websockets.connected"); - metrics.gauge("websockets.count", socket.client.conn.server.clientsCount); + metrics.gaugePerInstance( + "websockets.count", + socket.client.conn.server.clientsCount + ); socket.on("disconnect", () => { metrics.increment("websockets.disconnected"); - metrics.gauge("websockets.count", socket.client.conn.server.clientsCount); + metrics.gaugePerInstance( + "websockets.count", + socket.client.conn.server.clientsCount + ); }); }); diff --git a/server/utils/metrics.js b/server/utils/metrics.js index 8518d7fe..ebbf4ecb 100644 --- a/server/utils/metrics.js +++ b/server/utils/metrics.js @@ -9,12 +9,31 @@ if (process.env.DD_API_KEY) { }); } -export function gauge(key: string, value: number): void { +export function gauge( + key: string, + value: number, + tags?: { [string]: string } +): void { if (!process.env.DD_API_KEY) { return; } - return metrics.gauge(key, value); + return metrics.gauge(key, value, tags); +} + +export function gaugePerInstance( + key: string, + value: number, + tags?: { [string]: string } = {} +): void { + if (!process.env.DD_API_KEY) { + return; + } + + return metrics.gauge(key, value, { + ...tags, + instance: process.env.INSTANCE_ID || process.env.HEROKU_DYNO_ID, + }); } export function increment(key: string, tags?: { [string]: string }): void {