概要
このガイドは、C++ APM ドキュメントの内容を拡張したものです。C++ による簡単な APM アプリを、トラブルシューティングの目的で VM にセットアップする方法について、手順を追って説明します。
ボックスをセットアップする
基本の環境
最初に、新しい ubuntu/jammy64
Vagrant ボックスをスピンアップし、それに対して ssh
を実行します。
vagrant init ubuntu/jammy64
vagrant up
vagrant ssh
次に、UI の指示に従って Agent をインストールします。
C++ の準備
g++
と cmake
をインストールします。
sudo apt-get update
sudo apt-get -y install g++ cmake
この 2 行を実行すると、最新バージョンの C++ を入手できます。
get_latest_release() {
wget -qO- "https://api.github.com/repos/$1/releases/latest" |
grep '"tag_name":' |
sed -E 's/.*"([^"]+)".*/\1/';
}
DD_OPENTRACING_CPP_VERSION="$(get_latest_release DataDog/dd-opentracing-cpp)"
GitHub からレート制限のメッセージが表示された場合は、数分間待ってからもう一度コマンドを実行してください。アップデートが完了したら、正しく実行されたことを C++ のバージョンをチェックして確認します。
echo $DD_OPENTRACING_CPP_VERSION
次に、dd-opentracing-cpp
ライブラリをダウンロードしてインストールします。
wget https://github.com/DataDog/dd-opentracing-cpp/archive/${DD_OPENTRACING_CPP_VERSION}.tar.gz -O dd-opentracing-cpp.tar.gz
tar
ファイルをダウンロードしたら、ライブラリ用に新しいディレクトリと .build
ファイルを作成します。
mkdir -p dd-opentracing-cpp/.build
続いて、ファイルを解凍します。
tar zxvf dd-opentracing-cpp.tar.gz -C ./dd-opentracing-cpp/ --strip-components=1
ライブラリのコンテンツリストがコンソールに表示されます。
dd-opentracing-cpp-1.0.1/test/integration/nginx/nginx.conf
dd-opentracing-cpp-1.0.1/test/integration/nginx/nginx_integration_test.sh
次に、.build
ディレクトリに移動します。
cd dd-opentracing-cpp/.build
最後に、依存関係をインストールします。
sudo ../scripts/install_dependencies.sh
cmake ..
make
sudo make install
簡単なアプリの作成
新しいファイルを tracer_example.cpp
という名前で作成し、以下のコードを入力します。
#include <datadog/opentracing.h>
#include <iostream>
#include <string>
int main(int argc, char* argv[]) {
datadog::opentracing::TracerOptions tracer_options{"localhost", 8126, "compiled-in example"};
auto tracer = datadog::opentracing::makeTracer(tracer_options);
// スパンを作成する。
{
auto span_a = tracer->StartSpan("A");
span_a->SetTag("tag", 123);
auto span_b = tracer->StartSpan("B", {opentracing::ChildOf(&span_a->context())});
span_b->SetTag("tag", "value");
}
tracer->Close();
return 0;
}
これで、親スパンである span_a
と、子スパンである span_b
の 2 つのスパンが生成され、タグ付けされます。
次に、libdd_opentracing
と libopentracing
に対してリンクを作成します。
g++ -std=c++14 -o tracer_example tracer_example.cpp -ldd_opentracing -lopentracing
最後に、アプリを実行します。
LD_LIBRARY_PATH=/usr/local/lib/ ./tracer_example
トレースの送信
これでアプリが作成されたので、トレースの送信を開始して、トレース Agent の動作を確認できます。
最初に、トレース Agent のログを追跡します。
tail -f /var/log/datadog/trace-agent.log
次に、新しいタブを開いて、サンプルアプリを数回実行します。
LD_LIBRARY_PATH=/usr/local/lib/ ./tracer_example
トレース Agent タブに、次のように表示されます。
2019-08-09 20:02:26 UTC | TRACE | INFO | (pkg/trace/info/stats.go:108 in LogStats) | [lang:cpp lang_version:201402 tracer_version:v1.0.1] -> traces received: 1, traces filtered: 0, traces amount: 363 bytes, events extracted: 0, events sampled: 0
その後、そのサービスは Datadog のサービスカタログに表示されます。
サービスをクリックすると、トレースが表示されます。
その他の参考資料