Docs Menu
Docs Home
/ /

Monitoreo de clústeres

Esta guía le muestra cómo usar el controlador de Scala para supervisar eventos de detección y monitorización de servidores (SDAM) en una instancia de MongoDB, un conjunto de réplicas o un clúster fragmentado. Estos eventos se producen cuando se produce algún cambio en el estado de la instancia o el clúster de MongoDB al que está conectado.

El controlador Scala define nueve eventos SDAM y proporciona las siguientes interfaces de escucha, que escuchan tres eventos SDAM cada una:

  • ClusterListener:Escucha eventos relacionados con cambios de topología o cambios en el estado y la estructura del clúster.

  • ServerListener:Escucha eventos relacionados con cambios de servidores individuales

  • ServerMonitorListener:Escucha eventos relacionados con el latido o informa sobre el estado de la comunicación entre los miembros del conjunto de réplicas

Puede utilizar información sobre eventos SDAM en su aplicación para comprender los cambios del clúster, evaluar el estado del clúster o realizar una planificación de capacidad.

Puede acceder a detalles sobre los eventos SDAM suscribiéndose a ellos en su aplicación. Para suscribirse a un evento, cree una clase que implemente la interfaz ClusterListener, ServerListener o ServerMonitorListener. A continuación, agregue el receptor a su cliente configurando una instancia de MongoClientSettings y pasándola al constructor MongoClient.

El siguiente código crea la clase TestClusterListener, que implementa la interfaz ClusterListener. La clase contiene los siguientes métodos para gestionar eventos relacionados con la topología:

  • clusterOpening(): Imprime un mensaje cuando el controlador se conecta por primera vez a un clúster

  • clusterClosed(): Imprime un mensaje cuando el controlador se desconecta de un clúster

  • clusterDescriptionChanged(): Imprime un mensaje sobre los cambios en la disponibilidad de lectura y escritura del clúster

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")
}
}
}
}

Luego, suscríbete a la clase TestClusterListener configurando los ajustes para tu instancia MongoClient, como se muestra en el siguiente código:

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)

Cuando ejecuta la aplicación, su suscriptor registra el evento SDAM y genera mensajes como el siguiente:

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

Se puede suscribirse a los eventos SDAM definiendo una clase que implemente la interfaz de escucha correspondiente al evento e incluya un método para procesar el evento. La siguiente tabla proporciona el nombre de cada evento SDAM, la interfaz de escucha que gestiona el evento y una descripción de cuándo se publica el evento:

Tipo de evento
Interfaz de oyente
Descripción

Evento de cambio de descripción del clúster

Se crea cuando cambia la descripción de la topología, como cuando hay una elección de un nuevo primario.

Se crea cuando el controlador se conecta por primera vez al clúster.

Se crea cuando el controlador se desconecta del clúster.

Se crea cuando cambia la descripción del servidor.

Se crea cuando se agrega un nuevo servidor a la topología.

Se crea cuando se elimina un servidor existente de la topología.

Se crea cuando el monitor del servidor envía un comando hello al servidor. Esta acción se denomina latido.

Se crea cuando el latido tiene éxito.

Se crea cuando falla el latido del corazón.

Para ver una lista completa de clases de monitoreo de eventos, consulte el paquete de eventos en la documentación de la API de Java.

Para obtener más información sobre cualquiera de los métodos analizados en esta guía, consulte la siguiente documentación de API:

Volver

MongoDB búsqueda

En esta página