文档菜单
文档首页
/ / /
Rust 驱动
/ /

集群监控

本页内容

  • 概述
  • 事件描述
  • 事件监控示例
  • 示例事件文档
  • ServerDescriptionChangedEvent
  • 服务器开启事件
  • 服务器关闭事件
  • 拓扑描述更改事件
  • 拓扑开启事件
  • 拓扑关闭事件
  • 服务器心跳开始事件
  • 服务器心跳成功事件
  • 服务器心跳失败事件
  • 附加信息
  • API 文档

本指南展示了如何使用Rust驱动程序来监控MongoDB实例、副本集或分片集群中的拓扑事件。当连接的实例或集群的状态发生变化时,例如副本集成员从次要成员变为主成员时,驱动程序会创建拓扑事件,也称为服务器发现和监控(SDAM)事件。

您可以在应用程序中使用拓扑变化的信息,或者监控集群变化以了解它们如何影响您的应用程序。

本指南包括以下部分

  • 事件描述描述了驱动程序可以生成SDAM事件。

  • 事件订阅示例提供了示例代码,展示了如何订阅SDAM事件。

  • 示例事件文档提供了每个SDAM事件的示例。

  • 附加信息提供了有关本指南中提到的类型和方法的资源链接和API文档。

您可以监控以下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 {
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 文档

返回

监控