Overview
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.
Tipos de eventos
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 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.
Escuchando eventos
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:
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.Implementa los métodos de la clase base que corresponden a los eventos que deseas monitorear.
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)
Documentación de la API
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: