集群监控
在此页面上
Overview
本指南向您展示如何使用 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
ServerOpeningEvent { address: ..., topology_id: ..., }
ServerClosedEvent
ServerClosedEvent { address: ..., topology_id: ..., }
TopologyDescriptionChangedEvent
TopologyDescriptionChangedEvent { topology_id: ..., previous_description: ..., new_description: ..., }
TopologyOpeningEvent
TopologyOpeningEvent { topology_id: ..., }
TopologyClosedEvent
TopologyClosedEvent { topology_id: ..., }
ServerHeartbeatStartedEvent
ServerHeartbeatStartedEvent { server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
ServerHeartbeatSucceededEvent
ServerHeartbeatSucceededEvent { duration: ..., reply: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
ServerHeartbeatFailedEvent
ServerHeartbeatFailedEvent { duration: ..., failure: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
更多信息
要了解有关监控 MongoDB 部署的更多信息,请参阅如何监控 MongoDB一文。
要学习;了解有关连接到MongoDB的更多信息,请参阅连接指南。
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: