Docs 菜单
Docs 主页
/ / /
C 驱动程序
/

集群监控

在此页面上

  • Overview
  • 订阅事件
  • 事件描述
  • API 文档

本指南向您介绍如何使用C驾驶员监控MongoDB实例、副本集或分片集群中的服务器发现和监控(SDAM) 事件。当您连接的MongoDB实例或集群的状态发生任何变化时,就会发生这些事件。

您可以使用有关应用程序中 SDAM 事件的信息来了解集群更改、评估集群运行状况或执行容量规划。

您可以通过在应用程序中订阅SDAM 事件来访问权限有关这些事件的详细信息。要订阅事件,请定义应用程序性能监控 (APM)回调函数来处理要订阅的每种事件类型。将 mongoc_apm_callbacks_t对象传递给 mongoc_client_set_apm_callbacks() 函数,以向客户端注册 APM 回调列表。

此代码通过执行以下操作来监控服务器打开事件:

  • 定义 server_opening() APM回调函数

  • 创建一个 mongoc_apm_callbacks_t对象来存储回调

  • 调用 mongoc_apm_set_server_opening_cb() 函数,该函数会将指向所提供的 APM回调函数的指针存储在 mongoc_apm_callbacks_t对象中

  • 调用 mongoc_client_set_apm_callbacks() 函数,该函数回调注册到客户端的 mongoc_apm_callbacks_t对象中

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}

当您执行数据库操作时,驾驶员会建立与服务器的新连接,并且您的订阅者会记录服务器打开事件。该代码输出类似于以下内容的消息:

Server opening: <host>:<port number>

您可以通过定义相应的 APM回调函数来订阅SDAM 事件。下表提供了每个 SDAM事件的名称、指向该类型的API文档的链接,并描述了事件的发布时间:

eventType
说明

mongoc_apm_server_changed_t

在服务器描述更改时创建,例如服务器类型从从节点(secondary node from replica set)更改为主节点 (primary node in the replica set)。

在拓扑结构中添加新服务器时创建。有关订阅此 SDAM事件的示例应用程序,请参阅本页上的 订阅事件。

从拓扑结构中删除现有服务器时创建。

在拓扑结构描述更改时创建,例如选举新的主节点 (primary node in the replica set)节点时。

在驾驶员首次连接到集群时创建。

当驾驶员与集群断开连接时创建。

当服务器监控向服务器发送hello命令时创建。 此动作称为心跳。

当心跳成功时创建。

当 heartbeat 失败时创建。

您可以在API文档的应用程序性能监控部分找到有关每种监控订阅者类型和事件方法的信息。

要学习;了解有关本指南中讨论的函数的更多信息,请参阅以下API文档:

后退

监控您的应用程序