개요
이 가이드 에서는 MongoDB C++ 드라이버 에서 모니터링 설정하다 하고 구성하는 방법을 학습 수 있습니다.
모니터링에는 애플리케이션 성능 관리 라이브러리와 함께 사용할 수 있는 실행 프로그램의 활동에 대한 정보를 수집하는 작업이 포함됩니다.
C++ 운전자 모니터링하면 드라이버의 리소스 사용량 및 성능을 파악할 수 있습니다. 이 정보는 애플리케이션 설계하고 디버깅할 때 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다.
이 가이드 다음 작업을 수행하는 방법을 보여줍니다.
팁
이 가이드 코드에서 운전자 의 활동에 대한 정보를 사용하는 방법을 설명합니다. 운전자 에서 이벤트를 기록 방법을 학습 드라이버 이벤트 로그 가이드 참조하세요.
명령 이벤트 모니터링
C++ 운전자 클라이언트 데이터베이스 명령 실행할 때 명령 이벤트를 생성합니다. 예시 를 들어 find, insert, delete 및 count 명령은 명령 이벤트를 생성합니다. 이러한 명령은 드라이버의 표준 만들기, 읽기, 업데이트 또는 삭제 작업을 실행 하거나 데이터베이스 명령을 직접 사용하여 시작할 수 있습니다.
팁
데이터베이스 명령에 대해 자세히 학습 명령 실행 가이드 참조하세요.
애플리케이션 에서 명령 이벤트를 구독 하면 명령 이벤트에 대한 세부 정보 액세스 할 수 있습니다. 명령 이벤트 구독 하려면 mongocxx::options::apm 객체 만들어 애플리케이션 성능 모니터링(APM) 구성을 저장 . 그런 다음 mongocxx::client 객체 에 옵션을 전달합니다. mongocxx::options::apm 객체 에서 다음 메서드를 호출하여 명령 모니터링 동작을 설정하다 .
메서드 | 설명 |
|---|---|
| 명령이 시작될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다.
|
| 명령이 성공하지 못할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
| 명령이 성공할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
다음 코드는 다음 조치를 수행하여 명령 시작 이벤트를 모니터링합니다.
mongocxx::options::apm객체 에서on_command_started()메서드를 호출합니다.각 명령의 이름과 요청 ID 출력하는 콜백
on_command_started()에 전달합니다.다음 옵션을 사용하여 클라이언트 구성합니다.
1 2 3 4 5 6 7 int 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)
서버 검색 및 모니터링(SDAM) 이벤트 모니터링
C++ 운전자 연결한 인스턴스 또는 클러스터 의 상태 가 변경될 때 토폴로지 이벤트(SDAM 이벤트라고도 함)를 생성합니다. 예시 를 들어, 운전자 사용자가 새 연결을 설정하거나 클러스터 새 프라이머리 노드 선택할 때 이벤트 생성합니다.
토폴로지 이벤트에 대해 자세히 학습 서버 매뉴얼의 복제 가이드 참조하세요.
애플리케이션 에서 SDAM 이벤트를 구독 하면 해당 이벤트에 대한 세부 정보 액세스 할 수 있습니다. SDAM 이벤트 구독 하려면 APM 구성을 저장 mongocxx::options::apm 객체 만듭니다. 그런 다음 mongocxx::client 객체 에 옵션을 전달합니다. mongocxx::options::apm 객체 에서 다음 메서드를 호출하여 SDAM 모니터링 동작을 설정하다 .
메서드 | 설명 |
|---|---|
| 서버 설명이 변경될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
| 토폴로지 에 새 서버 추가될 때 클라이언트 응답하는 방법을 지정하여 토폴로지를 생성합니다. |
| 서버 토폴로지 에서 제거될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
| 토폴로지 설명이 변경될 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
| 운전자 클러스터 에 처음 연결할 때 클라이언트 응답하는 방법을 지정합니다. |
| 운전자 클러스터 에서 연결이 끊길 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
| 다음을 생성하는 서버 로 하트비트가 전송될 때 클라이언트 응답하는 방법을 지정합니다. |
| 하트비트가 성공할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
| 하트비트가 실패할 때 클라이언트 응답하는 방법을 지정하여 다음을 생성합니다. |
다음 코드는 다음 조치를 수행하여 서버 열기 이벤트를 모니터링합니다.
mongocxx::options::apm객체 에서on_server_opening()메서드를 호출합니다.각 서버의 호스팅하다 와 포트를 출력하는
on_server_opening()에 콜백 전달합니다.다음 옵션을 사용하여 클라이언트 구성합니다.
1 2 3 4 5 6 7 int 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 문서 링크를 제공하며, 이벤트 게시되는 시기를 설명합니다.
이벤트 핸들러 클래스 | 설명 |
|---|---|
명령이 시작될 때 생성됩니다. | |
명령이 성공하면 생성됩니다. | |
명령이 실패할 때 생성됩니다. | |
서버 유형이 세컨더리 에서 프라이머리 로 변경되는 경우와 같이 서버 설명이 변경될 때 생성됩니다. | |
새 서버 가 토폴로지 에 추가될 때 생성됩니다. | |
토폴로지 에서 기존 서버 가 제거될 때 생성됩니다. | |
새 프라이머리 투표 가 있는 경우와 같이 토폴로지 설명이 변경될 때 생성됩니다. | |
운전자 가 클러스터 에 처음 연결할 때 생성됩니다. | |
운전자 가 클러스터 에서 연결 해제될 때 생성됩니다. | |
서버 모니터 가 서버 에 | |
하트비트가 성공할 때 생성됩니다. | |
하트비트가 실패할 때 생성됩니다. |
각 모니터링 구독자 유형 및 이벤트 메서드에 대한 정보는 API 문서의 애플리케이션 성능 모니터링 섹션에서 확인할 수 있습니다.
API 문서
이 가이드 에 설명된 클래스 및 메서드에 대해 자세히 학습 다음 API 설명서를 참조하세요.