sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man spårar MongoDB-förfrågningar från en konsolapplikation

Jag är inte bekant med MongoDB men så vitt jag kan säga finns det inget standardstöd för det när det kommer till Application Insights. Men det betyder inte att du inte kan göra detta, det kommer bara att involvera lite mer kod.

Återigen, jag är inte bekant med MongoDB men enligt http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ det finns inbyggt stöd för att logga de genererade frågorna. Nu behöver vi bara koppla detta till Application Insights.

Eftersom du redan vet hur man använder TelemetryClient vi kan använda de anpassade spårningsmetoder som tillhandahålls av den klassen. Se https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics för tillgängliga anpassade spårningsmetoder.

Allt du behöver göra är att infoga en kod så här:

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

Klassen telemetryClient är trådsäker så att du kan återanvända den.

Nu, enligt det refererade blogginlägget, borde du kunna göra något så här:

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
        });
    }
});

Återigen, jag är inte bekant med MongoDB men jag hoppas att detta är en utgångspunkt för din fantasi om hur man anpassar den till dina behov med hjälp av din kunskap om MongoDB.

EDIT:

Om det också finns en CommandCompletedEvent eller liknande händelse i motsats till CommandStartedEvent händelse bör du förmodligen spåra beroendet där eftersom du då borde kunna beräkna (eller enkelt läsa) tiden som spenderas och kanske få det faktiska värdet för framgångsindikatorn.




  1. MongoDb $addFields och $match

  2. MongoDB-hanteringsfel vid insättning i Java

  3. sortera array i fråga och projicera alla fält

  4. Ett mer elegant sätt att hantera filtreringsvärden i Angular App