C++ による APM の設定

概要

このガイドは、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

以下のコマンドで dd-trace-cpp ライブラリをダウンロードしてインストールします。

wget https://github.com/DataDog/dd-trace-cpp/archive/v0.2.0.tar.gz -O dd-trace-cpp.tar.gz

GitHub からレート制限のメッセージが表示された場合は、数分待ってからもう一度コマンドを実行してください。

tar ファイルをダウンロードした後、解凍します。

tar zxvf dd-trace-cpp.tar.gz -C ./dd-trace-cpp/ --strip-components=1

最後に、以下のコマンドでライブラリをビルドしてインストールします。

cd dd-trace-cpp
cmake -B build .
cmake --build build -j
cmake --install build

簡単なアプリの作成

新しいファイルを tracer_example.cpp という名前で作成し、以下のコードを入力します。

#<datadog/tracer.h> を含めます
#<iostream> を含めます
#<string> を含めます

int main(int argc, char* argv[]) {
  datadog::tracing::TracerConfig tracer_config;
  tracer_config.service = "compiled-in example";

  const auto validated_config = dd::finalize_config(tracer_options);
  if (!validated_config) {
    std::cerr << validated_config.error() << '\n';
    return 1;
  }

  dd::Tracer tracer{*validated_config};

  // いくつかのスパンを作成します。
  {
    datadog::tracing::SpanConfig options;
    options.name = "A";
    options.tags.emplace("tag", "123");
    auto span_a = tracer.create_span(options);

    auto span_b = span_a.create_child();
    span_b.set_name("B");
    span_b.set_tag("tag", "value");
  }

  return 0;
}

これで、親スパンである span_a と、子スパンである span_b の 2 つのスパンが生成され、タグ付けされます。

次に、コンパイルして libdd_trace_cpp に対してリンクします。

g++ -std=c++17 -o tracer_example tracer_example.cpp -ldd_trace_cpp

最後に、アプリを実行します。

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:0.2.0] -> traces received: 1, traces filtered: 0, traces amount: 363 bytes, events extracted: 0, events sampled: 0

その後、サービスは Datadog のサービスカタログに表示されます。

APM Services ページ

サービスをクリックすると、トレースが表示されます。

APM トレース UI

その他の参考資料

お役に立つドキュメント、リンクや記事:

PREVIEWING: alai97/reorganize-some-sections-in-dora-metrics