Monitor Socket.IO Connections

Monitoring is essential for understanding application health in production.

Useful metrics include:

  • Active Socket.IO connections.
  • New connections per minute.
  • Disconnections per minute.
  • Connection failures.
  • Event processing duration.
  • Messages published per second.
  • Redis connectivity.
  • Memory usage.
  • CPU usage.

For basic monitoring, maintain a connection count.

For production, export structured metrics to an observability platform and avoid using socket IDs or user IDs as high-cardinality metric labels.

Production Metrics

For multiple server instances, aggregate connection metrics across instances using a monitoring system. A local JavaScript variable cannot represent the global connection count.

Track Active Connections
let activeConnections = 0;

io.on('connection', (socket) => {
  activeConnections += 1;

  console.log('Active connections:', activeConnections);

  socket.on('disconnect', () => {
    activeConnections -= 1;

    console.log('Active connections:', activeConnections);
  });
});

Maintains a local count of active connections. The value is process-specific and is not a global count when multiple instances are deployed.

Key Takeaways
  • Monitor active connections and disconnections.

  • Track Redis and application health.

  • Aggregate metrics across server instances.