From ee86413cdd9ca07745f2aa5a203b599d755a17d5 Mon Sep 17 00:00:00 2001 From: Mario de Frutos Dieguez Date: Tue, 10 Mar 2020 10:15:56 +0100 Subject: [PATCH] Include websocket users metric (#14020) This commit adds new metrics to know the number of registered users we have in every WebSocket broadcasts hub --- app/web_hub.go | 6 ++++++ einterfaces/metrics.go | 2 ++ einterfaces/mocks/MetricsInterface.go | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/app/web_hub.go b/app/web_hub.go index 47eaca3885..42024a18dd 100644 --- a/app/web_hub.go +++ b/app/web_hub.go @@ -161,6 +161,9 @@ func (a *App) GetHubForUserId(userId string) *Hub { func (a *App) HubRegister(webConn *WebConn) { hub := a.GetHubForUserId(webConn.UserId) if hub != nil { + if metrics := a.Metrics(); metrics != nil { + metrics.IncrementWebSocketBroadcastUsersRegistered(strconv.Itoa(hub.connectionIndex), 1) + } hub.Register(webConn) } } @@ -168,6 +171,9 @@ func (a *App) HubRegister(webConn *WebConn) { func (a *App) HubUnregister(webConn *WebConn) { hub := a.GetHubForUserId(webConn.UserId) if hub != nil { + if metrics := a.Metrics(); metrics != nil { + metrics.DecrementWebSocketBroadcastUsersRegistered(strconv.Itoa(hub.connectionIndex), 1) + } hub.Unregister(webConn) } } diff --git a/einterfaces/metrics.go b/einterfaces/metrics.go index f018ad0df0..5fa4816540 100644 --- a/einterfaces/metrics.go +++ b/einterfaces/metrics.go @@ -39,6 +39,8 @@ type MetricsInterface interface { IncrementWebSocketBroadcast(eventType string) IncrementWebSocketBroadcastBufferSize(hub string, amount float64) DecrementWebSocketBroadcastBufferSize(hub string, amount float64) + IncrementWebSocketBroadcastUsersRegistered(hub string, amount float64) + DecrementWebSocketBroadcastUsersRegistered(hub string, amount float64) AddMemCacheHitCounter(cacheName string, amount float64) AddMemCacheMissCounter(cacheName string, amount float64) diff --git a/einterfaces/mocks/MetricsInterface.go b/einterfaces/mocks/MetricsInterface.go index c4238699c7..13b69fdd7c 100644 --- a/einterfaces/mocks/MetricsInterface.go +++ b/einterfaces/mocks/MetricsInterface.go @@ -26,6 +26,11 @@ func (_m *MetricsInterface) DecrementWebSocketBroadcastBufferSize(hub string, am _m.Called(hub, amount) } +// DecrementWebSocketBroadcastUsersRegistered provides a mock function with given fields: hub, amount +func (_m *MetricsInterface) DecrementWebSocketBroadcastUsersRegistered(hub string, amount float64) { + _m.Called(hub, amount) +} + // IncrementChannelIndexCounter provides a mock function with given fields: func (_m *MetricsInterface) IncrementChannelIndexCounter() { _m.Called() @@ -151,6 +156,11 @@ func (_m *MetricsInterface) IncrementWebSocketBroadcastBufferSize(hub string, am _m.Called(hub, amount) } +// IncrementWebSocketBroadcastUsersRegistered provides a mock function with given fields: hub, amount +func (_m *MetricsInterface) IncrementWebSocketBroadcastUsersRegistered(hub string, amount float64) { + _m.Called(hub, amount) +} + // IncrementWebhookPost provides a mock function with given fields: func (_m *MetricsInterface) IncrementWebhookPost() { _m.Called()