Docs Menu
Docs Home
/ /

애플리케이션 이벤트 모니터링

이 가이드 에서는 MongoDB C++ 드라이버 에서 모니터링 설정하다 하고 구성하는 방법을 학습 수 있습니다.

모니터링에는 애플리케이션 성능 관리 라이브러리와 함께 사용할 수 있는 실행 프로그램의 활동에 대한 정보를 수집하는 작업이 포함됩니다.

C++ 운전자 모니터링하면 드라이버의 리소스 사용량 및 성능을 파악할 수 있습니다. 이 정보는 애플리케이션 설계하고 디버깅할 때 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다.

이 가이드 다음 작업을 수행하는 방법을 보여줍니다.

  • 명령 이벤트 모니터링

  • 서버 검색 및 모니터링(SDAM) 이벤트 모니터링

이 가이드 코드에서 운전자 의 활동에 대한 정보를 사용하는 방법을 설명합니다. 운전자 에서 이벤트를 기록 방법을 학습 드라이버 이벤트 로그 가이드 참조하세요.

C++ 운전자 클라이언트 데이터베이스 명령 실행할 때 명령 이벤트를 생성합니다. 예시 를 들어 find, insert, deletecount 명령은 명령 이벤트를 생성합니다. 이러한 명령은 드라이버의 표준 만들기, 읽기, 업데이트 또는 삭제 작업을 실행 하거나 데이터베이스 명령을 직접 사용하여 시작할 수 있습니다.

데이터베이스 명령에 대해 자세히 학습 명령 실행 가이드 참조하세요.

애플리케이션 에서 명령 이벤트를 구독 하면 명령 이벤트에 대한 세부 정보 액세스 할 수 있습니다. 명령 이벤트 구독 하려면 mongocxx::options::apm 객체 만들어 애플리케이션 성능 모니터링(APM) 구성을 저장 . 그런 다음 mongocxx::client 객체 에 옵션을 전달합니다. mongocxx::options::apm 객체 에서 다음 메서드를 호출하여 명령 모니터링 동작을 설정하다 .

메서드
설명

on_command_started()

명령이 시작될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::command_started_event

on_command_failed()

명령이 성공하지 못할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::command_failed_event

on_command_succeeded()

명령이 성공할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::command_succeeded_event

다음 코드는 다음 조치를 수행하여 명령 시작 이벤트를 모니터링합니다.

  • mongocxx::options::apm 객체 에서 on_command_started() 메서드를 호출합니다.

  • 각 명령의 이름과 요청 ID 출력하는 콜백 on_command_started() 에 전달합니다.

  • 다음 옵션을 사용하여 클라이언트 구성합니다.

1#include <iostream>
2#include <mongocxx/client.hpp>
3#include <mongocxx/instance.hpp>
4#include <mongocxx/uri.hpp>
5#include <mongocxx/options/apm.hpp>
6
7int main() {
8 mongocxx::instance instance{};
9
10 int command_started_events = 0;
11
12 mongocxx::options::apm apm_opts;
13 apm_opts.on_command_started([&command_started_events](const mongocxx::events::command_started_event& event) {
14 command_started_events++;
15 std::cout << "Command started: " << event.command_name()
16 << " (request_id: " << event.request_id() << ")" << std::endl;
17 });
18
19 mongocxx::uri uri("<connection string URI>");
20 mongocxx::options::client client_opts;
21 client_opts.apm_opts(apm_opts);
22
23 mongocxx::client client{uri, client_opts};
24
25 // Perform database operations
26
27 std::cout << "Observed " << command_started_events << " command started events" << std::endl;
28
29 return 0;
30}

찾기 명령을 실행 하면 코드는 다음 샘플 출력과 유사한 메시지를 인쇄합니다.

Command started: find (request_id: 3)

C++ 운전자 연결한 인스턴스 또는 클러스터 의 상태 가 변경될 때 토폴로지 이벤트(SDAM 이벤트라고도 함)를 생성합니다. 예시 를 들어, 운전자 사용자가 새 연결을 설정하거나 클러스터 새 프라이머리 노드 선택할 때 이벤트 생성합니다.

토폴로지 이벤트에 대해 자세히 학습 서버 매뉴얼의 복제 가이드 참조하세요.

애플리케이션 에서 SDAM 이벤트를 구독 하면 해당 이벤트에 대한 세부 정보 액세스 할 수 있습니다. SDAM 이벤트 구독 하려면 APM 구성을 저장 mongocxx::options::apm 객체 만듭니다. 그런 다음 mongocxx::client 객체 에 옵션을 전달합니다. mongocxx::options::apm 객체 에서 다음 메서드를 호출하여 SDAM 모니터링 동작을 설정하다 .

메서드
설명

on_server_changed()

서버 설명이 변경될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::server_changed_event

on_server_opening()

토폴로지 에 새 서버 추가될 때 클라이언트 응답하는 방법을 지정하여 토폴로지를 생성합니다. mongocxx::events::server_opening_event

on_server_closed()

서버 토폴로지 에서 제거될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::server_closed_event

on_topology_changed()

토폴로지 설명이 변경될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::topology_changed_event

on_topology_opening()

운전자 클러스터 에 처음 연결할 때 클라이언트 응답하는 방법을 지정합니다. mongocxx::events::topology_opening_event

on_topology_closed()

운전자 클러스터 에서 연결이 끊길 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::topology_closed_event

on_heartbeat_started()

다음을 생성하는 서버 로 하트비트가 전송될 때 클라이언트 응답하는 방법을 지정합니다. mongocxx::events::heartbeat_started_event

on_heartbeat_succeeded()

하트비트가 성공할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::heartbeat_succeeded_event

on_heartbeat_failed()

하트비트가 실패할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. mongocxx::events::heartbeat_failed_event

다음 코드는 다음 조치를 수행하여 서버 열기 이벤트를 모니터링합니다.

  • mongocxx::options::apm 객체 에서 on_server_opening() 메서드를 호출합니다.

  • 각 서버의 호스팅하다 와 포트를 출력하는 on_server_opening() 에 콜백 전달합니다.

  • 다음 옵션을 사용하여 클라이언트 구성합니다.

1#include <iostream>
2#include <mongocxx/client.hpp>
3#include <mongocxx/instance.hpp>
4#include <mongocxx/uri.hpp>
5#include <mongocxx/options/apm.hpp>
6
7int main() {
8 mongocxx::instance instance{};
9
10 int server_opening_events = 0;
11
12 mongocxx::options::apm apm_opts;
13 apm_opts.on_server_opening([&server_opening_events](const mongocxx::events::server_opening_event& event) {
14 server_opening_events++;
15 std::cout << "Server opening: " << event.host() << ":" << event.port() << std::endl;
16 });
17
18 mongocxx::uri uri("<connection string URI>");
19 mongocxx::options::client client_opts;
20 client_opts.apm_opts(apm_opts);
21
22 mongocxx::client client{uri, client_opts};
23
24 // Perform database operations
25
26 std::cout << "Observed " << server_opening_events << " server opening events" << std::endl;
27
28 return 0;
29}

데이터베이스 작업을 수행하면 운전자 서버 에 대한 새 연결을 설정하고 구독자는 서버 열기 이벤트 기록합니다. 이 코드는 다음과 유사한 메시지를 출력합니다.

Server opening: <host>:<port number>

이벤트 클래스 객체 매개변수로 허용하는 콜백 함수를 만들어 모니터링 이벤트를 구독 할 수 있습니다. 다음 표에서는 각 이벤트 클래스의 이름과 해당 유형의 API 문서 링크를 제공하며, 이벤트 게시되는 시기를 설명합니다.

이벤트 핸들러 클래스
설명

명령이 시작될 때 생성됩니다.

명령이 성공하면 생성됩니다.

명령이 실패할 때 생성됩니다.

서버 유형이 세컨더리 에서 프라이머리 로 변경되는 경우와 같이 서버 설명이 변경될 때 생성됩니다.

새 서버 가 토폴로지 에 추가될 때 생성됩니다.

토폴로지 에서 기존 서버 가 제거될 때 생성됩니다.

새 프라이머리 투표 가 있는 경우와 같이 토폴로지 설명이 변경될 때 생성됩니다.

운전자 가 클러스터 에 처음 연결할 때 생성됩니다.

운전자 가 클러스터 에서 연결 해제될 때 생성됩니다.

서버 모니터 가 서버 에 hello 명령을 보낼 때 생성됩니다. 이 조치 을 하트비트라고 합니다.

하트비트가 성공할 때 생성됩니다.

하트비트가 실패할 때 생성됩니다.

각 모니터링 구독자 유형 및 이벤트 메서드에 대한 정보는 API 문서의 애플리케이션 성능 모니터링 섹션에서 확인할 수 있습니다.

이 가이드 에 설명된 클래스 및 메서드에 대해 자세히 학습 다음 API 설명서를 참조하세요.

돌아가기

로깅

이 페이지의 내용