セットアップ手順をまだ読んでいない場合は、C++ セットアップ手順からご覧ください。

タグを追加

カスタムスパンタグスパンに追加して、Datadog 内の可観測性をカスタマイズします。スパンタグは受信トレースに適用されるため、観測された動作を、マーチャントの階層、チェックアウト金額、ユーザー ID などのコードレベルの情報と関連付けることができます。

C++ トレースは「共通タグ」を使用します。このタグは、Datadog 固有のタグまたは OpenTracing タグの両方から取得でき、以下のように含めることができます。

#include <opentracing/ext/tags.h>
#include <datadog/tags.h>

統合サービスタグ付けには Datadog タグが必要であることに注意してください。

カスタムスパンタグを追加する

Span::SetTag を呼び出して、スパンタグを直接追加します。例:

auto tracer = ...
auto span = tracer->StartSpan("オペレーション名");
span->SetTag("キーは文字列でなければなりません", "値は変数タイプです");
span->SetTag("キーは文字列でなければなりません", 1234);

値は変数タイプであり、複雑なオブジェクトにすることができます。値は JSON としてシリアル化されますが、文字列値はそのままシリアル化されます(余分な引用符はありません)。

すべてのスパンにグローバルにタグを追加する

すべてのスパンにタグを設定するには、DD_TAGS 環境変数をカンマで区切られた key:value ペアのリストとして設定します。

スパンにエラーを設定する

スパンをエラーに関連付けるには、スパンに 1 つ以上のエラー関連タグを設定します。たとえば、以下のようになります。

span->SetTag(opentracing::ext::error, true);

あるいは

span->SetTag("error", true);

error.msgerror.stackerror.type タグを組み合わせて、エラーに関するより詳細な情報を設定します。エラータグの詳細については、エラー追跡を参照してください。

エラータグを組み合わせて追加した例:

// このスパンを標準ライブラリの "bad file descriptor "エラーと関連付けて
// ください。
span->SetTag("error.msg", "[EBADF] invalid file");
span->SetTag("error.type", "errno");

error.msgerror.stack または error.type タグのいずれかを追加すると、error に値 true を設定します。

スパンのエラーを解除するには、error タグに値 false を設定します。このとき、それまで設定されていた error.msgerror.stackerror.type タグはすべて削除されます。

// このスパンに関連するすべてのエラー情報をクリアします。
span->SetTag("error", false);

タグの追加

メソッドの手動インスツルメント

コードの手動インスツルメンテーションをするには、セットアップ例のとおりトレーサーをインストールし、トレーサーオブジェクトを使用しスパンを作成します。

{
  // 現在のリクエストのルートスパンを作成します。
  auto root_span = tracer->StartSpan("get_ingredients");
  // ルートスパンのリソース名を設定します。
  root_span->SetTag(datadog::tags::resource_name, "bologna_sandwich");
  // ルートスパンを親とする子スパンを作成します。
  auto child_span = tracer->StartSpan(
      "cache_lookup",
      {opentracing::ChildOf(&root_span->context())});
  // 子スパンのリソース名を設定します。
  child_span->SetTag(datadog::tags::resource_name, "ingredients.bologna_sandwich");
  // スパンは、明示的な時間で終了させることも ...
  child_span->Finish();
} // ... デストラクタが起動されたときに暗黙的に終了させることもできます。
  // 例えば、root_span はここで終了します。

ヘッダー抽出と挿入によるコンテキストの伝搬

分散型トレーシングのコンテキストの伝搬は、ヘッダーの挿入と抽出で構成できます。詳しくはトレースコンテキストの伝播をお読みください。

リソースのフィルター

トレースは、リソース名に基づいて除外することができ、ヘルスチェックなどの Synthetic トラフィックをトレース送信から除外し、トレースメトリクスに影響を与えることができます。このほか、セキュリティや構成の微調整については、セキュリティのページでご確認ください。

その他の参考資料