Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Monitoring

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.

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_t para almacenar los callbacks

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

  • Llama a la función mongoc_client_set_apm_callbacks(), que registra la función de retorno 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 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

mongoc_apm_server_changed_t

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 hello al servidor. Esta acción se denomina latido.

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.

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

Volver

Registro

En esta página