Menu Docs
Página inicial do Docs
/ / /
Scala
/

Monitoramento de clusters

Nesta página

  • Visão geral
  • Inscrever-se para receber eventos
  • Descrições de evento
  • Documentação da API

Este guia mostra como usar o driver Scala para monitorar eventos de descoberta e monitoramento do servidor (SDAM) em uma instância do MongoDB , conjunto de réplicas ou cluster fragmentado. Esses eventos ocorrem quando há alguma alteração no estado da instância ou cluster MongoDB ao qual você está conectado.

O driver Scala define nove eventos SDAM e fornece as seguintes interfaces de ouvinte, que escutam três eventos SDAM cada:

  • ClusterListener: Ouve eventos relacionados a alterações de topologia ou alterações no estado e na estrutura do cluster

  • ServerListener: escuta eventos relacionados a alterações individuais do servidor

  • ServerMonitorListener: escuta eventos relacionados à pulsação ou relata o status da comunicação entre os membros do conjunto de réplicas

Você pode usar informações sobre eventos SDAM em seu aplicação para entender as alterações do cluster, avaliar a integridade do cluster ou executar o planejamento da capacidade.

Você pode acessar detalhes sobre eventos SDAM assinando-os em seu aplicação. Para assinar um evento, crie uma classe que implemente a interface ClusterListener, ServerListener ou ServerMonitorListener. Em seguida, adicione o ouvinte ao seu cliente configurando uma instância de MongoClientSettings e passando-a para o construtor MongoClient .

O seguinte código cria a classe TestClusterListener , que implementa a interface ClusterListener. A classe contém os seguintes métodos para lidar com eventos relacionados à topologia:

  • clusterOpening(): Imprime uma mensagem quando o driver se conecta pela primeira vez a um cluster

  • clusterClosed(): Imprime uma mensagem quando o driver se desconecta de um cluster

  • clusterDescriptionChanged(): Imprime uma mensagem sobre as alterações na disponibilidade de leitura e gravação do cluster

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

Em seguida, inscreva-se na classe TestClusterListener definindo as configurações de sua instância MongoClient, conforme mostrado no código a seguir:

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)

Quando você executa o aplicação, seu assinante registra o evento SDAM e gera mensagens como as seguintes:

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

Você pode assinar eventos SDAM definindo uma classe que implementa a interface de ouvinte correspondente do evento e inclui um método para processar o evento. A tabela a seguir fornece o nome de cada evento SDAM , a interface de ouvinte que lida com o evento, e uma descrição de quando o evento é publicado:

eventType
Interface do ouvinte
Descrição

ClusterDescriptionChangedEvent

Criado quando a descrição da topologia muda, como quando há uma eleição de uma nova primária.

Criado quando o driver se conecta pela primeira vez ao cluster.

Criado quando o driver se desconecta do cluster.

Criado quando a descrição do servidor muda.

Criado quando um novo servidor é adicionado à topologia.

Criado quando um servidor existente é removido da topologia.

Criado quando o monitor do servidor envia um comando hello para o servidor. Essa ação é chamada de pulsação.

Criado quando a pulsação é bem-sucedida.

Criado quando o heartbeat falha.

Para ver uma lista completa de classes de monitoramento de evento , consulte o pacote de evento na documentação da API Java .

Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API:

Voltar

Monitore seu aplicativo