集群监控
本页内容
概述
本指南展示了如何使用Rust驱动程序来监控MongoDB实例、副本集或分片集群中的拓扑事件。当连接的实例或集群的状态发生变化时,例如副本集成员从次要成员变为主成员时,驱动程序会创建拓扑事件,也称为服务器发现和监控(SDAM)事件。
您可以在应用程序中使用拓扑变化的信息,或者监控集群变化以了解它们如何影响您的应用程序。
本指南包括以下部分
事件描述
您可以监控以下SDAM事件
事件名称 | 描述 |
---|---|
在实例状态更改时创建,例如当副本集成员从次要成员变为主成员时。 | |
在打开到实例(如副本集成员)的连接时创建。 | |
在关闭到实例(如副本集成员)的连接时创建。 | |
在拓扑描述更改时创建,例如在选举新的主成员或当 mongos 代理断开连接时。 | |
在驱动程序尝试连接到实例之前创建。 | |
在拓扑中的所有实例连接关闭之后创建。 | |
在驱动程序向实例发出 hello 命令之前创建。 | |
当 hello 命令从MongoDB实例成功返回时创建。 | |
当向MongoDB实例发送“hello”命令而没有返回成功响应时创建。 |
事件监控示例
您可以通过将EventHandler
实例作为sdam_event_handler
客户端选项的值来监控SDAM事件。要构建一个处理所有SDAM事件的EventHandler
,请使用callback()
或async_callback()
方法。
以下示例连接到MongoDB部署,指示客户端监控SDAM事件,并打印每个事件
let mut client_options = ClientOptions::parse("<connection string>").await?; client_options.sdam_event_handler = Some(EventHandler::callback(|ev| println!("{:?}", ev))); let client = Client::with_options(client_options)?; // ... perform actions with the client to generate events
示例事件文档
以下各节展示了每种类型SDAM事件的示例输出。
ServerDescriptionChangedEvent
ServerDescriptionChangedEvent { address: ..., topology_id: ..., previous_description: ..., new_description: ..., }
服务器开启事件
ServerOpeningEvent { address: ..., topology_id: ..., }
服务器关闭事件
ServerClosedEvent { address: ..., topology_id: ..., }
拓扑描述更改事件
TopologyDescriptionChangedEvent { topology_id: ..., previous_description: ..., new_description: ..., }
拓扑打开事件
TopologyOpeningEvent { topology_id: ..., }
拓扑关闭事件
TopologyClosedEvent { topology_id: ..., }
服务器心跳开始事件
ServerHeartbeatStartedEvent { server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
服务器心跳成功事件
ServerHeartbeatSucceededEvent { duration: ..., reply: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
服务器心跳失败事件
ServerHeartbeatFailedEvent { duration: ..., failure: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
附加信息
要了解更多关于监控MongoDB部署的信息,请参阅如何监控MongoDB文章。
要了解更多关于连接到MongoDB的信息,请参阅连接指南.
API 文档
要了解本指南中提到的方法和类型,请参阅以下 API 文档