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
パッケージのインストール
パッケージをインストールするには、パッケージ・ファイルをダウンロードし、ローカル・ディレクトリーに解凍します。
- 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
- Windows (64ビット): ` opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip ` ファイルをダウンロードし、次のコマンドを実行してファイルを解凍してください:
unzip opentelemetry-cpp-1.9.1-vs2019-windows_x64.zip
- Windows (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 )から および
http_main.ccgrpc_main.ccファイルをダウンロードしてください。 その後、それらをotlpディレクトリーに保存します。Opentelemetry-cpp のサンプル foo_library から および
foo_libary.hfoo_library.ccファイルをダウンロードしてください。 その後、それらを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エラー・メッセージが表示された場合は、ホスト・エージェント・ログを確認してください。