fix: Metrics lib to account for multiple server instances

This commit is contained in:
Tom Moor
2021-06-15 20:34:46 -07:00
parent 2c39cd6496
commit 277c37dae6
2 changed files with 29 additions and 4 deletions

View File

@ -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
);
});
});

View File

@ -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 {