使用 Spring 公开有关当前 Websocket 连接的指标

rie*_*pil 3 java spring metrics spring-boot spring-websocket

对于我的仪表板应用程序,我想使用内部 Spring 指标监控基于 Spring Boot 的应用程序。因此,我使用了spring-boot-actuator暴露许多内部指标的依赖项。有很多基于 HTTP 的指标和 Tomcat 指标,例如当前会话、状态 X 的 HTTP 调用量等。我找不到有关我的 Websocket 连接的任何信息。

是否有任何内置的现成指标公开工具用于当前的 Websocket 与 Spring 或我是否必须创建自己的指标(例如,用于使用 Prometheus 在 Grafana 中显示数据)并且必须手动注册例如一个计数器当我收到SessionConnectEventSessionConnectEvent?

提前致谢!

Ser*_*mar 7

如果您通过 WebSocket 使用 STOMP,Spring 会从 中设置的关键基础设施组件聚合有关内部状态和计数器的信息WebSocketMessageBrokerStats,默认情况下每 30 秒记录一次。它是作为 Spring bean 创建的,可以轻松地自动装配。这是您将获得的信息的示例:WebSocketMessageBrokerStats 输出

目前没有执行器端点,但我已将它们创建为Spring WebSocket Chat示例的一部分:


小智 5

找到了非常简单的方法。

如果您通过 WebSocket 使用 STOMP,则在控制器类中只需自动装配 WebSocketMessageBrokerStats 类并使用它的方法。

@Autowired
WebSocketMessageBrokerStats webSocketMessageBrokerStats;

System.out.println("Session Stats info " +webSocketMessageBrokerStats.getWebSocketSessionStatsInfo());
Run Code Online (Sandbox Code Playgroud)

无需创建任何单独的类。

阅读https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-stats了解更多信息。