Nejsem obeznámen s MongoDB, ale pokud mohu říci, neexistuje pro něj žádná výchozí podpora, pokud jde o Application Insights. Ale to neznamená, že to nemůžete udělat, jen to bude vyžadovat nějaký další kód.
Opět nejsem obeznámen s MongoDB, ale podle http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ existuje vestavěná podpora pro protokolování generovaných dotazů. Nyní to musíme pouze propojit s Application Insights.
Protože již víte, jak používat TelemetryClient
můžeme použít vlastní metody sledování poskytované touto třídou. Viz https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics
pro dostupné vlastní metody sledování.
Vše, co musíte udělat, je vložit nějaký kód, jako je tento:
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
Třída telemetryClient
je bezpečný pro vlákna, takže jej můžete znovu použít.
Nyní byste podle odkazovaného blogpostu měli být schopni udělat něco takového:
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
});
}
});
Opět nejsem obeznámen s MongoDB, ale doufám, že toto je výchozí bod pro vaši představivost, jak jej přizpůsobit vašim potřebám pomocí vašich znalostí MongoDB.
EDIT:
Pokud existuje také CommandCompletedEvent
nebo podobná událost jako protiklad k CommandStartedEvent
pravděpodobně byste tam měli sledovat závislost, protože byste pak měli být schopni vypočítat (nebo jednoduše přečíst) strávený čas a možná získat skutečnou hodnotu pro indikátor úspěchu.