Overview
このガイドでは、 Cドライバーを使用して、 MongoDBインスタンス、レプリカセット、またはシャーディングされたクラスター内のサーバー検出とモニタリング(SDAM) イベントを監視する方法を説明します。 これらのイベントは、接続しているMongoDBインスタンスまたはクラスターの状態が変更されたときに発生します。
アプリケーション内の SDAM イベントに関する情報を使用して、クラスターの変更を理解し、クラスターの健全性を評価したり、キャパシティープランニングを実行したりできます。
イベントにサブスクライブ
SDAM イベントは、アプリケーションでサブスクライブすることで、その詳細にアクセスできます。 イベントをサブスクライブするには、サブスクライブする各イベントタイプを処理するための APM(Application Performance Monitoring)コールバック関数を定義します。 mongoc_apm_callbacks_tオブジェクトを mongoc_client_set_apm_callbacks() 関数に渡して、クライアントで APM コールバックのリストを登録します。
このコードは、次のアクションを実行してサーバーオープン イベントを監視します。
server_opening()APMコールバック関数を定義しますコールバックを保存するための
mongoc_apm_callbacks_tオブジェクトを作成します提供された APMコールバック関数へのポインターを
mongoc_apm_callbacks_tオブジェクトに保存するmongoc_apm_set_server_opening_cb()関数を呼び出しますクライアントとともに
mongoc_apm_callbacks_tオブジェクトにコールバックを登録するmongoc_client_set_apm_callbacks()関数を呼び出します
<stdio.h> <bson/bson.h> <mongoc/mongoc.h>
typedef struct { int server_opening_events;} stats_t;
static voidserver_opening(const mongoc_apm_server_opening_t *event){ stats_t *stats = (stats_t *) mongoc_apm_server_opening_get_context(event); stats->server_opening_events += 1;
printf("Server opening: %s\n", mongoc_apm_server_opening_get_host(event)->host_and_port);}
intmain(void){ mongoc_init();
stats_t stats = {0};
mongoc_client_t *client = mongoc_client_new("<connection string URI>"); { mongoc_apm_callbacks_t *cbs = mongoc_apm_callbacks_new(); mongoc_apm_set_server_opening_cb(cbs, server_opening); mongoc_client_set_apm_callbacks(client, cbs, &stats); mongoc_apm_callbacks_destroy(cbs); }
// Perform database operations
mongoc_client_destroy(client);
printf("Observed %d server opening events\n", stats.server_opening_events);
mongoc_cleanup();
return EXIT_SUCCESS;}データベース操作 を実行すると、ドライバーはサーバーへの新しい接続を確立し、サブスクライブはサーバーを開くイベントを記録します。 このコードでは、次のようなメッセージが出力されます。
Server opening: <host>:<port number>イベントの説明
対応する APMコールバック関数を定義することで、SDAM イベントをサブスクライブできます。 次の表は、各 SDAMイベントの名前、タイプのAPIドキュメントへのリンク、イベントが公開されるタイミングを説明したものです。
eventType | 説明 |
|---|---|
サーバーのタイプがセカンダリからプライマリに変わるなど、サーバーの説明が変更されたときに作成されます。 | |
新しいサーバーがトポロジーに追加されたときに作成されます。この SDAM イベントをサブスクライブするアプリケーションの例については、このページの「イベントのサブスクライブを参照してください。 | |
既存のサーバーがトポロジーから削除されたときに作成されます。 | |
新しいプライマリの選挙など、トポロジーの説明が変更されたときに作成されます。 | |
ドライバーが最初にクラスターに接続したときに作成されます。 | |
ドライバーがクラスターから切断されたときに作成されます。 | |
サーバーモニターがサーバー に | |
ハートビートが成功したときに作成されます。 | |
ハートビートが失敗したときに作成されます。 |
各モニタリング サブスクライブのタイプとイベントメソッドに関する情報は、 APIドキュメントのアプリケーション パフォーマンス モニタリングセクションを参照してください。
API ドキュメント
このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。