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 mediante la emisión de eventos. Puede escuchar los eventos del controlador para supervisar su aplicación.
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 los 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 ellos. |
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 monitorizar un evento, debe pasar un detector de eventos al MongoClient de su aplicación. Los siguientes pasos describen cómo monitorizar su aplicación mediante un detector de eventos:
Cree una clase que herede de una de las clases base de escucha de eventos proporcionadas por PyMongo. La clase base que elija dependerá del tipo de evento que desee monitorizar. Por ejemplo, para monitorizar 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 su clase de escucha al constructor
MongoClient.
El siguiente código implementa un CommandListener para escuchar eventos de comando, un ServerListener para escuchar eventos SDAM y un ConnectionPoolListener para escuchar eventos de grupo 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 instancias de los oyentes anteriores al constructor MongoClient. Seleccione el Synchronous o 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: