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

Monitoramento de clusters

Nesta página

  • Visão geral
  • Inscrever-se para receber eventos
  • Descrições de evento
  • Remover um assinante
  • Documentação da API

Este guia mostra como usar a Biblioteca PHP do MongoDB para monitorar eventos de descoberta e monitoramento do servidor (SDAM) em uma instância do MongoDB , conjunto de réplicas ou cluster fragmentado. Esses eventos ocorrem quando há alguma alteração no estado da instância ou cluster MongoDB ao qual você está conectado.

Você pode usar informações sobre eventos SDAM em seu aplicação para entender as alterações do cluster, avaliar a integridade do cluster ou executar o planejamento da capacidade.

Você pode acessar detalhes sobre eventos SDAM assinando-os em seu aplicação. Para assinar um evento, crie uma classe que implemente a interface MongoDB\Driver\Monitoring\SDAMSubscriber e, em seguida, use o método MongoDB\Client::addSubscriber() para registrar o assinante do evento com sua instância MongoDB\Client .

O seguinte código cria a classe MySubscriber , que implementa a interface SDAMSubscriber . A classe é definida com um método para gerar uma mensagem quando um ServerOpeningEvent é gerado pelo servidor:

class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
{
private $stream;
public function __construct($stream)
{
$this->stream = $stream;
}
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event): void {
fprintf(
$this->stream,
'Server opening on %s:%s\n',
$event->getHost(),
$event->getPort(),
);
}
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 {}
}

Observação

Conforme mostrado no código anterior, você deve implementar todos os métodos da interface SDAMSubscriber , mesmo para eventos para os quais não está assinando. O exemplo define os métodos extras como vazios para que o aplicação não emita nenhuma mensagem para esses eventos.

Em seguida, use o método addSubscriber() para registrar MySubscriber com o cliente, conforme mostrado no código a seguir:

$subscriber = new MySubscriber(STDERR);
$client->addSubscriber($subscriber);

Quando você executa o aplicação, seu assinante registra o evento SDAM e gera mensagens como as 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

Você pode assinar eventos SDAM implementando o método correspondente a partir da interface SDAMSubscriber . A tabela a seguir fornece o nome de cada evento SDAM, vinculado à documentação da API da classe, e uma descrição de quando o evento foi publicado:

eventType
Descrição
ServerChangedEvent
Criado quando a descrição do servidor muda, como o tipo do servidor mudando 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 uma lista das classes de assinantes de monitoramento e métodos de evento em Classes de monitoramento e funções de assinantes seção do manual do PHP.

Mais tarde em seu aplicação, talvez você não queira se inscrever em eventos SDAM . Para cancelar o registro de um assinante do seu cliente, use o método MongoDB\Client::removeSubscriber() . Se você tentar remover um assinante inexistente, o método não executará nenhuma ação.

O código a seguir mostra como remover o assinante que você registrou na seção Inscrever-se em eventos :

$client->removeSubscriber($subscriber);

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

  • MongoDB\Client::addSubscriber()

  • MongoDB\Client::removeSubscriber()

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

Voltar

Monitore seu aplicativo