Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

クラスター モニタリング

項目一覧

  • Overview
  • イベントにサブスクライブ
  • イベントの説明
  • サブスクリプションを削除する
  • 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

SDAM イベントをサブスクライブするには、 SDAMSubscriberインターフェースから対応するメソッドを実装します。 次の表は、クラスのAPIドキュメントにリンクされた各 SDAMイベントの名前と、イベントが公開されるタイミングの説明を示しています。

eventType
説明
Server ChangedEvent
サーバーのタイプがセカンダリからプライマリに変わるなど、サーバーの説明が変更されたときに作成されます。
新しいサーバーがトポロジーに追加されたときに作成されます。
既存のサーバーがトポロジーから削除されたときに作成されます。
新しいプライマリの選挙など、トポロジーの説明が変更されたときに作成されます。
ドライバーが最初にクラスターに接続したときに作成されます。
ドライバーがクラスターから切断されたときに作成されます。
サーバーモニターがサーバー にhelloコマンドを送信したときに作成されサーバー。 このアクションは、ハートビートと呼ばれます。
ハートビートが成功したときに作成されます。
ハートビートが失敗したときに作成されます。

モニタリング サブスクライブ クラスとイベントメソッドのリストは、「 モニタリング クラスとサブスクライブ関数 」を参照してください。 セクションをPHPしてください。

アプリケーションの後半では、SDAM イベントをサブスクライブしない場合がある場合があります。 クライアントからサブスクライブの登録を解除するには、 MongoDB\Client::removeSubscriber()メソッドを使用します。 存在しないサブスクライブを削除しようとした場合、メソッドはアクションを実行しません。

次のコードは、「イベントへのサブスクライブ 」セクションで登録したサブスクライブを削除する方法を示しています。

$client->removeSubscriber($subscriber);

このガイドで説明するクラスやメソッドの詳細については、次のAPIドキュメントを参照してください。

  • MongoDB\Client::addSubscriber()

  • MongoDB\Client::removeSubscriber()

サブスクライブのクラスとメソッドの詳細については、 PHPマニュアルの次のページを参照してください。

戻る

アプリケーションを監視する