Docs Menu
Docs Home
/ /

Monitorear eventos de aplicaciones

En esta guía, puede aprender cómo configurar y configurar la monitorización en la biblioteca PHP de MongoDB.

La monitorización es el proceso de recopilar información sobre el comportamiento de su aplicación durante su ejecución. Esta información puede ayudarle a tomar decisiones informadas al diseñar y depurar su aplicación. También puede usar la información de los eventos de monitorización para monitorizar el rendimiento y el uso de recursos de su aplicación.

La biblioteca PHP de MongoDB emite eventos de comando y eventos de Descubrimiento y Monitoreo de Servidor (SDAM) que proporcionan información de la aplicación. Puede escuchar estos eventos para monitorear su aplicación.

Nota

Esta página explica cómo supervisar su aplicación en el código. Para saber cómo registrar esta información en un registro externo, consulte Guía deeventos del controlador de registro.

El tipo de evento que el controlador emite depende de la operación que se realice. En la siguiente tabla se describen los tipos de eventos que emite el controlador:

Tipo de evento
Descripción

Eventos de comando

Eventos relacionados con los comandos de la base de datos MongoDB, como find,, insert delete county. Para aprender a usar la biblioteca PHP para ejecutar un comando de base de datos, consulte Ejecutar un comando de base de datos. Para obtener más información sobre los comandos de base de datos de MongoDB, consulte Comandos de base de datos en el manual del servidor MongoDB.

Eventos de Descubrimiento y Supervisión de Servidores (SDAM)

Eventos relacionados con cambios en el estado de la implementación de MongoDB.

Para monitorear eventos, debe realizar las siguientes acciones:

  1. Crear un suscriptor de eventos: crea una clase que implemente el comando o el suscriptor de eventos SDAM

  2. Registrar un suscriptor de eventos: registre un suscriptor de eventos de monitoreo con su MongoDB\Client

Tip

Para ver una lista de eventos de monitoreo a los que puede suscribirse, consulte Clases de monitoreo y funciones de suscriptor sección del manual de PHP.

Para suscribirse a un evento de monitorización, cree una clase que implemente la interfaz de suscriptor de eventos. Puede implementar las siguientes interfaces:

  • MongoDB\Driver\Monitoring\CommandSubscriber, que se suscribe a eventos de comando

  • MongoDB\Driver\Monitoring\SDAMSubscriber, que se suscribe a eventos SDAM

Para suscribirse a un evento SDAM, cree una clase que implemente la interfaz MongoDB\Driver\Monitoring\CommandSubscriber. En la clase, defina cada uno de los métodos CommandSubscriber. La siguiente tabla describe estos métodos y los eventos de comando para los que reciben notificaciones:

Método
Evento de comando
Descripción

Se llama cuando un comando no tiene éxito

Se llama cuando se envía un comando al servidor.

Se llama cuando un comando tiene éxito

El siguiente código crea la clase MyCommandSubscriber, que implementa la interfaz CommandSubscriber. La clase define cada método CommandSubscriber e incluye lógica personalizada para el método commandStarted(), que imprime detalles sobre cada nuevo comando que recibe el servidor:

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 suscribirse a un evento SDAM, cree una clase que implemente la interfaz MongoDB\Driver\Monitoring\SDAMSubscriber. En su clase, defina cada método SDAMSubscriber. La siguiente tabla describe estos métodos y los eventos de comando para los que reciben notificaciones:

Método
Evento SDAM
Descripción

Se llama cuando cambia la descripción de un servidor

Se llama cuando se elimina un servidor de la topología

Se llama cuando un latido del servidor no tiene éxito

Se llama cuando el servidor recibe un latido

Se llama cuando un latido del servidor tiene éxito

Se llama cuando se agrega un nuevo servidor a la topología

Se llama cuando cambia la descripción de la topología

Se llama cuando la topología está cerrada

Se llama cuando se abre la topología

El siguiente código crea la clase MySDAMSubscriber, que implementa la interfaz SDAMSubscriber. La clase define cada método SDAMSubscriber e incluye lógica personalizada para el método serverOpening(), que imprime detalles sobre los servidores añadidos a la topología:

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
{
}
}

Después de crear una clase que implemente la interfaz de suscriptor, debe registrarla con un MongoDB\Client para recibir notificaciones de eventos de su cliente. Para registrar un suscriptor, llame al método MongoDB\Client::addSubscriber() y pase una instancia de su clase de suscriptor como parámetro.

El siguiente código registra el comando y los suscriptores de eventos SDAM creados en la sección Crear un suscriptor de eventos de esta página con MongoDB\Client un:

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

Cuando inicia la aplicación y ejecuta un comando de inserción, sus suscriptores registran los eventos y los mensajes de salida que se parecen a los siguientes:

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 el registro de un suscriptor de su cliente, utilice el método MongoDB\Client::removeSubscriber().

El siguiente código muestra cómo eliminar el suscriptor creado en la sección Ejemplo de suscriptor de evento de comando de esta página:

$client->removeSubscriber($commandSub);

Para obtener más información sobre cualquiera de las clases o métodos tratados en esta guía, consulta la siguiente documentación de la API:

Para obtener más información sobre las clases y métodos de suscriptores, consulte las siguientes páginas en el manual de PHP:

Volver

Búsqueda vectorial de MongoDB

En esta página