OpenTelemetry C++-Client-SDK-Paket

Das OpenTelemetry C++ Client SDK-Paket ist ein OpenTelemetry OTLP-Exporter für C++. Dieses Paket hilft Ihnen, OpenTelemetry Instrumentierung in Ihre Anwendungen einzubinden. Anschließend können die Daten über das OTLP-Protokoll an Instana gesendet werden. Das Paket ist auf Opentelemetry-cpp aufgebaut.

Unterstützte Betriebssysteme

  • Linux : Ubuntu 20.04 (GCC 9.4.0 ) (64-bit)
  • Windows: Windows Server 2016 (Visual Studio Enterprise 2019) (32-Bit und 64-Bit)

Voraussetzungen

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Linux:
    • GNU Compiler Collection (GCC) 9.4.0 oder höher ist installiert.

    • Git, Python 3, und Perl installiert sind.

    • vcpkg wird durch Ausführen des folgenden Befehls installiert:

      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-Plattformen:
    • MSVC oder MinGW Compiler mit CMake ist installiert.
    • CMake oder Visual Studio 2019 ist installiert.
      • Um CMake zu installieren, besuchen Sie die offizielle CMake-Website und laden Sie den Windows-Installer für die neueste stabile Version von CMake herunter. Wählen Sie die für Ihr System geeignete Version, entweder 32-Bit oder 64-Bit.
      • Um Visual Studio 2019 zu installieren, gehen Sie zur Visual Studio-Downloadseite und laden Sie das Visual Studio Windows-Installationsprogramm herunter. Starten Sie das Installationsprogramm, das Sie heruntergeladen haben. Während des Installationsprozesses müssen Sie Workloads auswählen, d. h. eine Reihe von Tools und Komponenten für bestimmte Entwicklungsszenarien. Wenn Sie den MSVC-Compiler installieren, wählen Sie die Arbeitslast Desktop-Entwicklung mit C++.
    • vcpkg wird durch Ausführen der folgenden Befehle installiert:
      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
      
Hinweis: Um eine C++-Arbeitsumgebung zu erstellen, benötigen Sie ein C++-Bibliotheksverwaltungssystem wie Vcpkg.

Paket installieren

Um das Paket zu installieren, laden Sie die Paketdatei herunter und entpacken Sie sie in ein lokales Verzeichnis.

tar xzf opentelemetry-cpp-1.9.1-gcc9.4.0-ubuntu20.04_x64.tar.gz
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x86.zip

Installation überprüfen

Führen Sie die folgenden Schritte aus, um zu überprüfen, ob das OpenTelemetry C++ Client SDK-Paket auf Ihrem Host-Rechner funktioniert:

  1. Laden Sie die Beispiele von OpenTelemetry herunter.

    1. Laden Sie die Dateien grpc_main.cc und http_main.cc von Opentelemetry-cpp Beispiel OTeL herunter. Speichern Sie sie dann im Verzeichnis otlp .

    2. Laden Sie die Dateien foo_library.cc und foo_libary.h von Opentelemetry-cpp example foo_library herunter. Speichern Sie sie dann im Verzeichnis otlp/foo_library .

  2. Erstellen Sie eine Datei CMakeLists.txt im Verzeichnis otlp .

    • 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)
      
  3. Erstellen Sie die OpenTelemetry Beispiele, die Sie in Schritt 1 heruntergeladen haben, indem Sie die folgenden Befehle ausführen:

    • 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 .
      
  4. Testen Sie diese OpenTelemetry Beispiele, indem Sie die folgenden Schritte ausführen:

    1. Installieren Sie den Instana-Host-Agenten.

    2. Konfigurieren Sie den Instana-Agenten für den Empfang von OTLP-Daten.

    3. Senden Sie auf demselben Host-Rechner die OTLP-Daten an den Host-Agenten, indem Sie einen der folgenden Befehle ausführen:

      example_otlp_grpc localhost:4317
      
      example_otlp_http localhost:4318/v1/traces
      
    4. Wenn Sie eine Fehlermeldung sehen, überprüfen Sie das Host-Agent-Protokoll.