Overview
Esta guía te muestra cómo utilizar el driver C para supervisar los eventos de descubrimiento y supervisión del servidor (SDAM) en una instancia de MongoDB, set de réplicas o clúster. Estos eventos ocurren cuando hay algún cambio en el estado de la instancia de MongoDB o en el clúster al que estás conectado.
Puede usar la información sobre los eventos SDAM en su aplicación para comprender los cambios en el clúster, evaluar la salud del clúster o realizar la planificación de capacidad.
Suscribirse a eventos
Puedes acceder a detalles sobre los eventos SDAM suscribiéndote a ellos en tu aplicación. Para suscribirse a un evento, defina una función de retorno de supervisión del rendimiento de aplicaciones (APM) para gestionar cada tipo de evento al que desee suscribirse. Pasa un mongoc_apm_callbacks_t objeto a la función mongoc_client_set_apm_callbacks() para registrar la lista de funciones de retorno de APM con un cliente.
Este código monitorea los eventos de apertura del servidor realizando las siguientes acciones:
Define una función de retorno APM
server_opening().Crea un objeto
mongoc_apm_callbacks_tpara almacenar los callbacksLlama a la función
mongoc_apm_set_server_opening_cb(), que almacena un puntero a la función de retorno APM proporcionada en el objetomongoc_apm_callbacks_tLlama a la función
mongoc_client_set_apm_callbacks(), que registra la función de retorno en el objetomongoc_apm_callbacks_tcon el cliente
1 2 3 4 5 typedef struct { 6 int server_opening_events; 7 } stats_t; 8 9 static void 10 server_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 18 int 19 main(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>
Descripciones de eventos
Puede suscribirse a eventos SDAM definiendo la función de retorno 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 |
|---|---|
Se crea cuando cambia la descripción del servidor, como cuando el tipo de servidor cambia de secundario a primario. | |
Se crea cuando se agrega un nuevo servidor a la topología. Para ver un ejemplo de aplicación que se suscribe a este evento SDAM, consulte Suscríbete a los eventos en esta página. | |
Se crea cuando un servidor existente se elimina de la topología. | |
Se crea cuando la descripción de la topología cambia, como cuando se elige un nuevo primario. | |
Se crea cuando el driver 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 | |
Se crea cuando el latido cardíaco tiene éxito. | |
Se crea cuando falla la señal de vida. |
Puedes encontrar información sobre cada tipo de suscriptor de supervisión y método de evento en la sección Supervisión del Rendimiento de la Aplicación de la documentación de la API.
Documentación de la API
Para obtener más información acerca de las funciones tratadas en esta guía, consulte la siguiente documentación de la API: