MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verfolgen Sie MongoDB-Anforderungen von einer Konsolenanwendung aus

Ich bin mit MongoDB nicht vertraut, aber soweit ich das beurteilen kann, gibt es keine Standardunterstützung dafür, wenn es um Application Insights geht. Aber das bedeutet nicht, dass Sie dies nicht tun können, es erfordert nur etwas mehr Code.

Auch hier bin ich mit MongoDB nicht vertraut, aber laut http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ Es gibt eine integrierte Unterstützung für die Protokollierung der generierten Abfragen. Jetzt müssen wir dies nur noch mit Application Insights verbinden.

Da Sie bereits wissen, wie man den TelemetryClient verwendet Wir können die von dieser Klasse bereitgestellten benutzerdefinierten Tracking-Methoden verwenden. Siehe https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics für die verfügbaren benutzerdefinierten Tracking-Methoden.

Alles, was Sie tun müssen, ist Code wie diesen einzufügen:

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

Die Klasse telemetryClient ist Thread-sicher, sodass Sie es wiederverwenden können.

Nun, laut dem referenzierten Blogpost sollten Sie in der Lage sein, so etwas zu tun:

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

Auch hier bin ich mit MongoDB nicht vertraut, aber ich hoffe, dies ist ein Ausgangspunkt für Ihre Vorstellungskraft, wie Sie es mit Ihrem Wissen über MongoDB an Ihre Bedürfnisse anpassen können.

BEARBEITEN:

Wenn es auch ein CommandCompletedEvent gibt oder ähnliches Ereignis im Gegensatz zum CommandStartedEvent Eventuell sollten Sie dort die Abhängigkeit verfolgen, weil Sie dann die aufgewendete Zeit berechnen (oder einfach ablesen) können und vielleicht den tatsächlichen Wert für die Erfolgsanzeige erhalten.