Docs Menu
Docs Home
/ / /
Scala
/

클러스터 모니터링

이 페이지의 내용

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

이 가이드 스칼라 운전자 사용하여 MongoDB 인스턴스, 복제본 세트 또는 샤딩된 클러스터 에서 서버 검색 및 모니터링 (SDAM) 이벤트를 모니터 방법을 보여줍니다. 이러한 이벤트는 연결된 MongoDB 인스턴스 또는 클러스터 의 상태 가 변경될 때 발생합니다.

스칼라 운전자 9개의 SDAM 이벤트를 정의하고 각각 3개의 SDAM 이벤트를 수신하는 다음과 같은 리스너 인터페이스를 제공합니다.

  • ClusterListener: 토폴로지 변경 또는 클러스터 의 상태 및 구조 변경과 관련된 이벤트를 수신 대기합니다.

  • ServerListener: 개별 서버 변경과 관련된 이벤트를 수신 대기합니다.

  • ServerMonitorListener: 하트비트 관련 이벤트를 수신하거나 복제본 세트 멤버 간의 통신 상태를 보고합니다.

애플리케이션 의 SDAM 이벤트에 대한 정보를 사용하여 클러스터 변경 사항을 이해하거나, 클러스터 상태를 평가하거나, 용량 계획을 수행할 수 있습니다.

애플리케이션 에서 SDAM 이벤트를 구독 하면 해당 이벤트에 대한 세부 정보 액세스 할 수 있습니다. 이벤트 를 구독 하려면 ClusterListener, ServerListener 또는 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
리스너 인터페이스
설명

ClusterDescriptionChangedEvent

새 프라이머리 투표 가 있는 경우와 같이 토폴로지 설명이 변경될 때 생성됩니다.

운전자 가 클러스터 에 처음 연결할 때 생성됩니다.

운전자 가 클러스터 에서 연결 해제될 때 생성됩니다.

서버 설명이 변경될 때 생성됩니다.

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

토폴로지 에서 기존 서버 가 제거될 때 생성됩니다.

서버 모니터 가 서버 에 hello 명령을 보낼 때 생성됩니다. 이 조치 을 하트비트라고 합니다.

하트비트가 성공할 때 생성됩니다.

하트비트가 실패할 때 생성됩니다.

이벤트 모니터링 클래스의 전체 목록을 보려면 Java API 문서에서 이벤트 패키지 참조하세요.

이 가이드에서 설명하는 메서드에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

애플리케이션 모니터링