Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/

애플리케이션 이벤트 모니터링

이 가이드 에서는 MongoDB PHP 라이브러리에서 모니터링 설정하다 하고 구성하는 방법을 학습 수 있습니다.

모니터링은 애플리케이션이 실행될 때 애플리케이션의 동작에 대한 정보를 수집하는 프로세스 입니다. 이 정보는 애플리케이션 설계하고 디버깅할 때 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다. 모니터링 이벤트의 정보를 사용하여 애플리케이션의 성능 및 리소스 사용을 추적 할 수도 있습니다.

MongoDB PHP 라이브러리는 애플리케이션 정보를 제공하는 명령 이벤트와 서버 검색 및 모니터링(SDAM) 이벤트를 전송합니다. 이러한 이벤트를 수신하여 애플리케이션 모니터 할 수 있습니다.

참고

이 페이지에서는 코드로 애플리케이션 모니터 방법을 설명합니다. 이 정보를 외부 로그 에 기록 방법을 학습 로그 드라이버 이벤트 가이드 참조하세요.

운전자 발생시키는 이벤트 유형은 수행 중인 작업에 따라 달라집니다. 다음 표에서는 운전자 내보내는 이벤트 유형에 대해 설명합니다.

eventType
설명

명령 이벤트

find, insert, delete, count 등의 MongoDB database 명령과 관련된 이벤트입니다. PHP 라이브러리를 사용하여 데이터베이스 명령 실행 방법을 학습하려면 데이터베이스 명령 실행을 참조하세요. MongoDB database 명령에 대한 자세한 내용은 MongoDB Server 매뉴얼의 데이터베이스 명령 을 참조하세요.

서버 검색 및 모니터링(SDAM) 이벤트

MongoDB deployment 상태 의 변경과 관련된 이벤트입니다.

이벤트를 모니터 하려면 다음 조치를 수행해야 합니다.

  1. 이벤트 구독자 생성: 명령 또는 SDAM 이벤트 구독자를 구현하는 클래스를 생성합니다.

  2. 이벤트 구독자 등록: MongoDB\Client에 모니터링 이벤트 구독자를 등록합니다.

모니터링 이벤트 를 구독 하려면 이벤트 구독자 인터페이스를 구현하는 클래스를 만듭니다. 다음 인터페이스를 구현 수 있습니다.

  • MongoDB\Driver\Monitoring\CommandSubscriber, 명령 이벤트를 구독합니다.

  • MongoDB\Driver\Monitoring\SDAMSubscriber, SDAM 이벤트를 구독합니다.

SDAM 이벤트 를 구독 하려면 MongoDB\Driver\Monitoring\CommandSubscriber 인터페이스를 구현하는 클래스를 만듭니다. 클래스에서 각 CommandSubscriber 메서드를 정의합니다. 다음 표에서는 이러한 메서드와 해당 메서드 알림 받는 명령 이벤트에 대해 설명합니다.

메서드
명령 이벤트
설명

명령이 성공하지 못할 때 호출됩니다.

서버 에 명령이 전송될 때 호출됩니다.

명령이 성공하면 호출됩니다.

다음 코드는 CommandSubscriber 인터페이스를 구현하는 MyCommandSubscriber 클래스를 만듭니다. 이 클래스는 각 CommandSubscriber 메서드를 정의하고 서버 수신하는 각각의 새 명령에 대한 세부 정보를 출력하는 commandStarted() 메서드에 대한 사용자 지정 로직을 포함합니다.

class MyCommandSubscriber implements MongoDB\Driver\Monitoring\CommandSubscriber
{
/** @param resource $stream */
public function __construct(private $stream)
{
}
public function commandStarted(MongoDB\Driver\Monitoring\CommandStartedEvent $event): void
{
fwrite($this->stream, sprintf(
'Started command #%d "%s": %s%s',
$event->getRequestId(),
$event->getCommandName(),
MongoDB\BSON\Document::fromPHP($event->getCommand())->toCanonicalExtendedJSON(),
PHP_EOL,
));
}
public function commandSucceeded(MongoDB\Driver\Monitoring\CommandSucceededEvent $event): void
{
}
public function commandFailed(MongoDB\Driver\Monitoring\CommandFailedEvent $event): void
{
}
}

SDAM 이벤트 를 구독 하려면 MongoDB\Driver\Monitoring\SDAMSubscriber 인터페이스를 구현하는 클래스를 만듭니다. 클래스에서 각 SDAMSubscriber 메서드를 정의합니다. 다음 표에서는 이러한 메서드와 해당 메서드 알림 받는 명령 이벤트에 대해 설명합니다.

메서드
SDAM 이벤트
설명

서버의 설명이 변경될 때 호출됩니다.

서버 토폴로지 에서 제거될 때 호출됩니다.

서버 하트비트가 실패할 때 호출됩니다.

서버 하트비트를 수신할 때 호출됩니다.

서버 하트비트가 성공하면 호출됩니다.

토폴로지 에 새 서버 추가될 때 호출됩니다.

토폴로지 설명이 변경될 때 호출됩니다.

토폴로지 닫힐 때 호출됩니다.

토폴로지 가 열릴 때 호출됩니다.

다음 코드는 SDAMSubscriber 인터페이스를 구현하는 MySDAMSubscriber 클래스를 만듭니다. 이 클래스는 각 SDAMSubscriber 메서드를 정의하고 토폴로지 에 추가된 서버에 대한 세부 정보를 출력하는 serverOpening() 메서드에 대한 사용자 지정 로직을 포함합니다.

class MySDAMSubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
{
/** @param resource $stream */
public function __construct(private $stream)
{
}
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event): void
{
fprintf(
$this->stream,
'Server opening on %s:%s\n',
$event->getHost(),
$event->getPort(),
PHP_EOL,
);
}
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
{
}
}

구독자 인터페이스를 구현하는 클래스를 만든 후 클라이언트 에 대한 이벤트 알림 받으려면 이 클래스를 MongoDB\Client 에 등록해야 합니다. 구독자를 등록하려면 MongoDB\Client::addSubscriber() 메서드를 호출하고 구독자 클래스의 인스턴스 매개 변수로 전달합니다.

다음 코드는 이 페이지의 이벤트 구독자 생성하기 섹션에서 생성된 명령 및 SDAM 이벤트 구독자를 MongoDB\Client으로 등록합니다.

$commandSub = new MyCommandSubscriber(STDERR);
$sdamSub = new MySDAMSubscriber(STDERR);
$client->addSubscriber($commandSub);
$client->addSubscriber($sdamSub);

애플리케이션 시작하고 삽입 명령을 실행 구독자는 다음과 같은 이벤트 및 출력 메시지를 기록 .

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
Started command #3 "insert": { "insert" : ... }

클라이언트 에서 구독자의 등록을 취소하려면 MongoDB\Client::removeSubscriber() 메서드를 사용합니다.

다음 코드는 이 페이지의 명령 이벤트 구독자 예제 섹션에서 생성된 구독자를 제거 방법을 보여줍니다.

$client->removeSubscriber($commandSub);

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

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

돌아가기

로깅 및 모니터링

이 페이지의 내용