Docs 菜单
Docs 主页
/ / /
Pymongo 驱动程序
/

监控

在此页面上

  • Overview
  • 事件类型
  • 监听事件
  • API 文档

在本指南中,您可以学习;了解如何使用 PyMongo 基于回调的接口在PyMongo中配置监控。监控是在应用程序运行时收集有关应用程序行为的信息的进程。这些信息可以帮助您在设计和调试应用程序时做出明智的决策。您还可以使用监控事件中的信息来追踪应用程序的性能和资源使用情况。

驾驶员通过发出事件来提供有关应用程序的信息。 您可以监听驾驶员事件来监控应用程序。

注意

事件记录

本页介绍如何在代码中监控应用程序。 要学习;了解如何将此信息记录到外部日志中,请参阅 日志记录指南。

驾驶员发出的事件类型取决于正在执行的操作。 下表描述了驾驶员发出的事件类型:

eventType
说明

命令事件

与MongoDB 数据库命令相关的事件,例如 findinsertdeletecount。 要学习;了解如何使用PyMongo运行数据库命令,请参阅运行数据库命令。有关MongoDB 数据库命令的更多信息,请参阅MongoDB Server手册中的 数据库命令。

作为安全措施,驾驶员会编辑某些命令事件的内容。 这可以保护这些命令事件中包含的敏感信息。

服务器发现和监控 (SDAM) 事件

与MongoDB 部署状态更改相关的事件。

连接池事件

与驾驶员持有的连接池相关的事件。

有关驾驶员发出的事件的完整列表,请参阅 pymongo.监控API文档。

要监控事件,您必须将事件侦听器传递给应用程序的 MongoClient。 以下步骤描述了如何使用事件侦听器监控应用程序:

  1. 创建一个类,该类从PyMongo提供的事件监听器基类之一继承。 您选择的基类取决于要监控的事件类型。 示例,要监控命令事件,请创建一个从 CommandListener 继承的类。

  2. 实现与要监控的事件相对应的基类方法。

  3. 将侦听器类的实例传递给 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 构造函数。选择 SynchronousAsynchronous标签页以查看相应的代码:

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

要学习;了解有关用于监控驾驶员中的事件的方法和类的更多信息,请参阅以下API文档:

后退

监控和日志记录