sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo realizar un seguimiento de las solicitudes de MongoDB desde una aplicación de consola

No estoy familiarizado con MongoDB pero, por lo que sé, no hay soporte predeterminado para él cuando se trata de Application Insights. Pero eso no significa que no puedas hacer esto, solo implicará un poco más de código.

Nuevamente, no estoy familiarizado con MongoDB, pero según http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ hay soporte integrado para registrar las consultas generadas. Ahora, solo necesitamos conectar esto a Application Insights.

Como ya sabe cómo usar el TelemetryClient podemos usar los métodos de seguimiento personalizados proporcionados por esa clase. Consulte https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics para conocer los métodos de seguimiento personalizados disponibles.

Todo lo que necesita hacer es insertar un código como este:

telemetryClient.TrackDependency(
    "MongoDB",               // The name of the dependency
    query,                   // Text of the query
    DateTime.Now,            // Time that query is executed
    TimeSpan.FromSeconds(0), // Time taken to execute query
    true);                   // Indicates success

La clase telemetryClient es seguro para subprocesos, por lo que puede reutilizarlo.

Ahora, de acuerdo con la publicación de blog a la que se hace referencia, debería poder hacer algo como esto:

var client = new MongoClient(new MongoClientSettings()
{
    Server = new MongoServerAddress("localhost"),
    ClusterConfigurator = cb =>
    {
        cb.Subscribe<CommandStartedEvent>(e =>
        {
            telemetryClient.TrackDependency(
                "MongoDB",               // The name of the dependency
                e.Command.ToJson()       // Text of the query
                DateTime.Now,            // Time that query is executed
                TimeSpan.FromSeconds(0), // Time taken to execute query
                true);                   // Indicates success
        });
    }
});

Nuevamente, no estoy familiarizado con MongoDB, pero espero que este sea un punto de partida para su imaginación sobre cómo adaptarlo a sus necesidades utilizando su conocimiento de MongoDB.

EDITAR:

Si también hay un CommandCompletedEvent o evento similar en oposición al CommandStartedEvent Evento, probablemente debería rastrear la dependencia allí porque luego debería poder calcular (o leer simpel) el tiempo empleado y tal vez obtener el valor real para el indicador de éxito.