OpenTelemetry C++ package SDK client
Le package SDK client OpenTelemetry C++ est un exportateur OpenTelemetry OTLP pour C++. Ce package vous aide à intégrer l'instrumentation OpenTelemetry dans vos applications. Les données peuvent ensuite être envoyées à Instana via le protocole OTLP. Le package est généré sur Opentelemetry-cpp.
Systèmes d'exploitation pris en charge
- Linux: Ubuntu 20.04 (GCC 9.4.0) (64 bits)
- Windows : Windows Server 2016 (Visual Studio Enterprise 2019) (32 bits et 64 bits)
Prérequis
Vérifiez que les prérequis suivants sont remplis:
- Linux:
GNU Compiler Collection (GCC) 9.4.0 ou version ultérieure est installé.
Git, Python 3 et Perl sont installés.
vcpkg est installé en exécutant la commande suivante:
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 plateformes :
- Le compilateur MSVC ou MinGW avec CMake est installé.
- CMake ou Visual studio 2019 est installé.
- Pour installer CMake, rendez-vous sur le site officiel de CMake et téléchargez le programme d'installation « Windows » correspondant à la dernière version stable de CMake. Choisissez la version appropriée pour votre système, 32 bits ou 64 bits.
- Pour installer Visual Studio 2019, rendez-vous sur la page de téléchargement de Visual Studio et téléchargez le programme d'installation de Visual Studio Windows. Exécutez le programme d'installation que vous avez téléchargé. Au cours du processus d'installation, vous devez sélectionner des charges de travail, qui sont un ensemble d'outils et de composants pour des scénarios de développement spécifiques. Si vous installez le compilateur MSVC, sélectionnez la charge de travail « Développement d'applications de bureau avec l' C++ ».
- vcpkg est installé en exécutant les commandes suivantes:
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
Installation du package
Pour installer le package, téléchargez le fichier de package, puis extrayez-le dans un répertoire local.
- Linux : Téléchargez le fichier opentelemetry-cpp-1.9.1-gcc9.4.0-ubuntu20.04_x64.tar.gz, puis extrayez-le en exécutant la commande suivante :
tar xzf opentelemetry-cpp-1.9.1-gcc9.4.0-ubuntu20.04_x64.tar.gz
- Windows (64 bits) : Téléchargez le fichier opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip, puis extrayez-le en exécutant la commande suivante :
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip
- Windows (32 bits) : Téléchargez le fichier opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip, puis extrayez-le en exécutant la commande suivante :
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip
Vérification de l'installation
Suivez les étapes suivantes pour vérifier si le package SDK client OpenTelemetry C++ fonctionne sur votre machine hôte :
Téléchargez les exemples OpenTelemetry .
Téléchargez les fichiers
grpc_main.cchttp_main.ccet à partir de l'exemple Opentelemetry-cpp OTeL. Sauvegardez-les ensuite dans le répertoireotlp.Téléchargez les fichiers
foo_library.ccfoo_libary.het à partir de l'exemple foo_library d'Opentelemetry-cpp. Sauvegardez-les ensuite dans le répertoireotlp/foo_library.
Créez un fichier
CMakeLists.txtdans le répertoireotlp.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)
Générez ces exemples OpenTelemetry que vous avez téléchargés à l'étape 1 en exécutant les commandes suivantes:
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 .
Testez ces exemples OpenTelemetry en procédant comme suit:
Installez l'agent hôte d' Instana.
Configurez l'agent d' Instana s pour qu'il reçoive les données d' OTLP.
Sur la même machine hôte, envoyez les données d' OTLP s à l'agent hôte en exécutant l'une des commandes suivantes :
example_otlp_grpc localhost:4317example_otlp_http localhost:4318/v1/tracesSi vous voyez un message d'erreur, consultez le journal de l'agent hôte.