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.