OpenTelemetry C++ 客户端 SDK 软件包
OpenTelemetry C++ 客户端 SDK 软件包是用于 C++ 的 OpenTelemetry OTLP 输出程序。该软件包可帮助您在应用程序中加入 OpenTelemetry 仪器。 然后,数据就可以通过 OTLP 协议发送到 Instana。 该软件包基于 Opentelemetry-cpp 开发。
受支持的操作系统
- Linux : Ubuntu 20.04 (GCC 9.4.0 ) (64 位)
- WindowsWindows Server 2016(Visual Studio Enterprise 2019)(32 位和 64 位)
先决条件
检查是否满足以下前提条件:
- Linux:
已安装 GNU Compiler Collection (GCC) 9.4.0 或更高版本。
Git 安装了 Python 3 和 Perl。
运行以下命令即可安装 vcpkg:
git clone https://github.com/Microsoft/vcpkg.git ./vcpkg/bootstrap-vcpkg.sh ./vcpkg/vcpkg install abseil ./vcpkg/vcpkg install c-ares ./vcpkg/vcpkg install curl[non-http,openssl,ssl] ./vcpkg/vcpkg install grpc[codegen]
- Windows 平台:
- 已安装带有 CMake 的 MSVC 或 MinGW 编译器。
- 已安装 CMake 或 Visual studio 2019。
- 要安装 CMake,请访问 CMake 官方网站 ,下载最新稳定版 CMake 的 Windows 安装程序。 为你的系统选择合适的版本,32 位或 64 位。
- 要安装 Visual Studio 2019,请访问 Visual Studio 下载页面并下载 Visual Studio Windows 安装程序。 运行下载的安装程序。 在安装过程中,您必须选择工作负载,这是一组用于特定开发场景的工具和组件。 如果安装了 MSVC 编译器,请选择使用 C++ 的桌面开发工作量。
- 运行以下命令即可安装 vcpkg:
git clone https://github.com/Microsoft/vcpkg.git .\vcpkg\bootstrap-vcpkg.cmd .\vcpkg.exe integrate .\vcpkg.exe install abseil .\vcpkg.exe install c-ares .\vcpkg.exe install curl .\vcpkg.exe install grpc
注: 要建立一个 C++ 工作环境,需要一个 C++ 库管理系统,如 Vcpkg。
安装软件包
要安装软件包,请下载软件包文件,然后解压到本地目录。
- Linux :下载 opentelemetry-cpp-1.9.1-gcc9.4.0-ubuntu20.04_x64.tar.gz 文件,并通过运行以下命令解压该文件:
tar xzf opentelemetry-cpp-1.9.1-gcc9.4.0-ubuntu20.04_x64.tar.gz
- 视窗(64 位):下载 opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip 文件,并通过运行以下命令解压该文件:
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip
- 视窗(32 位):下载 opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip 文件,并通过运行以下命令解压该文件:
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip
验证安装
完成以下步骤,验证 OpenTelemetry C++ 客户端 SDK 软件包是否能在主机上运行:
下载 OpenTelemetry 示例。
从 Opentelemetry-cpp 示例 OTeL 下载
grpc_main.cc和http_main.cc文件。 然后将它们保存到otlp目录中。从 Opentelemetry-cpp 示例 foo_library 下载
foo_library.cc和foo_libary.h文件。 然后将它们保存到otlp/foo_library目录中。
在
otlp目录中创建CMakeLists.txt文件。Linux:
cmake_minimum_required(VERSION 3.12.0) project(sample) set(CMAKE_CXX_STANDARD 14) set(OTEL_CPP_DIR "/opt/otel-cppclient/opentelemetry-cpp_x64-linux") set(OTEL_LIBS_PATH "${OTEL_CPP_DIR}/lib") set(VCPKGL_LIBS_PATH "<path to vcpkg>/installed/x64-linux/lib") include_directories("${OTEL_CPP_DIR}/include") find_package(absl REQUIRED) find_package(Protobuf CONFIG REQUIRED) find_package(CURL REQUIRED) find_package(gRPC REQUIRED) # HTTP add_executable(otel_http_sample http_main.cc "foo_library/foo_library.cc" ) target_link_libraries(otel_http_sample -pthread ${OTEL_LIBS_PATH}/libopentelemetry_trace.a ${OTEL_LIBS_PATH}/libopentelemetry_proto.a ${OTEL_LIBS_PATH}/libopentelemetry_http_client_curl.a ${OTEL_LIBS_PATH}/libopentelemetry_exporter_otlp_http.a ${OTEL_LIBS_PATH}/libopentelemetry_exporter_otlp_http_client.a ${OTEL_LIBS_PATH}/libopentelemetry_logs.a ${OTEL_LIBS_PATH}/libopentelemetry_otlp_recordable.a ${OTEL_LIBS_PATH}/libopentelemetry_common.a ${OTEL_LIBS_PATH}/libopentelemetry_trace.a ${OTEL_LIBS_PATH}/libopentelemetry_resources.a ${VCPKGL_LIBS_PATH}/libprotobuf.a ${VCPKGL_LIBS_PATH}/libcurl.a ${VCPKGL_LIBS_PATH}/libssl.a ${VCPKGL_LIBS_PATH}/libcrypto.a -lpthread -ldl ${VCPKGL_LIBS_PATH}/libz.a ) # GRPC add_executable(otel_grpc_sample grpc_main.cc "foo_library/foo_library.cc" ) target_link_libraries(otel_grpc_sample -pthread ${OTEL_LIBS_PATH}/libopentelemetry_trace.a ${OTEL_LIBS_PATH}/libopentelemetry_exporter_otlp_grpc.a -pthread ${OTEL_LIBS_PATH}/libopentelemetry_otlp_recordable.a ${OTEL_LIBS_PATH}/libopentelemetry_trace.a ${OTEL_LIBS_PATH}/libopentelemetry_logs.a ${OTEL_LIBS_PATH}/libopentelemetry_resources.a ${OTEL_LIBS_PATH}/libopentelemetry_metrics.a ${OTEL_LIBS_PATH}/libopentelemetry_common.a ${OTEL_LIBS_PATH}/libopentelemetry_exporter_otlp_grpc_client.a ${OTEL_LIBS_PATH}/libopentelemetry_proto.a ) target_link_libraries(otel_grpc_sample absl::flat_hash_map absl::strings absl::str_format) target_link_libraries(otel_grpc_sample gRPC::gpr gRPC::grpc gRPC::grpc++ gRPC::grpc++_alts)Windows:
cmake_minimum_required(VERSION 3.12.0) project(otel_sample) set(CMAKE_CXX_STANDARD 14) set(OTEL_CPP_DIR "C:/otel-cppclient/opentelemetry-cpp_x64-windows") set(OTEL_LIBS_PATH "${OTEL_CPP_DIR}/lib") set(CMAKE_TOOLCHAIN_FILE "<path to vcpkg>/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") include_directories("${OTEL_CPP_DIR}/include") find_package(absl REQUIRED) find_package(protobuf CONFIG REQUIRED) find_package(CURL REQUIRED) find_package(gRPC REQUIRED) # HTTP add_executable(otel_http_sample http_main.cc "foo_library/foo_library.cc" ) target_link_libraries(otel_http_sample ${OTEL_LIBS_PATH}/opentelemetry_proto.lib ${OTEL_LIBS_PATH}/opentelemetry_http_client_curl.lib ${OTEL_LIBS_PATH}/opentelemetry_exporter_otlp_http.lib ${OTEL_LIBS_PATH}/opentelemetry_exporter_otlp_http_client.lib ${OTEL_LIBS_PATH}/opentelemetry_logs.lib ${OTEL_LIBS_PATH}/opentelemetry_otlp_recordable.lib ${OTEL_LIBS_PATH}/opentelemetry_common.lib ${OTEL_LIBS_PATH}/opentelemetry_trace.lib ${OTEL_LIBS_PATH}/opentelemetry_resources.lib ) target_link_libraries(otel_http_sample absl::flat_hash_map absl::strings absl::str_format) target_link_libraries(otel_http_sample CURL::libcurl) target_link_libraries(otel_http_sample protobuf::libprotobuf) # GRPC add_executable(otel_grpc_sample grpc_main.cc "foo_library/foo_library.cc" ) target_link_libraries(otel_grpc_sample ${OTEL_LIBS_PATH}/opentelemetry_proto.lib ${OTEL_LIBS_PATH}/opentelemetry_proto_grpc.lib ${OTEL_LIBS_PATH}/opentelemetry_exporter_otlp_grpc.lib ${OTEL_LIBS_PATH}/opentelemetry_exporter_otlp_grpc_client.lib ${OTEL_LIBS_PATH}/opentelemetry_logs.lib ${OTEL_LIBS_PATH}/opentelemetry_otlp_recordable.lib ${OTEL_LIBS_PATH}/opentelemetry_common.lib ${OTEL_LIBS_PATH}/opentelemetry_trace.lib ${OTEL_LIBS_PATH}/opentelemetry_resources.lib ) target_link_libraries(otel_grpc_sample absl::flat_hash_map absl::strings absl::str_format) target_link_libraries(otel_grpc_sample gRPC::gpr gRPC::grpc gRPC::grpc++ gRPC::grpc++_alts)
运行以下命令,生成在步骤 1 中下载的 OpenTelemetry 示例:
Linux:
cd otlp mkdir build cd ./build/ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_VERBOSE_MAKEFILE=ON -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=<path to vcpkg>/scripts/toolchains/linux.cmake -DCMAKE_TOOLCHAIN_FILE=<path to vcpkg>/scripts/buildsystems/vcpkg.cmake cmake --build .Windows:
cd otlp mkdir build cd .\build\ cmake .. -DCMAKE_TOOLCHAIN_FILE="<path to vcpkg>/scripts/buildsystems/vcpkg.cmake" cmake --build .
完成以下步骤,测试这些 OpenTelemetry 示例:
安装 Instana 主机代理。
在同一台主机上,运行以下任一命令,将 OTLP 数据发送到主机代理:
example_otlp_grpc localhost:4317example_otlp_http localhost:4318/v1/traces如果看到任何错误信息,请检查主机代理日志。