Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Monitoring

En esta guía, aprenderá a configurar la monitorización en PyMongo mediante su interfaz basada en devoluciones de llamada. La monitorización consiste en recopilar información sobre el comportamiento de su aplicación durante su ejecución. Esta información le ayudará 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.

El controlador proporciona información sobre su aplicación emitiendo eventos. Puedes escuchar los eventos del driver para supervisar tu aplicación.

Nota

Registro de eventos

Esta página explica cómo supervisar la aplicación en el código. Para aprender cómo registrar esta información en un registro externo, consulta la Logging guía.

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 comandos de la base de datos MongoDB, como find; insert, delete y count. Para aprender cómo utilizar PyMongo para ejecutar un comando de base de datos, consulta Ejecutar un comando de base de datos. Para obtener más información sobre los comandos de bases de datos de MongoDB, consulta Comandos de base de datos en el manual de MongoDB Server.

Como medida de seguridad, el controlador oculta el contenido de algunos eventos de comando. Esto protege la información confidencial contenida en estos eventos de comando.

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

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

Eventos del pool de conexiones

Eventos relacionados con el pool de conexiones mantenido por el controlador.

Para obtener una lista completa de los eventos que emite el controlador, consulte la documentación de la API pymongo.monitoring.

Para supervisar un evento, debe pasar un listener de eventos al MongoClient de su aplicación. Los pasos siguientes describen cómo supervisar su aplicación utilizando un listener de eventos:

  1. Cree una clase que herede de una de las clases base de escucha de eventos proporcionadas por PyMongo. La clase base que elijas dependerá del tipo de evento que desees supervisar. Por ejemplo, para supervisar eventos de comando, cree una clase que herede de CommandListener.

  2. Implementa los métodos de la clase base que corresponden a los eventos que deseas monitorear.

  3. Pase una instancia de la clase de listener al constructor de MongoClient.

El siguiente código implementa un CommandListener para escuchar los eventos de comando, un ServerListener para escuchar los eventos SDAM y un ConnectionPoolListener para escuchar los eventos de la pool de conexiones:

class MyCommandListener(CommandListener):
def succeeded(self, event: CommandSucceededEvent):
print(f"Command {event.command_name} succeeded")
# Include other event method implementations here
class MyServerListener(ServerListener):
def heartbeat_started(self, event: ServerHeartbeatStartedEvent):
print(f"Heartbeat started on server with id: {event.connection_id}")
# Include other event method implementations here
class MyPoolListener(ConnectionPoolListener):
def connection_created(self, event: ConnectionCreatedEvent):
print(f"Connection {event.connection_id} created")
# Include other event method implementations here

El siguiente código pasa las instancias de los escuchadores anteriores al constructor MongoClient. Elija el Synchronous o la pestaña Asynchronous para ver el código correspondiente:

listeners = [MyCommandListener(), MyServerListener(), MyPoolListener()]
client = MongoClient("<connection URI>", event_listeners=listeners)
listeners = [MyCommandListener(), MyServerListener(), MyPoolListener()]
client = AsyncMongoClient("<connection URI>", event_listeners=listeners)

Para obtener más información sobre los métodos y clases utilizados para monitorear eventos en el controlador, consulte la siguiente documentación de API:

Volver

Supervisión y registro

En esta página