개요
이 가이드 에서는 PyMongo의 콜백 기반 인터페이스를 사용하여 PyMongo 에서 모니터링 구성하는 방법을 학습 수 있습니다. 모니터링은 애플리케이션이 실행될 때 애플리케이션의 동작에 대한 정보를 수집하는 프로세스 입니다. 이 정보는 애플리케이션 설계하고 디버깅할 때 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다. 모니터링 이벤트의 정보를 사용하여 애플리케이션의 성능 및 리소스 사용량을 추적 할 수도 있습니다.
운전자 이벤트를 방출하여 애플리케이션 에 대한 정보를 제공합니다. 운전자 이벤트를 수신하여 애플리케이션 모니터 할 수 있습니다.
이벤트 유형
운전자 발생시키는 이벤트 유형은 수행 중인 작업에 따라 달라집니다. 다음 표에서는 운전자 내보내는 이벤트 유형에 대해 설명합니다.
eventType | 설명 |
---|---|
명령 이벤트 |
보안 조치로 운전자 일부 명령 이벤트의 내용을 수정합니다. 이렇게 하면 이러한 명령 이벤트에 포함된 민감한 정보를 보호할 수 있습니다. |
서버 검색 및 모니터링(SDAM) 이벤트 | MongoDB deployment 상태 의 변경과 관련된 이벤트입니다. |
연결 풀 이벤트 | 운전자 가 보유한 연결 풀 과 관련된 이벤트입니다. |
운전자 내보내는 이벤트의 전체 목록은 pymongo를 참조하세요. 모니터링 API 문서.
이벤트 수신
이벤트 모니터 하려면 애플리케이션의 MongoClient
에 이벤트 리스너를 전달해야 합니다. 다음 단계에서는 이벤트 리스너를 사용하여 애플리케이션 모니터 방법을 설명합니다.
PyMongo 에서 제공하는 이벤트 리스너 기본 클래스 중 하나를 상속하는 클래스를 생성합니다. 선택하는 기본 클래스는 모니터 하려는 이벤트 유형에 따라 달라집니다. 예시 들어 명령 이벤트를 모니터 하려면
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 설명서를 참조하세요.