对于我的仪表板应用程序,我想使用内部Spring度量来监视基于Spring的应用程序。为此,我使用了spring-boot-actuator依赖项,它公开了许多内部度量标准。有很多基于HTTP的度量和Tomcat度量,比如当前会话、状态X的HTTP调用量等等。我找不到关于我的Websocket连接的任何信息。
是否有任何内置的标准公开工具用于当前的Websockets,还是我必须创建自己的度量标准(例如,使用Prometheus在Grafana中显示数据),并且必须手动注册,例如,当我收到SessionConnectEvent或SessionConnectEvent时更新的计数器
提前感谢!
发布于 2018-04-06 09:12:08
如果您在WebSocket上使用STOMP,Spring会从WebSocketMessageBrokerStats设置的关键基础结构组件聚合有关内部状态和计数器的信息,默认情况下这将每30秒记录一次。它是作为Spring创建的,可以很容易地自动处理。这是您将获得的信息的一个示例:

目前没有执行器端点,但我在春季WebSocket聊天示例中创建了它们:
发布于 2018-10-10 17:48:28
找到了很简单的方法。
如果您在WebSocket上使用STOMP,那么在控制器类中只需自动创建WebSocketMessageBrokerStats类并使用它的方法。
@Autowired
WebSocketMessageBrokerStats webSocketMessageBrokerStats;
System.out.println("Session Stats info " +webSocketMessageBrokerStats.getWebSocketSessionStatsInfo());不需要创建任何单独的类。
有关更多信息,请阅读https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-stats。
发布于 2021-06-24 11:03:52
还有一种方法。如果您想获得有关活动会话的更多详细信息,那么它将包含在SubProtocolWebSocketHandler中。这个bean处理活动会话,并有一个方法getStats。Stats对象具有以下方法:
int getTotalSessions();
int getWebSocketSessions();
int getHttpStreamingSessions();
int getHttpPollingSessions();
int getLimitExceededSessions();
int getNoMessagesReceivedSessions();
int getTransportErrorSessions();实际上,WebSocketMessageBrokerStats使用了#SubProtocolWebSocketHandler.getStatsInfo方法,它在Stats对象上调用toSting。
因此,可能的代码如下所示:
@Autowired
private WebSocketHandler webSocketHandler;
@GetMapping("/total")
public int getTotalSessions() {
return ((SubProtocolWebSocketHandler) webSocketHandler).getStats().getTotalSessions();
}https://stackoverflow.com/questions/49687540
复制相似问题