Menu Docs
Página inicial do Docs
/ /

Monitorar eventos de aplicativos

Neste guia, você pode aprender como configurar e configurar o monitoramento no Driver MongoDB C++ .

O monitoramento envolve a coleta de informações sobre as atividades de um programa em execução, que você pode usar com uma biblioteca de gerenciamento de desempenho de aplicação .

Monitorar o driver C++ permite que você entenda o uso e o desempenho dos recursos do driver. Estas informações podem ajudá-lo a tomar decisões informadas ao projetar e depurar seu aplicação.

Este guia mostra como executar as seguintes tarefas:

  • Monitorar eventos de comando

  • Monitorar eventos de descoberta e monitoramento do servidor (SDAM)

Dica

Este guia explica como usar informações sobre a atividade do driver no código. Para saber como registrar eventos no driver, consulte o guiaRegistrar eventos de driver.

O driver C++ cria eventos de comando quando seu cliente executa um comando de banco de dados. Por exemplo, os comandos find, insert, delete e count produzem eventos de comando. Você pode iniciar esses comandos executando as operações padrão de criação, leitura, atualização ou exclusão do driver ou usando diretamente os comandos do banco de dados .

Dica

Para saber mais sobre comandos do banco de dados , consulte o guia Executar um comando.

Você pode acessar detalhes sobre eventos de comando assinando-os em seu aplicação. Para assinar um evento de comando, crie um objeto mongocxx::options::apm para armazenar sua configuração do Application Performance Monitoring (APM). Em seguida, passe as opções para o seu objeto mongocxx::client. Chame os seguintes métodos no objeto mongocxx::options::apm para definir o comportamento de monitoramento de comando:

Método
Descrição

on_command_started()

Especifica como o cliente responde quando um comando começa, o que gera um mongocxx::events::command_started_event

on_command_failed()

Especifica como o cliente responde quando um comando não é bem-sucedido, o que gera um mongocxx::events::command_failed_event

on_command_succeeded()

Especifica como o cliente responde quando um comando é bem-sucedido, o que gera um mongocxx::events::command_succeeded_event

O código a seguir monitora eventos iniciados por comandos executando as seguintes ações:

  • Chama o método on_command_started() em um objeto mongocxx::options::apm

  • Passa uma chamada de resposta para on_command_started() que imprime o nome de cada comando e o ID da solicitação

  • Configura seu cliente com estas opções

1#include <iostream>
2#include <mongocxx/client.hpp>
3#include <mongocxx/instance.hpp>
4#include <mongocxx/uri.hpp>
5#include <mongocxx/options/apm.hpp>
6
7int main() {
8 mongocxx::instance instance{};
9
10 int command_started_events = 0;
11
12 mongocxx::options::apm apm_opts;
13 apm_opts.on_command_started([&command_started_events](const mongocxx::events::command_started_event& event) {
14 command_started_events++;
15 std::cout << "Command started: " << event.command_name()
16 << " (request_id: " << event.request_id() << ")" << std::endl;
17 });
18
19 mongocxx::uri uri("<connection string URI>");
20 mongocxx::options::client client_opts;
21 client_opts.apm_opts(apm_opts);
22
23 mongocxx::client client{uri, client_opts};
24
25 // Perform database operations
26
27 std::cout << "Observed " << command_started_events << " command started events" << std::endl;
28
29 return 0;
30}

Quando você executa um comando find, o código imprime mensagens que se assemelham à seguinte saída de exemplo:

Command started: find (request_id: 3)

O driver C++ cria eventos de topologia , também conhecidos como eventos SDAM, quando o estado da instância ou cluster à qual você conectou é alterado. Por exemplo, o driver cria um evento quando você estabelece uma nova conexão ou quando o cluster elege um novo nó primário.

Para saber mais sobre eventos de topologia, consulte o guia de replicação no manual do servidor.

Você pode acessar detalhes sobre eventos SDAM assinando-os em seu aplicação. Para assinar um evento SDAM, crie um objeto mongocxx::options::apm para armazenar sua configuração APM. Em seguida, passe as opções para o seu objeto mongocxx::client. Chame os seguintes métodos no objeto mongocxx::options::apm para definir o comportamento de monitoramento SDAM:

Método
Descrição

on_server_changed()

Especifica como o cliente responde quando a descrição do servidor é alterada, o que gera um mongocxx::events::server_changed_event

on_server_opening()

Especifica como o cliente responde quando um novo servidor é adicionado à topologia, o que gera um mongocxx::events::server_opening_event

on_server_closed()

Especifica como o cliente responde quando um servidor é removido da topologia, o que gera um mongocxx::events::server_closed_event

on_topology_changed()

Especifica como o cliente responde quando a descrição da topologia muda, o que gera um mongocxx::events::topology_changed_event

on_topology_opening()

Especifica como o cliente responde quando o driver se conecta pela primeira vez ao cluster, o que gera um mongocxx::events::topology_opening_event

on_topology_closed()

Especifica como o cliente responde quando o driver se desconecta do cluster, o que gera um mongocxx::events::topology_closed_event

on_heartbeat_started()

Especifica como o cliente responde quando um heartbeat é enviado ao servidor, o que gera um mongocxx::events::heartbeat_started_event

on_heartbeat_succeeded()

Especifica como o cliente responde quando um heartbeat é bem-sucedido, o que gera um mongocxx::events::heartbeat_succeeded_event

on_heartbeat_failed()

Especifica como o cliente responde quando um heartbeat falha, o que gera um mongocxx::events::heartbeat_failed_event

O código a seguir monitora eventos de abertura de servidor executando as seguintes ações:

  • Chama o método on_server_opening() em um objeto mongocxx::options::apm

  • Passa um chamada de resposta para on_server_opening() que imprime o host e a porta de cada servidor

  • Configura seu cliente com estas opções

1#include <iostream>
2#include <mongocxx/client.hpp>
3#include <mongocxx/instance.hpp>
4#include <mongocxx/uri.hpp>
5#include <mongocxx/options/apm.hpp>
6
7int main() {
8 mongocxx::instance instance{};
9
10 int server_opening_events = 0;
11
12 mongocxx::options::apm apm_opts;
13 apm_opts.on_server_opening([&server_opening_events](const mongocxx::events::server_opening_event& event) {
14 server_opening_events++;
15 std::cout << "Server opening: " << event.host() << ":" << event.port() << std::endl;
16 });
17
18 mongocxx::uri uri("<connection string URI>");
19 mongocxx::options::client client_opts;
20 client_opts.apm_opts(apm_opts);
21
22 mongocxx::client client{uri, client_opts};
23
24 // Perform database operations
25
26 std::cout << "Observed " << server_opening_events << " server opening events" << std::endl;
27
28 return 0;
29}

Quando você executa uma operação de banco de dados , o driver estabelece uma nova conexão com o servidor , e seu assinante registra o evento de abertura do servidor . O código gera mensagens que se assemelham ao seguinte:

Server opening: <host>:<port number>

Você pode se inscrever no monitoramento de eventos criando uma função de chamada de resposta que aceite um objeto de classe de evento como parâmetro. A tabela a seguir fornece o nome de cada classe de evento , links para a documentação da API do tipo e descreve quando o evento é publicado:

Classe do manipulador de eventos
Descrição

Criado quando um comando é iniciado.

Criado quando um comando é bem-sucedido.

Criado quando um comando falha.

Criado quando a descrição do servidor muda, como quando o tipo do servidor muda de secundário para primário.

Criado quando um novo servidor é adicionado à topologia.

Criado quando um servidor existente é removido da topologia.

Criado quando a descrição da topologia muda, como quando há uma eleição de uma nova primária.

Criado quando o driver se conecta pela primeira vez ao cluster.

Criado quando o driver se desconecta do cluster.

Criado quando o monitor do servidor envia um comando hello para o servidor. Essa ação é chamada de pulsação.

Criado quando a pulsação é bem-sucedida.

Criado quando o heartbeat falha.

Você pode encontrar informações sobre cada tipo de assinante de monitoramento e método de evento na seção Monitoramento de desempenho de aplicativos da documentação da API.

Para saber mais sobre as aulas e os métodos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Exploração madeireira

Nesta página