监控
Overview
在本指南中,您可以学习;了解如何使用 PyMongo 基于回调的接口在PyMongo中配置监控。监控是在应用程序运行时收集有关应用程序行为的信息的进程。这些信息可以帮助您在设计和调试应用程序时做出明智的决策。您还可以使用监控事件中的信息来追踪应用程序的性能和资源使用情况。
驾驶员通过发出事件来提供有关应用程序的信息。 您可以监听驾驶员事件来监控应用程序。
事件类型
驾驶员发出的事件类型取决于正在执行的操作。 下表描述了驾驶员发出的事件类型:
eventType | 说明 |
---|---|
命令事件 | |
服务器发现和监控 (SDAM) 事件 | 与MongoDB 部署状态更改相关的事件。 |
连接池事件 | 与驾驶员持有的连接池相关的事件。 |
有关驾驶员发出的事件的完整列表,请参阅 pymongo.监控API文档。
监听事件
要监控事件,您必须将事件侦听器传递给应用程序的 MongoClient
。 以下步骤描述了如何使用事件侦听器监控应用程序:
创建一个类,该类从PyMongo提供的事件监听器基类之一继承。 您选择的基类取决于要监控的事件类型。 示例,要监控命令事件,请创建一个从
CommandListener
继承的类。实现与要监控的事件相对应的基类方法。
将侦听器类的实例传递给
MongoClient
构造函数。
以下代码实现了一个 CommandListener
来侦听命令事件、一个 ServerListener
来侦听 SDAM 事件以及一个 ConnectionPoolListener
来侦听连接池事件:
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
以下代码将上述侦听器的实例传递给 MongoClient
构造函数。选择 Synchronous 或 Asynchronous标签页以查看相应的代码:
listeners = [MyCommandListener(), MyServerListener(), MyPoolListener()] client = MongoClient("<connection URI>", event_listeners=listeners)
listeners = [MyCommandListener(), MyServerListener(), MyPoolListener()] client = AsyncMongoClient("<connection URI>", event_listeners=listeners)
API 文档
要学习;了解有关用于监控驾驶员中的事件的方法和类的更多信息,请参阅以下API文档: