클러스터 모니터링
개요
이 가이드 에서는 MongoDB PHP 라이브러리를 사용하여 MongoDB 인스턴스, 복제본 세트 또는 샤딩된 클러스터 에서 서버 검색 및 모니터 (SDAM) 이벤트를 모니터링 하는 방법을 설명합니다. 이러한 이벤트는 연결된 MongoDB 인스턴스 또는 클러스터 의 상태 가 변경될 때 발생합니다.
애플리케이션 의 SDAM 이벤트에 대한 정보를 사용하여 클러스터 변경 사항을 이해하거나, 클러스터 상태를 평가하거나, 용량 계획을 수행할 수 있습니다.
이벤트 구독
애플리케이션 에서 SDAM 이벤트를 구독 하면 해당 이벤트에 대한 세부 정보에 액세스 할 수 있습니다. 이벤트 를 구독 하려면 MongoDB\Driver\Monitoring\SDAMSubscriber
인터페이스를 구현하는 클래스를 만든 다음 MongoDB\Client::addSubscriber()
메서드를 사용하여 MongoDB\Client
인스턴스 에 이벤트 구독자를 등록합니다.
다음 코드는 SDAMSubscriber
인터페이스를 구현하는 MySubscriber
클래스를 만듭니다. 이 클래스는 서버 에서 ServerOpeningEvent
가 생성될 때 메시지를 출력하는 메서드로 정의됩니다.
class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber { private $stream; public function __construct($stream) { $this->stream = $stream; } public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event): void { fprintf( $this->stream, 'Server opening on %s:%s\n', $event->getHost(), $event->getPort(), ); } public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event): void {} public function serverChanged(MongoDB\Driver\Monitoring\ServerChangedEvent $event): void {} public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event): void {} public function serverHeartbeatStarted(MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent $event): void {} public function serverHeartbeatSucceeded(MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent $event): void {} public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event): void {} public function topologyClosed(MongoDB\Driver\Monitoring\TopologyClosedEvent $event): void {} public function topologyOpening(MongoDB\Driver\Monitoring\TopologyOpeningEvent $event): void {} }
참고
앞의 코드에 표시된 대로 구독 하지 않는 이벤트의 경우에도 SDAMSubscriber
인터페이스의 모든 메서드를 구현 해야 합니다. 이 예시 에서는 예비 메서드를 빈 메서드로 정의하여 애플리케이션 이 해당 이벤트에 대한 메시지를 출력하지 않도록 합니다.
그런 다음 addSubscriber()
메서드를 사용하여 다음 코드와 같이 클라이언트 에 MySubscriber
를 등록합니다.
$subscriber = new MySubscriber(STDERR); $client->addSubscriber($subscriber);
애플리케이션 을 실행 하면 구독자는 SDAM 이벤트 를 기록하고 다음과 같은 메시지를 출력합니다.
Server opening on ac-rmuag0v-shard-00-00.gh0qg50.mongodb.net:27017 Server opening on ac-rmuag0v-shard-00-01.gh0qg50.mongodb.net:27017 Server opening on ac-rmuag0v-shard-00-02.gh0qg50.mongodb.net:27017
이벤트 설명
SDAMSubscriber
인터페이스에서 해당 메서드를 구현하여 SDAM 이벤트를 구독 할 수 있습니다. 다음 표에는 클래스의 API 문서에 링크된 각 SDAM 이벤트 의 이름과 이벤트 가 게시된 시점에 대한 설명이 나와 있습니다.
eventType | 설명 |
---|---|
서버 유형이 세컨더리 에서 프라이머리 로 변경되는 등 서버 설명이 변경될 때 생성됩니다. | |
새 서버 가 토폴로지 에 추가될 때 생성됩니다. | |
토폴로지 에서 기존 서버 가 제거될 때 생성됩니다. | |
새 프라이머리 투표 가 있는 경우와 같이 토폴로지 설명이 변경될 때 생성됩니다. | |
운전자 가 클러스터 에 처음 연결할 때 생성됩니다. | |
운전자 가 클러스터 에서 연결 해제될 때 생성됩니다. | |
서버 모니터 가 서버 에 hello 명령을 보낼 때 생성됩니다. 이 조치 을 하트비트라고 합니다. | |
하트비트가 성공할 때 생성됩니다. | |
하트비트가 실패할 때 생성됩니다. |
모니터링 클래스 및 구독자 함수 에서 모니터링 구독자 클래스 및 이벤트 메서드 목록을 찾을 수 있습니다. 섹션을 PHP 하세요.
구독자 제거
애플리케이션 후반부에서 SDAM 이벤트를 구독 하고 싶지 않을 수 있습니다. 클라이언트 에서 구독자의 등록을 취소하려면 MongoDB\Client::removeSubscriber()
메서드를 사용합니다. 존재하지 않는 구독자를 제거 하려고 하면 메서드는 아무 조치 도 수행하지 않습니다.
다음 코드는 이벤트 구독하기 섹션에서 등록한 구독자를 제거 하는 방법을 보여줍니다.
$client->removeSubscriber($subscriber);
API 문서
이 가이드 에 설명된 클래스 또는 메서드에 학습 보려면 다음 API 설명서를 참조하세요.
구독자 클래스 및 메서드에 학습 보려면 PHP 매뉴얼의 다음 페이지를 참조하세요.