在使用可观测链路 OpenTelemetry 版控制台追踪应用的链路数据之前,需要通过客户端将应用数据上报至可观测链路 OpenTelemetry 版。本文介绍如何通过OpenTelemetry客户端上报C++应用数据。

前提条件

获取接入点信息
  1. 登录可观测链路 OpenTelemetry 版控制台
  2. 在左侧导航栏单击集群配置,然后在右侧页面单击接入点信息页签。
  3. 在页面顶部选择需要接入的地域,然后在集群信息区域打开显示Token开关。
  4. 客户端采集工具区域单击OpenTelemetry
    在下方表格的相关信息列中,获取接入点信息。OT接入点信息
    说明 如果应用部署于阿里云生产环境,则选择阿里云VPC网络接入点,否则选择公网接入点。

示例Demo

示例代码仓库地址:opentelemetry-cpp-demo

环境要求

请在Supported C++ Versions and Development Platforms中查看支持的C++版本和开发平台。

步骤一:下载并编译Opentelemetry C++

  1. 执行以下命令下载Opentelemetry C++。
    git clone --recurse-submodules https://github.com/open-telemetry/opentelemetry-cpp
    说明 如果子module下载失败,执行以下命令:
    cd opentelemetry-cpp
    git submodule update --init
  2. 执行以下命令编译并构建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)

  1. 修改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})
    # 关键内容
  2. 修改grpc_exporter.cc文件,替换文件中的以下内容。
    • 请将<gRPC-endpoint><gRPC-token>替换为前提条件中获取的接入点信息。
    • 请将<your-service-name>替换为您的应用名。
    • 请将<your-host-name>替换为您的主机名。
  3. 编译Demo项目。
    mkdir build && cd build && cmake .. && make
  4. 运行Demo项目。
    ./otel-grpc-export-demo

方法二:通过HTTP协议上报数据(otel-http-export-demo)

  1. 修改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})
    # 关键内容
  2. 修改http_exporter.cc文件,替换文件中的以下内容。
    • 请将<http-endpoint>替换为前提条件中获取的接入点信息。
    • 请将<your-service-name>替换为您的应用名。
    • 请将<your-host-name>替换为您的主机名。
  3. 编译Demo项目。
    mkdir build && cd build && cmake .. && make
  4. 运行Demo项目。
    ./otel-http-export-demo

查看监控数据

登录ARMS控制台后,在应用监控 > 应用列表页面选择目标应用,查看链路数据。
说明 语言列显示Java图标图标的应用为接入应用监控的应用,显示-图标的应用为接入可观测链路 OpenTelemetry 版的应用。