C++ 애플리케이션 연동¶
C++ 애플리케이션의 메트릭 데이터를 수집하여 시각화된 방식으로 애플리케이션 성능을 분석할 수 있습니다. 현재 C++ SDK는 Windows 및 Linux 플랫폼을 지원합니다.
학습 경로¶
- 처음 연동하는 경우: 빠른 시작을 먼저 확인하세요
- 전체 연동: 이 문서를 계속 읽으세요
- 파라미터 상세: SDK 초기화, RUM 구성, Log 구성, Trace 구성을 확인하세요
- 사용자 정의 기능: 사용자 정의 태그, 사용자 정의 수집 규칙을 확인하세요
- 문제 해결: 문제 해결을 확인하세요
사전 조건¶
주의
RUM Headless 서비스를 이미 활성화한 경우 사전 조건이 자동으로 구성되었으므로 애플리케이션을 직접 연동할 수 있습니다.
- DataKit 설치
- RUM 수집기 구성
- DataKit을 공용 네트워크에서 액세스 가능하도록 구성하고 IP 지리 정보 데이터베이스 설치
애플리케이션 연동¶
Guance 콘솔에 로그인하여 RUM 페이지로 이동한 후 왼쪽 상단의 애플리케이션 생성을 클릭하여 새 애플리케이션을 생성합니다.
생성이 완료되면 애플리케이션에 해당하는 RUM App ID를 기록해 두세요. 추후 FTRUMConfig를 초기화할 때 필요합니다.
설치¶
소스 코드 주소: https://github.com/GuanceCloud/datakit-cpp
Demo 주소: https://github.com/GuanceCloud/datakit-cpp/ft-sdk-sample
git clone https://github.com/microsoft/vcpkg
#apt install ninja-build
#apt install pkg-config
./vcpkg/bootstrap-vcpkg.sh
cd vcpkg
# 사용자 정의 구성 registries 파일 다운로드
curl -o vcpkg-configuration.json https://static.guance.com/ft-sdk-package/vcpkg_config/vcpkg-configuration.json
# arm 64인 경우 VCPKG_FORCE_SYSTEM_BINARIES 추가 필요
#export VCPKG_FORCE_SYSTEM_BINARIES=1
./vcpkg install datakit-sdk-cpp:x64-linux
# 컴파일 환경에서 VCPKG_ROOT 변수 참조
export VCPKG_ROOT= [ your_vcpkg_root_dir ]
CMake 구성 추가
cmake_minimum_required(VERSION 3.0)
project(ft-sdk-reference-sample VERSION 1.0.0 LANGUAGES CXX C)
add_definitions(-fPIC -g -Werror=return-type)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O1 -ftree-vectorize -ffast-math ")
set(CMAKE_CXX_STANDARD 17)
if(DEFINED ENV{VCPKG_ROOT})
if (EXISTS "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
include ("$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
set(VCPKG_CMAKE_SHARE "$ENV{VCPKG_ROOT}/installed/${VCPKG_TARGET_TRIPLET}/share"
CACHE STRING "TEST")
endif ()
else ()
message(STATUS "please set the system environment variable : VCPKG_ROOT" $ENV{VCPKG_ROOT})
endif ()
# Guance SDK 참조 추가
find_path(FT-SDK_INCLUDE_DIR datakit-sdk-cpp/FTSDK.h)
find_library(FT-SDK_LIBRARY ft-sdk "${FT-SDK_INCLUDE_DIR}/../lib/")
include_directories(${FT-SDK_INCLUDE_DIR})
file(GLOB PROJECT_SOURCE "*.cpp")
file(GLOB PROJECT_HEADER "../include/*.h" "*.h")
add_executable (${PROJECT_NAME} ${PROJECT_SOURCE} ${PROJECT_HEADER})
# SDK 링크
target_link_libraries(${PROJECT_NAME} PRIVATE ${FT-SDK_LIBRARY})
헤더 포함¶
초기화 설명¶
최소 초기화 예제는 빠른 시작을 참조하세요.
전체 초기화 및 런타임 기능에 대한 설명은 SDK 초기화를 참조하세요.
세부 구성¶
고급 시나리오¶
자주 묻는 질문¶
전역 변수 추가로 필드 충돌 방지¶
사용자 정의 필드와 SDK 데이터 간의 충돌을 방지하려면 태그 이름에 프로젝트 약어 접두사를 추가하는 것이 좋습니다(예: custom_tag_name). 프로젝트에서 사용되는 예약 key는 소스 코드에서 확인할 수 있습니다.
SDK 전역 변수에 RUM, Log와 동일한 필드가 있는 경우 RUM, Log의 동일한 이름의 필드가 SDK의 전역 변수를 덮어씁니다.
연동 성공 여부를 빠르게 확인하는 방법¶
빠른 시작에 따라 최소 초기화를 완료하고 enable_sdk_log 디버그 로그를 활성화한 후 View, Action 또는 Log 보고를 수동으로 트리거한 다음 콘솔에서 데이터가 나타나는지 확인하는 것이 좋습니다.
초기화 후 데이터가 없으면 어떻게 해야 하나요¶
다음 항목을 먼저 확인하세요:
setServerUrl에 구성된 DataKit 주소를 현재 장치에서 액세스할 수 있는지 확인setRumAppId가 올바르게 입력되었는지 확인- 사전 조건의 DataKit 및 RUM 수집기 구성이 완료되었는지 확인
- 현재 플랫폼이 C++ SDK에서 지원하는 Windows 또는 Linux인지 확인
그래도 문제를 찾을 수 없으면 문제 해결을 참조하세요.
