注: C++ は自動インスツルメンテーションのインテグレーションを提供していませんが、
Envoy や
Nginx などの Proxy トレースで使用されています。
互換性要件
C++ トレーシングライブラリのビルドには、C++17 ツールチェーンが必要です。Datadog のトレーシングライブラリの互換性要件とプロセッサアーキテクチャのサポートについては、互換性要件ページを参照してください。
はじめに
作業を始める前に、Agent のインストールと構成が済んでいることを確認してください。
アプリケーションをインスツルメントする
以下は dd-trace-cpp
のテストに使用できるアプリケーションの例です。
このアプリケーションはデフォルトの設定でトレーサーインスタンスを作成し、2 スパンのトレースを生成します。このトレースは my-service
というサービス名の下で報告されます。
// tracer_example.cpp
#include <datadog/span_config.h>
#include <datadog/tracer.h>
#include <datadog/tracer_config.h>
#include <iostream>
#include <string>
namespace dd = datadog::tracing;
int main() {
dd::TracerConfig config;
config.service = "my-service";
const auto validated_config = dd::finalize_config(config);
if (!validated_config) {
std::cerr << validated_config.error() << '\n';
return 1;
}
dd::Tracer tracer{*validated_config};
// いくつかのスパンを作成します。
{
auto span_a = tracer.create_span();
span_a.set_name("A");
span_a.set_tag("tag", "123");
auto span_b = span_a.create_child();
span_b.set_name("B");
span_b.set_tag("tag", "value");
}
return 0;
}
CPM.cmake はクロスプラットフォームの CMake スクリプトで、CMake に依存関係管理機能を追加します。
# CMakeLists.txt に
CPMAddPackage("gh:DataDog/dd-trace-cpp#1.0.0")
# `tracer_example` ターゲットを追加します
add_executable(tracer_example tracer_example.cpp)
# `dd-trace-cpp` に対して静的にリンクします
# 注: `dd-trace-cpp` に対して動的にリンクするには `dd_trace::shared` ターゲットを使用してください
target_link_libraries(tracer_example dd_trace::static)
以下のコマンドを使用してサンプルをビルドします。
cmake -B build -DCMAKE_BUILD_TYPE=Release .
cmake --build build --target tracer_example -j
./build/tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
CMake を使用して C++ プロジェクトに dd-trace-cpp
ライブラリをインテグレーションするには、以下の手順に従ってください。
include(FetchContent)
FetchContent_Declare(
dd-trace-cpp
GIT_REPOSITORY https://github.com/DataDog/dd-trace-cpp
GIT_TAG v1.0.0
GIT_SHALLOW ON
GIT_PROGRESS ON
)
FetchContent_MakeAvailable(dd-trace-cpp)
# `tracer_example` ターゲットを追加します
add_executable(tracer_example tracer_example.cpp)
# `dd-trace-cpp` に対して静的にリンクします
# 注: `dd-trace-cpp` に対して動的にリンクするには `dd_trace_cpp_shared` ターゲットを使用してください
target_link_libraries(tracer_example dd_trace::static)
以下のコマンドを使用してサンプルをビルドします。
cmake -B build -DCMAKE_BUILD_TYPE=Release .
cmake --build build --target tracer_example -j
./build/tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
手動で dd-trace-cpp
ライブラリをダウンロードしてインストールするには、以下の bash スクリプトを実行してください。
# "jq" コマンドが必要です。これはパッケージマネージャーを
# 通じてインストールできます。
# - APT: `apt install jq`
# - APK: `apk add jq`
# - YUM: `yum install jq`
if ! command -v jq >/dev/null 2>&1; then
>&2 echo "jq command not found. Install using the local package manager."
exit 1
fi
# GitHub から最新のリリースバージョン番号を取得します。
get_latest_release() {
curl --silent "https://api.github.com/repos/$1/releases/latest" | jq --raw-output .tag_name
}
DD_TRACE_CPP_VERSION="$(get_latest_release DataDog/dd-trace-cpp)"
# dd-trace-cpp ライブラリをダウンロードしてインストールします。
wget https://github.com/DataDog/dd-trace-cpp/archive/${DD_TRACE_CPP_VERSION}.tar.gz -O dd-trace-cpp.tar.gz
mkdir dd-trace-cpp && tar zxvf dd-trace-cpp.tar.gz -C ./dd-trace-cpp/ --strip-components=1
cd dd-trace-cpp
# 正しいバージョンの dd-trace-cpp をダウンロードしてインストールします。
# プロジェクトの構成、ビルド、インストールを行います。
cmake -B build .
cmake --build build -j
cmake --install build
デフォルトでは、cmake --install
は共有ライブラリとパブリックヘッダーを適切なシステムディレクトリ (例えば /usr/local/[...]
) に配置します。
特定の場所にインストールするには、代わりに cmake --install build --prefix <INSTALL_DIR>
を使用してください。
動的リンク
libdd_trace_cpp.so
にリンクし、共有ライブラリが LD_LIBRARY_PATH
にあることを確認します。
clang -std=c++17 -o tracer_example tracer_example.cpp -ldd_trace_cpp
LD_LIBRARY_PATH=/usr/local/lib/ ./tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
構成
必要に応じて、統合サービスタグ付けの設定など、アプリケーションパフォーマンスのテレメトリーデータを送信するためのトレースライブラリーを構成します。詳しくは、ライブラリの構成を参照してください。
その他の参考資料