mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
add websocket metrics
This commit is contained in:
@@ -20,6 +20,8 @@ const shownGauges: { [key: string]: string } = {
|
||||
"com.commafeed.backend.feed.FeedRefreshEngine.queue.size": "Queue size",
|
||||
"com.commafeed.backend.feed.FeedRefreshEngine.worker.active": "Feed Worker active",
|
||||
"com.commafeed.backend.feed.FeedRefreshEngine.updater.active": "Feed Updater active",
|
||||
"com.commafeed.frontend.ws.WebSocketSessions.users": "WebSocket users",
|
||||
"com.commafeed.frontend.ws.WebSocketSessions.sessions": "WebSocket sessions",
|
||||
}
|
||||
|
||||
export function MetricsPage() {
|
||||
|
||||
@@ -5,9 +5,12 @@ import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import javax.websocket.Session;
|
||||
|
||||
import com.codahale.metrics.Gauge;
|
||||
import com.codahale.metrics.MetricRegistry;
|
||||
import com.commafeed.backend.model.User;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -19,6 +22,13 @@ public class WebSocketSessions {
|
||||
// a user may have multiple sessions (two tabs, on mobile, ...)
|
||||
private final Map<Long, Set<Session>> sessions = new ConcurrentHashMap<>();
|
||||
|
||||
@Inject
|
||||
public WebSocketSessions(MetricRegistry metrics) {
|
||||
metrics.register(MetricRegistry.name(getClass(), "users"), (Gauge<Integer>) sessions::size);
|
||||
metrics.register(MetricRegistry.name(getClass(), "sessions"),
|
||||
(Gauge<Long>) () -> sessions.values().stream().mapToLong(Set::size).sum());
|
||||
}
|
||||
|
||||
public void add(Long userId, Session session) {
|
||||
sessions.computeIfAbsent(userId, v -> ConcurrentHashMap.newKeySet()).add(session);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user