Docs Menu
Docs Home
/ /

Monitoring

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.

Puede acceder a detalles sobre los eventos de SDAM suscribiéndose a ellos en su aplicación. Para suscribirse a un evento, defina una función de devolución de llamada de Monitoreo del Rendimiento de Aplicaciones (APM) para gestionar cada tipo de evento al que desee suscribirse. Pase un mongoc_apm_callbacks_t objeto a la función mongoc_client_set_apm_callbacks() para registrar la lista de devoluciones de llamadas APM con un cliente.

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.

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

Volver

Registro

En esta página