Docs Menu
Docs Home
/
Monitorea tu aplicación

Monitoreo de clústeres

Esta guía le muestra cómo usar el controlador C 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.

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.

You can access details about SDAM events by subscribing to them in your application. To subscribe to an event, define an Application Performance Monitoring (APM) callback function to handle each event type you want to subscribe to. Pass a mongoc_apm_callbacks_t object to the mongoc_client_set_apm_callbacks() function to register the list of APM callbacks with a client.

Este código monitorea los eventos de apertura del servidor realizando las siguientes acciones:

  • Define una función de devolución de llamada APM server_opening()

  • Crea un objeto mongoc_apm_callbacks_t para almacenar devoluciones de llamadas

  • Llama a la función mongoc_apm_set_server_opening_cb(), que almacena un puntero a la función de devolución de llamada APM proporcionada en el objeto mongoc_apm_callbacks_t

  • Llama a la función mongoc_client_set_apm_callbacks(), que registra la devolución de llamada en el objeto mongoc_apm_callbacks_t con el cliente

1#include <stdio.h>
2#include <bson/bson.h>
3#include <mongoc/mongoc.h>
4
5typedef struct {
6 int server_opening_events;
7} stats_t;
8
9static void
10server_opening (const mongoc_apm_server_opening_t *event)
11{
12 stats_t *stats = (stats_t *) mongoc_apm_server_opening_get_context (event);
13 stats->server_opening_events += 1;
14
15 printf ("Server opening: %s\n", mongoc_apm_server_opening_get_host (event)->host_and_port);
16}
17
18int
19main (void)
20{
21 mongoc_init ();
22
23 stats_t stats = {0};
24
25 mongoc_client_t *client = mongoc_client_new ("<connection string URI>");
26
27 {
28 mongoc_apm_callbacks_t *cbs = mongoc_apm_callbacks_new ();
29 mongoc_apm_set_server_opening_cb (cbs, server_opening);
30 mongoc_client_set_apm_callbacks (client, cbs, &stats);
31 mongoc_apm_callbacks_destroy (cbs);
32 }
33
34 // Perform database operations
35
36 mongoc_client_destroy (client);
37
38 printf ("Observed %d server opening events\n", stats.server_opening_events);
39
40 mongoc_cleanup ();
41
42 return EXIT_SUCCESS;
43}

Al realizar una operación de base de datos, el controlador establece una nueva conexión con el servidor y el suscriptor registra el evento de apertura del servidor. El código genera mensajes similares a los siguientes:

Server opening: <host>:<port number>

Puede suscribirse a eventos SDAM definiendo la función de devolución de llamada de APM correspondiente. La siguiente tabla proporciona el nombre de cada evento SDAM, enlaces a la documentación de la API del tipo y describe cuándo se publica el evento:

Tipo de evento
Descripción

mongoc_apm_server_changed_t

Se crea cuando cambia la descripción del servidor, por ejemplo cuando el tipo de servidor cambia de secundario a principal.

Created when a new server is added to the topology. For an example application that subscribes to this SDAM event, see Subscribe to Events on this page.

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

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 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.

Puede encontrar información sobre cada tipo de suscriptor de monitoreo y método de evento en la sección Monitoreo del rendimiento de la aplicación de la documentación de la API.

Para obtener más información sobre las funciones analizadas en esta guía, consulte la siguiente documentación de API:

En esta página