MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como rastrear solicitações do MongoDB de um aplicativo de console


Não estou familiarizado com o MongoDB, mas até onde sei, não há suporte padrão para ele quando se trata de Application Insights. Mas isso não significa que você não possa fazer isso, apenas envolverá mais código.

Novamente, não estou familiarizado com o MongoDB, mas de acordo com http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ há suporte interno para registrar as consultas geradas. Agora, só precisamos conectar isso ao Application Insights.

Como você já sabe como usar o TelemetryClient podemos usar os métodos de rastreamento personalizados fornecidos por essa classe. Consulte https:// docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics para os métodos de rastreamento personalizados disponíveis.

Tudo que você precisa fazer é inserir algum código como este:
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

A classe telemetryClient é thread-safe para que você possa reutilizá-lo.

Agora, de acordo com a postagem do blog referenciada, você deve ser capaz de fazer algo assim:
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
        });
    }
});

Novamente, não estou familiarizado com o MongoDB, mas espero que este seja um ponto de partida para sua imaginação sobre como adaptá-lo às suas necessidades usando seu conhecimento do MongoDB.

EDITAR:

Se também houver um CommandCompletedEvent ou evento semelhante em oposição ao CommandStartedEvent evento, você provavelmente deve rastrear a dependência lá porque você deve poder calcular (ou simplesmente ler) o tempo gasto e talvez obter o valor real do indicador de sucesso.