安裝 OTel C++ 用戶端 SDK 套件
OTel C++ Client SDK 套件是適用於 C++ 的 OpenTelemetry OTLP 匯出程式。 此套件可協助您在應用程式中包括 OpenTelemetry Instrumentation。 然後,可以透過 OTLP 通訊協定將資料傳送至 Instana。 套件以 Opentelemetry-cpp為建置基礎。
支援的作業系統
- Linux: Ubuntu 20.04 (GCC 9.4.0) (64 位元)
- Windows: Windows Server 2016 (Visual Studio Enterprise 2019) (32 位元和 64 位元)
必要條件
確保符合下列必要條件:
- Linux:
已安裝 gcc 9.4.0 或更新版本。
已安裝 Git、 Python3及 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 平台:
- 已安裝 msvc 或 mingw 編譯器與 cmake。
- 已安裝 CMake 或 Visual Studio 2019。
- 若要安裝 CMake ,請跳至官方 CMake 網站,並下載 Windows 安裝程式,以取得最新穩定版本的 CMake。 選擇適合您系統的版本 (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
安裝套件
若要安裝套件,請下載套件檔,然後將它解壓縮至本端目錄。
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.gzWindows (64 位元):
下載 opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip 檔案,並執行下列指令來解壓縮該檔案:
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x64.zipWindows (32 位元):
下載 opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip 檔案,並執行下列指令來解壓縮該檔案:
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip
驗證安裝
若要驗證 OTel C++ 用戶端 SDK 套件是否在主機中運作,請遵循下列步驟:
下載 OTel 範例。
從 Opentelemetry-cpp 範例 OTeL下載
grpc_main.cc和http_main.cc檔案。 然後,將它們儲存至otlp目錄。從 Opentelemetry-cpp example 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 中下載的這些 OTel 範例:
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 .
完成下列步驟來測試這些 OTel 範例:
安裝 Instana 主機代理程式。
執行下列任一指令,將 OTLP 資料傳送至相同主機上的主機代理程式:
example_otlp_grpc localhost:4317example_otlp_http localhost:4318/v1/traces如果您看到任何錯誤訊息,請檢查主機代理程式日誌。