OpenTelemetry C++ クライアントSDKパッケージ

OpenTelemetry C++ クライアント SDK パッケージは、 OpenTelemetry OTLP の C++ 用エクスポーターです。このパッケージを使用すると、アプリケーションに OpenTelemetry の計測機能を組み込むことができます。 その後、データは OTLP プロトコルを介して Instana に送信されます。 このパッケージは、 Opentelemetry-cppに基づいて作成されています。

サポート対象のオペレーティング・システム

  • Linux: Ubuntu 20.04 (GCC 9.4.0) (64 ビット)
  • Windows : Windows 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++ の作業環境を構築するには、 Vcpkg などの C++ ライブラリ管理システムが必要です。

パッケージのインストール

パッケージをインストールするには、パッケージ・ファイルをダウンロードし、ローカル・ディレクトリーに解凍します。

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

インストール済み環境の検証

ホストマシンで OpenTelemetry C++ クライアントSDKパッケージが動作するか確認するには、以下の手順を実行してください:

  1. OpenTelemetry のサンプルをダウンロードします。

    1. Opentelemetry-cpp のサンプル( OTeL )から および http_main.cc grpc_main.cc ファイルをダウンロードしてください。 その後、それらを otlp ディレクトリーに保存します。

    2. Opentelemetry-cpp のサンプル foo_library から および foo_libary.h foo_library.cc ファイルをダウンロードしてください。 その後、それらを otlp/foo_library ディレクトリーに保存します。

  2. 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)
      
  3. 以下のコマンドを実行して、ステップ 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 .
      
  4. 以下のステップを実行して、これらの OpenTelemetry の例をテストします。

    1. Instana のホストエージェントをインストールします。

    2. Instana エージェントを設定し、 OTLP のデータを受信できるようにします

    3. 同じホストマシン上で、次のいずれかのコマンドを実行して、 OTLP のデータをホストエージェントに送信します

      example_otlp_grpc localhost:4317
      
      example_otlp_http localhost:4318/v1/traces
      
    4. エラー・メッセージが表示された場合は、ホスト・エージェント・ログを確認してください。