Monitoring
Overview
On this page, you can learn how to configure monitoring in the MongoDB .NET/C# Driver. Monitoring is the process of gathering information about your application's performance and resource usage as it runs. This can help you make informed decisions when designing and debugging your application.
The driver provides information about your application by emitting events. You can subscribe to these driver events to monitor your application.
Note
Event Logging
This page explains how to monitor your application in code. To learn how to record this information to an external log, see Logging.
Event Types
The type of event that the driver emits depends on the operation being performed. The following table describes the types of events that the driver emits:
Event Type | Description |
---|---|
Command Events | Events related to MongoDB database commands, such as As a security measure, the driver redacts the contents of some command events. This protects the sensitive information contained in these command events. |
Server Discovery and Monitoring (SDAM) Events | Events related to changes in the state of the MongoDB deployment. |
Connection Pool Events | Events related to the connection pool held by the driver. |
For a complete list of events the driver emits, see the API documentation for the MongoDB.Driver.Core.Events namespace.
Subscribing to Events
To monitor an event, you must subscribe a listener method on your MongoClient
instance.
The following steps describe how to subscribe to events:
Create a
MongoClientSettings
object.Set the
ClusterConfigurator
property on theMongoClientSettings
object to a lambda function that accepts aClusterBuilder
object.In the lambda function, call the
Subscribe<TEvent>()
method on theClusterBuilder
object for each event you want to subscribe to. ReplaceTEvent
with the event type. Pass the event handler method as an argument to theSubscribe<TEvent>()
method.
The following code example shows how to subscribe to the ClusterOpenedEvent
,
ServerHeartbeatSucceededEvent
, and ConnectionPoolReadyEvent
. This example
assumes that the ClusterEventHandler
, HeartbeatEventHandler
,
and ConnectionPoolEventHandler
methods are defined elsewhere in your code.
var clientSettings = MongoClientSettings.FromConnectionString(MongoConnectionString); clientSettings.ClusterConfigurator = clusterBuilder => { clusterBuilder .Subscribe<ClusterOpenedEvent>(ClusterEventHandler) .Subscribe<ServerHeartbeatSucceededEvent>(HeartbeatEventHandler) .Subscribe<ConnectionPoolReadyEvent>(ConnectionPoolEventHandler); };
Tip
You can subscribe to any number of events, and these events can be of different types.
API Documentation
To learn more about the methods and classes used to monitor events in the driver, see the following API documentation: