MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment suivre les requêtes MongoDB à partir d'une application console

Je ne connais pas MongoDB, mais pour autant que je sache, il n'y a pas de support par défaut pour Application Insights. Mais cela ne signifie pas que vous ne pouvez pas le faire, cela impliquera simplement un peu plus de code.

Encore une fois, je ne connais pas MongoDB mais selon http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ il existe un support intégré pour la journalisation des requêtes générées. Maintenant, nous n'avons plus qu'à connecter cela à Application Insights.

Puisque vous savez déjà utiliser le TelemetryClient nous pouvons utiliser les méthodes de suivi personnalisées fournies par cette classe. Voir https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics pour les méthodes de suivi personnalisées disponibles.

Tout ce que vous avez à faire est d'insérer un code comme celui-ci :

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 est thread-safe afin que vous puissiez le réutiliser.

Maintenant, selon l'article de blog référencé, vous devriez pouvoir faire quelque chose comme ceci :

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

Encore une fois, je ne connais pas MongoDB mais j'espère que c'est un point de départ pour votre imagination sur la façon de l'adapter à vos besoins en utilisant votre connaissance de MongoDB.

MODIFIER :

S'il y a aussi un CommandCompletedEvent ou un événement similaire par opposition à CommandStartedEvent événement, vous devriez probablement y suivre la dépendance, car vous devriez alors pouvoir calculer (ou simplement lire) le temps passé et peut-être obtenir la valeur réelle de l'indicateur de succès.