Docs Menu
Docs Home
/ / /
Scala
/

クラスター モニタリング

項目一覧

  • Overview
  • イベントにサブスクライブ
  • イベントの説明
  • API ドキュメント

このガイドでは、 Scalaドライバーを使用して、 MongoDBインスタンス、レプリカセット、またはシャーディングされたクラスター内のサーバー検出とモニタリング(SDAM)イベントをモニターする方法を説明します。これらのイベントは、接続しているMongoDBインスタンスまたはクラスターの状態が変更されたときに発生します。

Scalaドライバーは 9 つの SDAM イベントを定義し、それぞれ 3 つの SDAM イベントをリッスンする次のリスナー インターフェースを提供します。

  • ClusterListener:トポロジーの変更、またはクラスターの状態と構造の変更に関連するイベントをリッスンします

  • ServerListener: 個々のサーバーの変更に関連するイベントをリッスン

  • ServerMonitorListener: ハートビート関連のイベントをリスニングしたり、レプリカセットノード間の通信ステータスを報告したりします

アプリケーション内の SDAM イベントに関する情報を使用すると、クラスターの変更の理解、クラスターの健全性の評価、またはキャパシティープランニングを実行できます。

SDAM イベントは、アプリケーションでサブスクライブすることで、その詳細にアクセスできます。イベントをサブスクライブするには、ClusterListenerServerListener、または ServerMonitorListener インターフェースを実装するクラスを作成します。次に、MongoClientSettings のインスタンスを構成し、それを MongoClient コンストラクターに渡して、クライアントにリスナーを追加します。

次のコードでは、ClusterListener インターフェースを実装する TestClusterListenerクラスが作成されます。クラスには、トポロジー関連のイベントを処理するための次のメソッドが含まれています。

  • clusterOpening(): ドライバーが最初にクラスターに接続したときにメッセージを出力します

  • clusterClosed(): ドライバーがクラスターから切断されたときにメッセージを出力します

  • clusterDescriptionChanged(): クラスターの読み取りおよび書込み (write) の可用性の変更に関するメッセージを出力します

case class TestClusterListener(readPreference: ReadPreference) extends ClusterListener {
var isWritable: Boolean = false
var isReadable: Boolean = false
override def clusterOpening(event: ClusterOpeningEvent): Unit =
println(s"Cluster with ID ${event.getClusterId} opening")
override def clusterClosed(event: ClusterClosedEvent): Unit =
println(s"Cluster with ID ${event.getClusterId} closed")
override def clusterDescriptionChanged(event: ClusterDescriptionChangedEvent): Unit = {
if (!isWritable) {
if (event.getNewDescription.hasWritableServer) {
isWritable = true
println("Writable server available")
}
} else {
if (!event.getNewDescription.hasWritableServer) {
isWritable = false
println("No writable server available")
}
}
if (!isReadable) {
if (event.getNewDescription.hasReadableServer(readPreference)) {
isReadable = true
println("Readable server available")
}
} else {
if (!event.getNewDescription.hasReadableServer(readPreference)) {
isReadable = false
println("No readable server available")
}
}
}
}

次に、次のコードに示すように、MongoClientインスタンスの設定を構成して TestClusterListenerクラスをサブスクライブします。

val uri: ConnectionString = ConnectionString("<connection string>")
val settings: MongoClientSettings = MongoClientSettings
.builder()
.applyToClusterSettings((builder: ClusterSettings.Builder) =>
builder.addClusterListener(TestClusterListener(ReadPreference.secondary())))
.applyConnectionString(uri)
.build()
val client: MongoClient = MongoClient(settings)

アプリケーションを実行すると、サブスクライブは SDAMイベントを記録し、次のようなメッセージを出力します。

Cluster with ID ClusterId{value='...', description='...'} opening
Writable server available
Readable server available
Cluster with ID ClusterId{value='...', description='...'} closed

SDAM イベントをサブスクライブするには、イベントに対応するリスナー インターフェースを実装し、イベント を処理するメソッドを含むクラスを定義します。次の表は、各 SDAMイベント、イベントを取り扱うリスナー インターフェイスの名前、およびイベントが公開されるタイミングの説明を示しています。

eventType
リスナー インターフェース
説明

Cluster Description ChangedEvent

新しいプライマリの選挙など、トポロジーの説明が変更されたときに作成されます。

ドライバーが最初にクラスターに接続したときに作成されます。

ドライバーがクラスターから切断されたときに作成されます。

サーバーの説明が変更されたときに作成されます。

新しいサーバーがトポロジーに追加されたときに作成されます。

既存のサーバーがトポロジーから削除されたときに作成されます。

サーバーモニターがサーバー にhelloコマンドを送信したときに作成されサーバー。 このアクションは、ハートビートと呼ばれます。

ハートビートが成功したときに作成されます。

ハートビートが失敗したときに作成されます。

イベントモニタリング クラスの完全なリストを表示するには、 Java APIドキュメントのイベントパッケージを参照してください。

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

戻る

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