Non ho familiarità con MongoDB ma per quanto ne so non esiste un supporto predefinito per esso quando si tratta di Application Insights. Ma ciò non significa che non puoi farlo, comporterà solo un po' di codice in più.
Ancora una volta, non ho familiarità con MongoDB ma secondo http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ c'è un supporto integrato per la registrazione delle query generate. Ora, dobbiamo solo collegarlo ad Application Insights.
Dal momento che sai già come utilizzare il TelemetryClient
possiamo usare i metodi di tracciamento personalizzati forniti da quella classe. Vedere https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics
per i metodi di tracciamento personalizzati disponibili.
Tutto quello che devi fare è inserire del codice come questo:
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 classe telemetryClient
è thread-safe, quindi puoi riutilizzarlo.
Ora, secondo il post del blog di riferimento dovresti essere in grado di fare qualcosa del genere:
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
});
}
});
Ancora una volta, non ho familiarità con MongoDB ma spero che questo sia un punto di partenza per la tua immaginazione su come adattarlo alle tue esigenze usando la tua conoscenza di MongoDB.
MODIFICA:
Se è presente anche un CommandCompletedEvent
o un evento simile rispetto a CommandStartedEvent
evento dovresti probabilmente tenere traccia della dipendenza lì perché dovresti quindi essere in grado di calcolare (o leggere semplicemente) il tempo trascorso e forse ottenere il valore effettivo per l'indicatore di successo.