MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come tenere traccia delle richieste MongoDB da un'applicazione console

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.