Ik ben niet bekend met MongoDB, maar voor zover ik weet is er geen standaardondersteuning voor als het gaat om Application Insights. Maar dat betekent niet dat je dit niet kunt doen, er komt alleen wat meer code bij kijken.
Nogmaals, ik ben niet bekend met MongoDB, maar volgens http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ er is ingebouwde ondersteuning voor het loggen van de gegenereerde query's. Nu hoeven we dit alleen nog maar aan Application Insights aan te sluiten.
Omdat u al weet hoe u de TelemetryClient
. moet gebruiken we kunnen de aangepaste trackingmethoden gebruiken die door die klasse worden geboden. Zie https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics
voor de beschikbare aangepaste trackingmethoden.
Het enige wat u hoeft te doen is een code zoals deze in te voeren:
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
De klasse telemetryClient
is thread-safe, dus je kunt het opnieuw gebruiken.
Nu, volgens de blogpost waarnaar wordt verwezen, zou je zoiets als dit moeten kunnen doen:
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
});
}
});
Nogmaals, ik ben niet bekend met MongoDB, maar ik hoop dat dit een startpunt is voor uw verbeelding over hoe u het aan uw behoeften kunt aanpassen met uw kennis van MongoDB.
BEWERKEN:
Als er ook een CommandCompletedEvent
. is of soortgelijke gebeurtenis in tegenstelling tot de CommandStartedEvent
event zou je waarschijnlijk de afhankelijkheid daar moeten volgen omdat je dan in staat zou moeten zijn om de bestede tijd te berekenen (of simpel te lezen) en misschien de werkelijke waarde voor de succesindicator te krijgen.