对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

监控

在此页面,您可以学习;了解如何在MongoDB .NET/ C#驱动程序中配置监控。监控是在应用程序运行时收集有关应用程序性能和资源使用情况的信息的进程。 这可以帮助您在设计和调试应用程序时做出明智的决策。

驱动程序通过发出事件来提供有关应用程序的信息。您可以订阅这些驱动程序事件来监控您的应用程序。

注意

事件记录

本页介绍如何在代码中监控应用程序。 要学习;了解如何将此信息记录到外部日志中,请参阅日志记录。

驱动程序发出的事件类型取决于正在执行的操作。下表描述了驱动程序发出的事件类型:

eventType
说明

命令事件

Events related to MongoDB database commands, such as find, insert, delete, and count. To learn how to use the .NET/C# Driver to run a database command, see Run a Database Command. For more information about MongoDB database commands, see Database Commands in the MongoDB Server manual.

作为安全措施,驱动程序会编辑某些命令事件的内容。这样可以保护这些命令事件中包含的敏感信息。

服务器发现和监控 (SDAM) 事件

与MongoDB 部署状态更改相关的事件。

连接池事件

与驱动程序持有的连接池相关的事件。

有关驱动程序发出的事件的完整列表,请参阅 MongoDB.Driver.Core.Events 命名空间的 API 文档。

要监控事件,您必须在 MongoClient实例上订阅侦听器方法。 以下步骤描述了如何订阅事件:

  1. 创建一个 MongoClientSettings对象。

  2. MongoClientSettings对象上的 ClusterConfigurator属性设置为接受 ClusterBuilder对象的Lambda函数。

  3. 在Lambda函数中,对您要订阅的每个事件的 ClusterBuilder对象调用 Subscribe<TEvent>() 方法。 将 TEvent 替换为事件类型。 将事件处理程序方法作为参数传递给 Subscribe<TEvent>() 方法。

以下代码示例展示了如何订阅ClusterOpenedEventServerHeartbeatSucceededEventConnectionPoolReadyEvent。 此示例假定 ClusterEventHandlerHeartbeatEventHandlerConnectionPoolEventHandler 方法是在代码中的其他位置定义的。

var clientSettings = MongoClientSettings.FromConnectionString(MongoConnectionString);
clientSettings.ClusterConfigurator = clusterBuilder =>
{
clusterBuilder
.Subscribe<ClusterOpenedEvent>(ClusterEventHandler)
.Subscribe<ServerHeartbeatSucceededEvent>(HeartbeatEventHandler)
.Subscribe<ConnectionPoolReadyEvent>(ConnectionPoolEventHandler);
};

提示

您可以订阅任意数量的事件,这些事件可以有不同的类型。

要学习有关用于监控驱动程序中的事件的方法和类的更多信息,请参阅以下API文档: