Docs 菜单

监控

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

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

注意

事件记录

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

驾驶员发出的事件类型取决于正在执行的操作。 下表描述了驾驶员发出的事件类型:

eventType
说明

命令事件

与MongoDB 数据库命令相关的事件,例如 findinsertdeletecount。 若要学习;了解如何使用.NET/ C#驱动程序运行数据库命令,请参阅运行数据库命令。有关MongoDB 数据库命令的更多信息,请参阅MongoDB Server手册中的 数据库命令。

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

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

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

连接池事件

与驾驶员持有的连接池相关的事件。

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

要监控事件,您必须在 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文档: