Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/

Monitorar eventos de aplicativos

Neste guia, você pode aprender como configurar e configurar o monitoramento na Biblioteca PHP do MongoDB .

Monitoramento é o processo de coleta de informações sobre o comportamento do seu aplicativo durante a execução. Estas informações podem ajudá-lo a tomar decisões informadas ao projetar e depurar seu aplicação. Você também pode usar informações de eventos de monitoramento para acompanhar o desempenho do seu aplicativo e o uso de recursos.

A Biblioteca MongoDB emite eventos de comando e eventos de Descoberta e Monitoramento do Servidor (SDAM) que fornecem informações do aplicação . Você pode ouvir esses eventos para monitorar seu aplicação.

Observação

Esta página explica como monitorar seu aplicação no código. Para saber como registrar essas informações em um registro externo, consulte o guia Eventos do driver de registro.

O tipo de evento que o driver emite depende da operação que está sendo executada. A tabela a seguir descreve os tipos de eventos que o driver emite:

eventType
Descrição

Eventos de comando

Eventos relacionados aos comandos do banco de dados MongoDB ,find insertcomo,, delete counte. Para saber como usar a biblioteca PHP para executar um comando de banco de dados , consulte Executar um comando de banco de dados . Para obter mais informações sobre os comandos do banco de dados MongoDB , consulte Comandos do banco de dados no manual do MongoDB Server .

Eventos de descoberta e monitoramento de servidor (SDAM)

Eventos relacionados a alterações no estado da implantação do MongoDB .

Para monitorar eventos, você deve executar as seguintes ações:

  1. Criar um assinante de evento : Crie uma classe que implemente o comando ou assinante de evento SDAM

  2. Registre um assinante de eventos: Registre um assinante de evento de monitoramento com seu MongoDB\Client

Dica

Para visualizar uma lista de eventos de monitoramento que você pode assinar, consulte a seção Monitoramento de classes e funções de assinante do manual do PHP.

Para assinar um evento de monitoramento, crie uma classe que implemente a interface do assinante de evento . É possível implementar as seguintes interfaces:

  • MongoDB\Driver\Monitoring\CommandSubscriber, que assina eventos de comando

  • MongoDB\Driver\Monitoring\SDAMSubscriber, que assina eventos SDAM

Para assinar um evento SDAM, crie uma classe que implemente a interface MongoDB\Driver\Monitoring\CommandSubscriber. Na sua classe, defina cada um dos métodos CommandSubscriber. A tabela a seguir descreve esses métodos e os eventos de comando para os quais eles recebem notificações:

Método
Evento de comando
Descrição

Chamado quando um comando não é bem-sucedido

Chamado quando um comando é enviado ao servidor

Chamado quando um comando é bem-sucedido

O seguinte código cria a classe MyCommandSubscriber , que implementa a interface CommandSubscriber. A classe define cada método CommandSubscriber e inclui lógica personalizada para o método commandStarted(), que imprime detalhes sobre cada novo comando que o servidor recebe:

class MyCommandSubscriber implements MongoDB\Driver\Monitoring\CommandSubscriber
{
/** @param resource $stream */
public function __construct(private $stream)
{
}
public function commandStarted(MongoDB\Driver\Monitoring\CommandStartedEvent $event): void
{
fwrite($this->stream, sprintf(
'Started command #%d "%s": %s%s',
$event->getRequestId(),
$event->getCommandName(),
MongoDB\BSON\Document::fromPHP($event->getCommand())->toCanonicalExtendedJSON(),
PHP_EOL,
));
}
public function commandSucceeded(MongoDB\Driver\Monitoring\CommandSucceededEvent $event): void
{
}
public function commandFailed(MongoDB\Driver\Monitoring\CommandFailedEvent $event): void
{
}
}

Para assinar um evento SDAM, crie uma classe que implemente a interface MongoDB\Driver\Monitoring\SDAMSubscriber. Na sua classe, defina cada método SDAMSubscriber. A tabela a seguir descreve esses métodos e os eventos de comando para os quais eles recebem notificações:

Método
Evento SDAM
Descrição

Chamado quando a descrição de um servidor muda

Chamado quando um servidor é removido da topologia

Chamado quando uma pulsação do servidor não tem êxito

Chamado quando o servidor recebe uma pulsação

Chamado quando uma pulsação do servidor é bem-sucedida

Chamado quando um novo servidor é adicionado à topologia

Chamado quando a descrição da topologia muda

Chamado quando a topologia é fechada

Chamado quando a topologia é aberta

O seguinte código cria a classe MySDAMSubscriber , que implementa a interface SDAMSubscriber. A classe define cada método SDAMSubscriber e inclui lógica personalizada para o método serverOpening(), que imprime detalhes sobre os servidores adicionados à topologia:

class MySDAMSubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
{
/** @param resource $stream */
public function __construct(private $stream)
{
}
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event): void
{
fprintf(
$this->stream,
'Server opening on %s:%s\n',
$event->getHost(),
$event->getPort(),
PHP_EOL,
);
}
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event): void
{
}
public function serverChanged(MongoDB\Driver\Monitoring\ServerChangedEvent $event): void
{
}
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event): void
{
}
public function serverHeartbeatStarted(MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent $event): void
{
}
public function serverHeartbeatSucceeded(MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent $event): void
{
}
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event): void
{
}
public function topologyClosed(MongoDB\Driver\Monitoring\TopologyClosedEvent $event): void
{
}
public function topologyOpening(MongoDB\Driver\Monitoring\TopologyOpeningEvent $event): void
{
}
}

Depois de criar uma classe que implemente sua interface de assinante, você deve registrar essa classe com um MongoDB\Client para receber notificações de evento para seu cliente. Para registrar um assinante, chame o método MongoDB\Client::addSubscriber() e passe uma instância da sua classe de assinante como parâmetro.

O código a seguir registra o comando e os assinantes de evento SDAM criados na seção Criar um assinante de eventos desta página com MongoDB\Client um:

$commandSub = new MyCommandSubscriber(STDERR);
$sdamSub = new MySDAMSubscriber(STDERR);
$client->addSubscriber($commandSub);
$client->addSubscriber($sdamSub);

Quando você inicia o aplicação e executa um comando de inserção, seus assinantes registram os eventos e mensagens de saída semelhantes às seguintes:

Server opening on ac-rmuag0v-shard-00-00.gh0qg50.mongodb.net:27017
Server opening on ac-rmuag0v-shard-00-01.gh0qg50.mongodb.net:27017
Server opening on ac-rmuag0v-shard-00-02.gh0qg50.mongodb.net:27017
Started command #3 "insert": { "insert" : ... }

Para cancelar o registro de um assinante do seu cliente, use o método MongoDB\Client::removeSubscriber().

O código a seguir mostra como remover o assinante criado na seção Exemplo de assinante de eventos de comando desta página:

$client->removeSubscriber($commandSub);

Para saber mais sobre qualquer uma das classes ou métodos discutidos neste guia, consulte a seguinte documentação da API:

Para saber mais sobre classes e métodos de assinante, consulte as seguintes páginas no manual PHP:

Voltar

Registro e monitoramento

Nesta página