Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/

클러스터 모니터링

이 페이지의 내용

  • 개요
  • 이벤트 구독
  • 이벤트 설명
  • 구독자 제거
  • API 문서

이 가이드 에서는 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
설명
ServerChangedEvent
서버 유형이 세컨더리 에서 프라이머리 로 변경되는 등 서버 설명이 변경될 때 생성됩니다.
새 서버 가 토폴로지 에 추가될 때 생성됩니다.
토폴로지 에서 기존 서버 가 제거될 때 생성됩니다.
새 프라이머리 투표 가 있는 경우와 같이 토폴로지 설명이 변경될 때 생성됩니다.
운전자 가 클러스터 에 처음 연결할 때 생성됩니다.
운전자 가 클러스터 에서 연결 해제될 때 생성됩니다.
서버 모니터 가 서버 에 hello 명령을 보낼 때 생성됩니다. 이 조치 을 하트비트라고 합니다.
하트비트가 성공할 때 생성됩니다.
하트비트가 실패할 때 생성됩니다.

모니터링 클래스 및 구독자 함수 에서 모니터링 구독자 클래스 및 이벤트 메서드 목록을 찾을 수 있습니다. 섹션을 PHP 하세요.

애플리케이션 후반부에서 SDAM 이벤트를 구독 하고 싶지 않을 수 있습니다. 클라이언트 에서 구독자의 등록을 취소하려면 MongoDB\Client::removeSubscriber() 메서드를 사용합니다. 존재하지 않는 구독자를 제거 하려고 하면 메서드는 아무 조치 도 수행하지 않습니다.

다음 코드는 이벤트 구독하기 섹션에서 등록한 구독자를 제거 하는 방법을 보여줍니다.

$client->removeSubscriber($subscriber);

이 가이드 에 설명된 클래스 또는 메서드에 학습 보려면 다음 API 설명서를 참조하세요.

  • MongoDB\Client::addSubscriber()

  • MongoDB\Client::removeSubscriber()

구독자 클래스 및 메서드에 학습 보려면 PHP 매뉴얼의 다음 페이지를 참조하세요.

돌아가기

애플리케이션 모니터링