在使用可观测链路 OpenTelemetry 版控制台追踪应用的链路数据之前,需要通过客户端将应用数据上报至可观测链路 OpenTelemetry 版。本文介绍如何通过OpenTelemetry客户端上报C++应用数据。
前提条件
获取接入点信息
- 登录可观测链路 OpenTelemetry 版控制台。
- 在左侧导航栏单击集群配置,然后在右侧页面单击接入点信息页签。
- 在页面顶部选择需要接入的地域,然后在集群信息区域打开显示Token开关。
- 在客户端采集工具区域单击OpenTelemetry。在下方表格的相关信息列中,获取接入点信息。说明 如果应用部署于阿里云生产环境,则选择阿里云VPC网络接入点,否则选择公网接入点。
示例Demo
示例代码仓库地址:opentelemetry-cpp-demo
环境要求
请在Supported C++ Versions and Development Platforms中查看支持的C++版本和开发平台。
步骤一:下载并编译Opentelemetry C++
- 执行以下命令下载Opentelemetry C++。
git clone --recurse-submodules https://github.com/open-telemetry/opentelemetry-cpp
说明 如果子module下载失败,执行以下命令:cd opentelemetry-cpp git submodule update --init
- 执行以下命令编译并构建Opentelemetry C++。
cd opentelemetry-cpp
mkdir build && cd build && cmake -DCMAKE_CXX_STANDARD=14 -DBUILD_TESTING=OFF -DWITH_OTLP=ON -DWITH_OTLP_HTTP=ON ..
cmake --build . --target all
cmake --install . --prefix </path/to/opentelemetry-cpp-lib> # 请替换</path/to/opentelemetry-cpp-lib>,构建好的cmake targets会保存在该路径。
步骤二:上报数据
方法一:通过gRPC协议上报数据(otel-grpc-export-demo)
- 修改Demo项目CMakeLists中的内容。
- 请将
<your-cmake-version>
替换为您的cmake版本。 - 请将
</path/to/opentelemetry-cpp-lib>
替换为构建Opentelemetry C++的路径。
cmake_minimum_required(VERSION <your-cmake-version>) project(otel-grpc-export-demo) set(CMAKE_CXX_STANDARD 14) add_executable(otel-grpc-export-demo grpc_exporter.cc) # 关键内容 find_package(</path/to/opentelemetry-cpp-lib>/lib/cmake/opentelemetry-cpp/opentelemetry-cpp CONFIG REQUIRED) find_package(</path/to/opentelemetry-cpp-lib>/lib/cmake/nlohmann_json/nlohmann_json CONFIG REQUIRED) find_package(protobuf REQUIRED) find_package(gRPC REQUIRED) find_package(CURL REQUIRED) target_include_directories(otel-grpc-export-demo PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(otel-grpc-export-demo PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES}) # 关键内容
- 请将
- 修改grpc_exporter.cc文件,替换文件中的以下内容。
- 请将
<gRPC-endpoint>
和<gRPC-token>
替换为前提条件中获取的接入点信息。 - 请将
<your-service-name>
替换为您的应用名。 - 请将
<your-host-name>
替换为您的主机名。
- 请将
- 编译Demo项目。
mkdir build && cd build && cmake .. && make
- 运行Demo项目。
./otel-grpc-export-demo
方法二:通过HTTP协议上报数据(otel-http-export-demo)
- 修改Demo项目CMakeLists中的内容。
- 请替换
<your-cmake-version>
为您的cmake版本。 - 请替换
</path/to/opentelemetry-cpp-lib>
为构建Opentelemetry C++的路径。
cmake_minimum_required(VERSION <your-cmake-version>) project(otel-http-export-demo) set(CMAKE_CXX_STANDARD 14) add_executable(otel-http-export-demo http_exporter.cc) # 关键内容 find_package(</path/to/opentelemetry-cpp-lib>/lib/cmake/opentelemetry-cpp/opentelemetry-cpp CONFIG REQUIRED) find_package(</path/to/opentelemetry-cpp-lib>/lib/cmake/nlohmann_json/nlohmann_json CONFIG REQUIRED) find_package(protobuf REQUIRED) find_package(gRPC REQUIRED) find_package(CURL REQUIRED) target_include_directories(otel-http-export-demo PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(otel-http-export-demo PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES}) # 关键内容
- 请替换
- 修改http_exporter.cc文件,替换文件中的以下内容。
- 请将
<http-endpoint>
替换为前提条件中获取的接入点信息。 - 请将
<your-service-name>
替换为您的应用名。 - 请将
<your-host-name>
替换为您的主机名。
- 请将
- 编译Demo项目。
mkdir build && cd build && cmake .. && make
- 运行Demo项目。
./otel-http-export-demo
查看监控数据
登录ARMS控制台后,在 页面选择目标应用,查看链路数据。
说明 语言列显示
图标的应用为接入应用监控的应用,显示-图标的应用为接入可观测链路 OpenTelemetry 版的应用。
