Overview
このガイドでは、PyMongo のコールバックベースのインターフェースを使用して、 PyMongoでモニタリングを構成する方法を学習できます。モニタリングとは、アプリケーションの実行における動作に関する情報を収集するプロセスです。この情報は、アプリケーションの設計とデバッグ時に情報に基づいた決定を行う際に役立ちます。また、モニタリング イベントの情報を使用して、アプリケーションのパフォーマンスとリソース使用量を追跡できます。
ドライバーは、 イベントを発行してアプリケーションに関する情報を提供します。 ドライバー イベントをリッスンしてアプリケーションをモニター できます。
イベントの種類
ドライバーが発行するイベントの種類は、実行されている操作によって異なります。 次の表では、ドライバーが発行するイベントの種類を説明しています。
eventType | 説明 |
---|---|
コマンド イベント | MongoDBデータベースコマンドに関連するイベント( セキュリティ対策として、ドライバーは一部のコマンド イベントの内容を編集します。 これにより、これらのコマンド イベントに含まれる機密情報が保護されます。 |
サーバー検出とモニタリング(SDAM)イベント | MongoDBデプロイの状態の変更に関連するイベント。 |
接続プール イベント | ドライバーによって保持される接続プールに関連するイベント。 |
ドライバーが発行するイベントの完全なリストについては、 pymongo.monitoring APIドキュメントを参照してください。
イベントのリスニング
イベント をモニターするには、アプリケーションの MongoClient
にイベントリスナーを渡す必要があります。 次の手順では、イベントリスナーを使用してアプリケーションを監視する方法について説明します。
PyMongoが提供するイベントリスナーの基本クラスの 1 から継承するクラスを作成します。 選択する基本クラスは、監視するイベントのタイプによって異なります。 例、 コマンド イベントを監視するには、
CommandListener
から継承するクラスを作成します。監視するイベントに対応する基本クラスのメソッドを実装します。
リスナークラスのインスタンスを
MongoClient
コンストラクターに渡します。
次のコードでは、コマンド イベントをリッスンするための CommandListener
、SDAM イベントをリッスンするための ServerListener
、接続プールイベントをリッスンするための 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 listeners = [MyCommandListener(), MyServerListener(), MyPoolListener()] client = MongoClient("<connection URI>", event_listeners=listeners)
API ドキュメント
ドライバー内のイベントを監視するために使用されるメソッドとクラスの詳細については、次のAPIドキュメントを参照してください。