C++ 应用接入¶
通过收集 C++ 应用的指标数据,以可视化方式分析应用性能。当前 C++ SDK 支持 Windows 和 Linux 平台。
阅读路径¶
前置条件¶
注意
若您已开通 RUM Headless 服务,前置条件已自动配置完成,可直接接入应用。
- 安装 DataKit;
- 配置 RUM 采集器;
- DataKit 配置为公网可访问,并且安装 IP 地理信息库。
应用接入¶
登录观测云控制台,进入用户访问监测页面,点击左上角 新建应用,即可开始创建一个新的应用。
创建完成后,请记录应用对应的 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 ()
#添加观测云 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 数据冲突,建议标签命名添加 项目缩写 的前缀,例如 df_tag_name。项目中使用的保留 key 可查询源码。
SDK 全局变量中如果出现与 RUM、Log 相同的字段,RUM、Log 中的同名字段会覆盖 SDK 中的全局变量。
如何快速验证是否接入成功¶
建议先按 快速开始 完成最小初始化,开启 enable_sdk_log 调试日志后,手动触发一次 View、Action 或 Log 上报,再到控制台确认数据是否出现。
初始化后没有数据怎么办¶
优先检查以下几项:
setServerUrl配置的 DataKit 地址是否可从当前设备访问setRumAppId是否填写正确- 是否已完成 前置条件 中的 DataKit 与 RUM 采集器配置
- 当前平台是否为 C++ SDK 已支持的 Windows 或 Linux
如仍无法定位问题,请查看 故障排查。
