对于我的仪表板应用程序,我想使用内部Spring指标监视基于Spring Boot的应用程序。因此,我使用了spring-boot-actuator
依赖关系,它暴露了许多内部指标。有许多基于HTTP的指标和Tomcat指标,如当前会话,状态X的HTTP调用量等等。我找不到有关我的Websocket连接的任何信息。
是否存在开箱即用的内置指标暴露当前使用Spring的Websockets的工具,或者我是否必须创建自己的指标(例如,使用Prometheus在Grafana中显示数据)并且必须手动注册例如a我收到SessionConnectEvent
或SessionConnectEvent
时会更新的计数器?
提前致谢!
答案 0 :(得分:2)
如果您在WebSocket上使用STOMP,Spring会在WebSocketMessageBrokerStats
中聚合有关设置的关键基础架构组件的内部状态和计数器的信息,默认情况下每30秒记录一次。它是作为Spring bean创建的,可以轻松自动装配。这是您将获得的信息示例:
目前没有执行器端点,但我已将其创建为Spring WebSocket Chat示例的一部分:
答案 1 :(得分:2)
找到了非常简单的方法。
如果要通过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了解更多信息。
答案 2 :(得分:1)
此外,还有一种方法。如果您想获得有关活动会话的更多详细信息,则它包含在 person1 is a : Person
person2 is a : HASH
Undefined name attribute at ./p2.pl line 28.
Use of uninitialized value in say at ./p2.pl line 43.
The name of person1 is:
The age of person1 is: 20
中。这个 bean 处理活动会话并有一个方法 SubProtocolWebSocketHandler
。 Stats 对象有方法:
getStats
实际上 int getTotalSessions();
int getWebSocketSessions();
int getHttpStreamingSessions();
int getHttpPollingSessions();
int getLimitExceededSessions();
int getNoMessagesReceivedSessions();
int getTransportErrorSessions();
使用方法 WebSocketMessageBrokerStats
,它在 Stats 对象上调用 #SubProtocolWebSocketHandler.getStatsInfo
。
因此,可能的代码如下:
toSting