add connected sockets metric
All checks were successful
Deploy App / docker (ubuntu-latest, 2.44.0, 17, 3.8.5) (push) Successful in 2m13s
All checks were successful
Deploy App / docker (ubuntu-latest, 2.44.0, 17, 3.8.5) (push) Successful in 2m13s
This commit is contained in:
parent
c46443425e
commit
0228f7205d
@ -9,10 +9,7 @@ import org.springframework.stereotype.Service;
|
||||
import xyz.mcutils.backend.common.Timer;
|
||||
import xyz.mcutils.backend.repository.MetricsRepository;
|
||||
import xyz.mcutils.backend.service.metric.Metric;
|
||||
import xyz.mcutils.backend.service.metric.metrics.RequestsPerRouteMetric;
|
||||
import xyz.mcutils.backend.service.metric.metrics.TotalPlayerLookupsMetric;
|
||||
import xyz.mcutils.backend.service.metric.metrics.TotalRequestsMetric;
|
||||
import xyz.mcutils.backend.service.metric.metrics.TotalServerLookupsMetric;
|
||||
import xyz.mcutils.backend.service.metric.metrics.*;
|
||||
import xyz.mcutils.backend.service.metric.metrics.process.CpuUsageMetric;
|
||||
import xyz.mcutils.backend.service.metric.metrics.process.MemoryMetric;
|
||||
|
||||
@ -49,6 +46,7 @@ public class MetricService {
|
||||
registerMetric(new CpuUsageMetric());
|
||||
registerMetric(new TotalPlayerLookupsMetric());
|
||||
registerMetric(new TotalServerLookupsMetric());
|
||||
registerMetric(new ConnectedSocketsMetric());
|
||||
|
||||
// Load the metrics from Redis
|
||||
loadMetrics();
|
||||
|
@ -0,0 +1,21 @@
|
||||
package xyz.mcutils.backend.service.metric.metrics;
|
||||
|
||||
import xyz.mcutils.backend.service.metric.impl.IntegerMetric;
|
||||
import xyz.mcutils.backend.websocket.MetricsWebSocketHandler;
|
||||
|
||||
public class ConnectedSocketsMetric extends IntegerMetric {
|
||||
|
||||
public ConnectedSocketsMetric() {
|
||||
super("connected_sockets");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCollector() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void collect() {
|
||||
setValue(MetricsWebSocketHandler.SESSIONS.size());
|
||||
}
|
||||
}
|
@ -22,14 +22,14 @@ import java.util.concurrent.TimeUnit;
|
||||
@Log4j2(topic = "WebSocket/Metrics")
|
||||
public class MetricsWebSocketHandler extends TextWebSocketHandler {
|
||||
private final long interval = TimeUnit.SECONDS.toMillis(5);
|
||||
public final List<WebSocketSession> sessions = new ArrayList<>();
|
||||
public static final List<WebSocketSession> SESSIONS = new ArrayList<>();
|
||||
|
||||
private final MetricService metricService;
|
||||
|
||||
public MetricsWebSocketHandler(MetricService metricService) {
|
||||
this.metricService = metricService;
|
||||
Timer.scheduleRepeating(() -> {
|
||||
for (WebSocketSession session : sessions) {
|
||||
for (WebSocketSession session : SESSIONS) {
|
||||
sendMetrics(session);
|
||||
}
|
||||
}, interval, interval);
|
||||
@ -59,13 +59,13 @@ public class MetricsWebSocketHandler extends TextWebSocketHandler {
|
||||
log.info("WebSocket connection established with session id: {}", session.getId());
|
||||
|
||||
sendMetrics(session);
|
||||
sessions.add(session);
|
||||
SESSIONS.add(session);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConnectionClosed(WebSocketSession session, @NotNull CloseStatus status) {
|
||||
log.info("WebSocket connection closed with session id: {}", session.getId());
|
||||
|
||||
sessions.remove(session);
|
||||
SESSIONS.remove(session);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user