- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
アプリケーションで生成されたスパンを Datadog に送信する (取り込む) かどうかは、複数のメカニズムによって決定されます。これらのメカニズムの背後にあるロジックは、トレーシングライブラリと Datadog Agent の中にあります。構成によっては、インスツルメントされたサービスによって生成されたトラフィックの全てまたは一部が取り込まれます。
取り込まれた各スパンには、このページで説明されているメカニズムのいずれかを参照する一意の取り込み理由が付加されています。使用量メトリクスdatadog.estimated_usage.apm.ingested_bytes
と datadog.estimated_usage.apm.ingested_spans
は ingestion_reason
によってタグ付けされています。
取り込み理由ダッシュボードを使って、それぞれの取り込み理由を確認することができます。各メカニズムに起因するボリュームの概要を把握し、どの構成オプションに焦点を当てるべきかを迅速に知ることができます。
デフォルトのサンプリングメカニズムは_ヘッドベースサンプリング_と呼ばれています。トレースを維持するか削除するかの決定は、トレースの一番最初、ルートスパンの開始時に行われます。この決定は、HTTP リクエストヘッダーなどのリクエストコンテキストの一部として、他のサービスに伝搬されます。
この判断はトレースの最初に行われ、その後トレースのすべての部分に伝えられるため、トレースは全体として保持または削除されることが保証されます。
ヘッドベースサンプリングのサンプリングレートは、以下の 2 か所で設定できます。
ingestion_reason: auto
Datadog Agent は、トレーシングライブラリにサンプリングレートを継続的に送信し、トレースのルートで適用させます。Agent は、1 秒間に 10 個のトレースを目標にレートを調整し、トラフィックに応じて各サービスに分配します。
例えば、サービス A
が B
よりもトラフィックが多い場合、Agent は A
のサンプリングレートを変化させて、A
が 1 秒間に 7 つ以上のトレースを保持しないようにし、同様に B
のサンプリングレートを調整して B
が 1 秒間に 3 つのトレース、合計 1 秒間に 10 個以上のトレースを保持しないようにします。
Agent のバージョン 7.42.0 以降を使用している場合、Agent のサンプリングレート構成はリモートで構成可能です。Agent でリモート構成を有効にする方法については、リモート構成の仕組みをお読みください。リモート構成では、Agent を再起動することなく、パラメーターを変更することができます。
Agent のメインコンフィギュレーションファイル (datadog.yaml
) または環境変数に、Agent の目標の 1 秒あたりのトレースを設定します。
@param max_traces_per_second - 整数 - オプション - デフォルト: 10
@env DD_APM_MAX_TPS - 整数 - オプション - デフォルト: 10
注:
datadog.yaml
の構成) よりも優先されます。Datadog Agent の自動計算されたサンプリングレートを使ってサンプリングされたトレースの全てのスパンには、取り込み理由 auto
のタグが付けられています。ingestion_reason
タグは、使用量メトリクスにも設定されています。Datadog Agent のデフォルトのメカニズムを使用するサービスは、Ingestion Control Page の Configuration の列で Automatic
とラベル付けされます。
ingestion_reason: rule
よりきめ細かい制御を行うには、トレースライブラリのサンプリング構成オプションを使用します。
ルートサービスのみサンプリング制御を設定することができます。
注: これらのルールは、ヘッドベースサンプリング制御でもあります。あるサービスのトラフィックが構成された最大トレース数/秒より大きい場合、トレースはルートでドロップされます。不完全なトレースを作成することはありません。
構成は、環境変数で設定するか、コードで直接設定することができます。
Java アプリケーションでは、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。環境変数 DD_TRACE_SAMPLING_RULES
を使って、サービスごとのサンプリングレートを設定します。
例えば、my-service
という名前のサービスのトレースの 20% を送信するには
# ステムプロパティを使用する
java -Ddd.trace.sampling.rules='[{\"service\": \"my-service\", \"sample_rate\":0.2}]' -javaagent:dd-java-agent.jar -jar my-app.jar
# 環境変数を使用する
export DD_TRACE_SAMPLING_RULES=[{"service": "my-service", "sample_rate": 0.2}]
サービス名の値は大文字と小文字を区別し、実際のサービス名の大文字と小文字を一致させる必要があります。
環境変数 DD_TRACE_RATE_LIMIT
に、サービスインスタンスごとの秒あたりのトレース数を設定して、レートリミットを構成します。DD_TRACE_RATE_LIMIT
の値が設定されていない場合、1 秒あたり 100 のトレース制限が適用されます。
サンプリングコントロールについては、Java トレースライブラリドキュメントを参照してください。
Python アプリケーションでは、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。環境変数 DD_TRACE_SAMPLING_RULES
を使って、サービスごとのサンプリングレートを設定します。
例えば、my-service
という名前のサービスのトレースを 50% 送信し、残りのトレースを 10% 送信するには
@env DD_TRACE_SAMPLE_RATE=0.1
@env DD_TRACE_SAMPLING_RULES=[{"service": "my-service", "sample_rate": 0.5}]
環境変数 DD_TRACE_RATE_LIMIT
に、サービスインスタンスごとの秒あたりのトレース数を設定して、レートリミットを構成します。DD_TRACE_RATE_LIMIT
の値が設定されていない場合、1 秒あたり 100 のトレース制限が適用されます。
サンプリングコントロールについては、Python トレースライブラリドキュメントを参照してください。
Ruby アプリケーションの場合は、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。
例えば、トレースの 10% を送信するには
@env DD_TRACE_SAMPLE_RATE=0.1
環境変数 DD_TRACE_RATE_LIMIT
に、サービスインスタンスごとの秒あたりのトレース数を設定して、レートリミットを構成します。DD_TRACE_RATE_LIMIT
の値が設定されていない場合、1 秒あたり 100 のトレース制限が適用されます。
サンプリングコントロールについては、Ruby トレースライブラリドキュメントを参照してください。
Go アプリケーションでは、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。環境変数 DD_TRACE_SAMPLING_RULES
を使って、サービスごとのサンプリングレートを設定します。
例えば、my-service
という名前のサービスのトレースを 50% 送信し、残りのトレースを 10% 送信するには
@env DD_TRACE_SAMPLE_RATE=0.1
@env DD_TRACE_SAMPLING_RULES=[{"service": `my-service`, "sample_rate": 0.5}]
環境変数 DD_TRACE_RATE_LIMIT
に、サービスインスタンスごとの秒あたりのトレース数を設定して、レートリミットを構成します。DD_TRACE_RATE_LIMIT
の値が設定されていない場合、1 秒あたり 100 のトレース制限が適用されます。
サンプリングコントロールについては、Go トレースライブラリドキュメントを参照してください。
Node.js アプリケーションの場合は、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。
また、サービス別のサンプリングレートを設定することもできます。例えば、my-service
という名前のサービスのトレースを 50% 送信し、残りのトレースを 10% 送信するには
tracer.init({
ingestion: {
sampler: {
sampleRate: 0.1,
rules: [
{ sampleRate: 0.5, service: 'my-service' }
]
}
}
});
環境変数 DD_TRACE_RATE_LIMIT
に、サービスインスタンスごとの秒あたりのトレース数を設定して、レートリミットを構成します。DD_TRACE_RATE_LIMIT
の値が設定されていない場合、1 秒あたり 100 のトレース制限が適用されます。
サンプリングコントロールについては、Node.js トレースライブラリドキュメントを参照してください。
PHP アプリケーションでは、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。環境変数 DD_TRACE_SAMPLING_RULES
を使って、サービスごとのサンプリングレートを設定します。
例えば、my-service
という名前のサービスのトレースを 50% 送信し、残りのトレースを 10% 送信するには
@env DD_TRACE_SAMPLE_RATE=0.1
@env DD_TRACE_SAMPLING_RULES=[{"service": `my-service`, "sample_rate": 0.5}]
サンプリングコントロールについては、PHP トレースライブラリドキュメントを参照してください。
バージョン 1.3.2
からは、Datadog C++ ライブラリは以下の構成をサポートしています。
DD_TRACE_SAMPLE_RATE
DD_TRACE_SAMPLING_RULES
DD_TRACE_RATE_LIMIT
例えば、my-service
という名前のサービスのトレースを 50% 送信し、残りのトレースを 10% 送信するには
@env DD_TRACE_SAMPLE_RATE=0.1
@env DD_TRACE_SAMPLING_RULES=[{"service": `my-service`, "sample_rate": 0.5}]
C++ では、すぐに使えるインスツルメンテーションのインテグレーションは提供されていませんが、Envoy、Nginx、Istio などのプロキシトレーシングで利用されています。プロキシに対するサンプリングの構成方法については、プロキシのトレースで詳しく説明しています。
.NET アプリケーションでは、DD_TRACE_SAMPLE_RATE
環境変数を使って、ライブラリのグローバルサンプリングレートを設定します。環境変数 DD_TRACE_SAMPLING_RULES
を使って、サービスごとのサンプリングレートを設定します。
例えば、my-service
という名前のサービスのトレースを 50% 送信し、残りのトレースを 10% 送信するには
@env DD_TRACE_SAMPLE_RATE=0.1
@env DD_TRACE_SAMPLING_RULES=[{"service": `my-service`, "sample_rate": 0.5}]
環境変数 DD_TRACE_RATE_LIMIT
に、サービスインスタンスごとの秒あたりのトレース数を設定して、レートリミットを構成します。DD_TRACE_RATE_LIMIT
の値が設定されていない場合、1 秒あたり 100 のトレース制限が適用されます。
サンプリングコントロールについては、.NET トレースライブラリドキュメントを参照してください。
注: トレースライブラリ構成を使用してサンプリングされたトレースのすべてのスパンには、取り込み理由 rule
というタグが付けられます。ユーザー定義のサンプリングルールで構成されたサービスは、Ingestion Control Page の Configuration 列で Configured
としてマークされます。
ヘッドベースサンプリングで捕捉できなかったトレースについては、2 つの Datadog Agent の追加サンプリングメカニズムにより、重要かつ多様なトレースが保持され、取り込まれるようにします。この 2 つのサンプラーは、あらかじめ決められたタグの組み合わせをすべてキャッチすることで、多様なローカルトレースセット (同一ホストからのスパンセット) を保持します。
注: ライブラリサンプリングルールを設定したサービスでは、エラーサンプリングとレアサンプリングは無視されます。
ingestion_reason: error
エラーサンプラーは、ヘッドベースサンプリングでは捕捉できないエラースパンを含むトレースの断片を捕捉します。最大 10 トレース/秒 (Agent 毎) の速度でエラートレースを捕捉します。ヘッドベースのサンプリングレートが低い場合に、エラーを包括的に可視化することができます。
Agent バージョン 7.33 以降では、Agent のメインコンフィギュレーションファイル (datadog.yaml
) または環境変数でエラーサンプラーを構成することが可能です。
@param errors_per_second - 整数 - オプション - デフォルト: 10
@env DD_APM_ERROR_TPS - 整数 - オプション - デフォルト: 10
注:
0
に設定します。manual.drop
などのカスタムロジックによってドロップされたスパンは、エラーサンプラーでは除外されます。Agent のバージョン 7.42.0 以降を使用している場合、レアサンプリングはリモート構成が可能です。ドキュメントに従って、Agent のリモート構成を有効にしてください。リモート構成を使用すると、Datadog Agent を再起動することなく、レアスパンの収集を有効にすることができます。
トレーシングライブラリのルールや manual.drop
などのカスタムロジックによってドロップされたスパンがエラーサンプラーに含まれるようにデフォルトの動作をオーバーライドするには、Datadog Agent (または Kubernetes の Datadog Agent ポッド内の専用 Trace Agent コンテナ) で DD_APM_FEATURES=error_rare_sample_tracer_drop
として機能を有効にします。
エラーサンプリングのデフォルト動作は、これらの Agent のバージョンでは変更できません。Datadog Agent を Datadog Agent 6/7.41.0 以降にアップグレードしてください。
ingestion_reason: rare
レアサンプラーは、Datadog にレアスパンのセットを送信します。これは、env
、service
、name
、resource
、error.type
、http.status
の組み合わせを最大で毎秒 5 トレース (Agent 毎) 捕捉することができます。ヘッドベースのサンプリングレートが低い場合に、低トラフィックのリソースを確実に可視化することができます。
注: レアサンプラーは、Agent レベルのローカルトレースをキャプチャします。トレースが分散されている場合、完全なトレースが Datadog に送信されることを保証する方法はありません。
Agent のバージョン 7.42.0 以降を使用している場合、エラーサンプリングレートはリモート構成が可能です。ドキュメントに従って、Agent のリモート構成を有効にしてください。リモート構成を使用すると、Datadog Agent を再起動することなく、パラメーター値を変更することができます。
デフォルトでは、レアサンプラーは有効ではありません。
注: 有効の場合、トレーシングライブラリのルールや manual.drop
などのカスタムロジックによってドロップされたスパンは、このサンプラーでは除外されます。
レアサンプラーを設定するには、Agent のメインコンフィギュレーションファイル (datadog.yaml
) または環境変数 DD_APM_ENABLE_RARE_SAMPLER
で apm_config.enable_rare_sampler
設定を更新してください。
@params apm_config.enable_rare_sampler - ブール値 - オプション - デフォルト: false
@env DD_APM_ENABLE_RARE_SAMPLER - ブール値 - オプション - デフォルト: false
トレーシングライブラリのルールや manual.drop
などのカスタムロジックによってドロップされたスパンを評価するには、Trace Agent の DD_APM_FEATURES=error_rare_sample_tracer_drop
で機能を有効にします。
デフォルトでは、レアサンプラーが有効になっています。
注: 有効の場合、トレーシングライブラリのルールや manual.drop
などのカスタムロジックによってドロップされたスパンは、このサンプラーでは除外されます。これらのスパンをこのロジックに含めるには、Datadog Agent 6.41.0/7.41.0 以降にアップグレードしてください。
レアサンプラーのデフォルト設定を変更するには、Agent のメインコンフィギュレーションファイル (datadog.yaml
) または環境変数 DD_APM_DISABLE_RARE_SAMPLER
で apm_config.disable_rare_sampler
設定を更新してください。
@params apm_config.disable_rare_sampler - ブール値 - オプション - デフォルト: false
@env DD_APM_DISABLE_RARE_SAMPLER - ブール値 - オプション - デフォルト: false
ingestion_reason: manual
ヘッドベースのサンプリングメカニズムは、トレーシングライブラリレベルでオーバーライドすることができます。例えば、クリティカルなトランザクションを監視する必要がある場合、関連するトレースを強制的に保持させることができます。一方、ヘルスチェックのような不要または反復的な情報については、トレースを強制的に削除することができます。
スパンに Manual Keep を設定して、そのスパンとすべての子スパンを取り込むように指示します。問題のスパンがトレースのルートスパンでない場合、結果のトレースは UI で不完全に表示されることがあります。
スパンに Manual Drop を設定して、子スパンが取り込まれないようにします。エラーとレアサンプラーは Agent では無視されます。
手動でトレースを保持:
import datadog.trace.api.DDTags;
import io.opentracing.Span;
import datadog.trace.api.Trace;
import io.opentracing.util.GlobalTracer;
public class MyClass {
@Trace
public static void myMethod() {
// トレース方法からアクティブなスパンを取り除く
Span span = GlobalTracer.get().activeSpan();
// 常にトレースを保持
span.setTag(DDTags.MANUAL_KEEP, true);
// 続いて実装方法を入力
}
}
手動でトレースを削除:
import datadog.trace.api.DDTags;
import io.opentracing.Span;
import datadog.trace.api.Trace;
import io.opentracing.util.GlobalTracer;
public class MyClass {
@Trace
public static void myMethod() {
// トレース方法からアクティブなスパンを取り除く
Span span = GlobalTracer.get().activeSpan();
// 常にトレースをドロップ
span.setTag(DDTags.MANUAL_DROP, true);
// 続いて実装方法を入力
}
}
手動でトレースを保持:
from ddtrace import tracer
from ddtrace.constants import MANUAL_DROP_KEY, MANUAL_KEEP_KEY
@tracer.wrap()
def handler():
span = tracer.current_span()
# 常にトレースを保持
span.set_tag(MANUAL_KEEP_KEY)
# 続いて実装方法を入力
手動でトレースを削除:
from ddtrace import tracer
from ddtrace.constants import MANUAL_DROP_KEY, MANUAL_KEEP_KEY
@tracer.wrap()
def handler():
span = tracer.current_span()
# 常にトレースをドロップ
span.set_tag(MANUAL_DROP_KEY)
# 続いて実装方法を入力
手動でトレースを保持:
Datadog::Tracing.trace(name, options) do |span, trace|
trace.keep! # アクティブトレースに影響する
# 続いて実装方法を入力
end
手動でトレースを削除:
Datadog::Tracing.trace(name, options) do |span, trace|
trace.reject! # アクティブトレースに影響する
# 続いて実装方法を入力
end
手動でトレースを保持:
package main
import (
"log"
"net/http"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func handler(w http.ResponseWriter, r *http.Request) {
// /posts URLでwebリクエストのスパンを作成
span := tracer.StartSpan("web.request", tracer.ResourceName("/posts"))
defer span.Finish()
// 常にこのトレースを保持:
span.SetTag(ext.ManualKeep, true)
//続いて実装方法を入力
}
手動でトレースを削除:
package main
import (
"log"
"net/http"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func handler(w http.ResponseWriter, r *http.Request) {
// /posts URLでwebリクエストのスパンを作成
span := tracer.StartSpan("web.request", tracer.ResourceName("/posts"))
defer span.Finish()
// 常にこのトレースを削除:
span.SetTag(ext.ManualDrop, true)
//続いて実装方法を入力
}
手動でトレースを保持:
const tracer = require('dd-trace')
const tags = require('dd-trace/ext/tags')
const span = tracer.startSpan('web.request')
// 常にトレースを保持
span.setTag(tags.MANUAL_KEEP)
//続いて実装方法を入力
手動でトレースを削除:
const tracer = require('dd-trace')
const tags = require('dd-trace/ext/tags')
const span = tracer.startSpan('web.request')
// 常にトレースを削除
span.setTag(tags.MANUAL_DROP)
//続いて実装方法を入力
手動でトレースを保持:
using Datadog.Trace;
using(var scope = Tracer.Instance.StartActive("my-operation"))
{
var span = scope.Span;
// 常にこのトレースを保持
span.SetTag(Datadog.Trace.Tags.ManualKeep, "true");
//続いて実装方法を入力
}
手動でトレースを削除:
using Datadog.Trace;
using(var scope = Tracer.Instance.StartActive("my-operation"))
{
var span = scope.Span;
// 常にこのトレースをドロップ
span.SetTag(Datadog.Trace.Tags.ManualDrop, "true");
//続いて実装方法を入力
}
手動でトレースを保持:
<?php
$tracer = \DDTrace\GlobalTracer::get();
$span = $tracer->getActiveSpan();
if (null !== $span) {
// 常にこのトレースを保持
$span->setTag(\DDTrace\Tag::MANUAL_KEEP, true);
}
?>
手動でトレースを削除:
<?php
$tracer = \DDTrace\GlobalTracer::get();
$span = $tracer->getActiveSpan();
if (null !== $span) {
// 常にこのトレースをドロップ
$span->setTag(\DDTrace\Tag::MANUAL_DROP, true);
}
?>
手動でトレースを保持:
...
#include <datadog/tags.h>
...
auto tracer = ...
auto span = tracer->StartSpan("operation_name");
// 常にこのトレースを保持
span->SetTag(datadog::tags::manual_keep, {});
//続いて実装方法を入力
手動でトレースを削除:
...
#include <datadog/tags.h>
...
auto tracer = ...
auto another_span = tracer->StartSpan("operation_name");
// 常にこのトレースを削除
another_span->SetTag(datadog::tags::manual_drop, {});
//続いて実装方法を入力
手動によるトレース保持は、コンテキスト伝搬の前に行われるべきです。コンテキスト伝搬の後に保持される場合、システムはサービス間でトレース全体が保持されることを保証することはできません。手動によるトレース保持はトレースクライアントの位置で設定されるため、サンプリングルールに基づいて Agent またはサーバーの位置によってトレースが削除される可能性があります。
ingestion_reason: single_span
特定のスパンをサンプリングする必要があるが、完全なトレースは必要ない場合、トレーシングライブラリでは、単一のスパンに設定されるサンプリングレートを設定することができます。
例えば、特定のサービスをモニターするためにスパンからのメトリクスを構築する場合、スパンのサンプリングルールを構成することで、サービスを流れるすべてのリクエストのトレースを 100% 取り込む必要がなく、これらのメトリクスが 100% のアプリケーショントラフィックに基づくことを確認することができます。
注: この機能は、Datadog Agent のバージョン 7.40.0 から利用可能です。
トレーシングライブラリのバージョン 1.7.0 から、Java アプリケーションの場合、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50 スパンを 100% 収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
サンプリングコントロールについては、Java トレースライブラリドキュメントを参照してください。
バージョン v1.4.0 以降、Python アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
サンプリングコントロールについては、Python トレースライブラリドキュメントを参照してください。
バージョン v1.5.0 以降、Ruby アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
サンプリングコントロールについては、Ruby トレースライブラリドキュメントを参照してください。
バージョン v1.41.0 以降、Go アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
サンプリングコントロールについては、Go トレースライブラリドキュメントを参照してください。
Node.js アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
サンプリングコントロールについては、Node.js トレースライブラリドキュメントを参照してください。
バージョン v0.77.0 以降、PHP アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
サンプリングコントロールについては、PHP トレースライブラリドキュメントを参照してください。
バージョン v1.3.3 以降、C++ アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES=[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]
バージョン v2.18.0 以降、.NET アプリケーションでは、環境変数 DD_SPAN_SAMPLING_RULES
でサービス名別と操作名別の span サンプリングルールを設定します。
例えば、my-service
という名前のサービスから、http.request
という操作で、1 秒間に最大 50
スパンを 100%
収集するには
@env DD_SPAN_SAMPLING_RULES='[{"service": "my-service", "name": "http.request", "sample_rate":1.0, "max_per_second": 50}]'
サンプリングコントロールについては、.NET トレースライブラリドキュメントを参照してください。
ingestion_reason:rum
Web アプリケーションやモバイルアプリケーションからのリクエストは、バックエンドサービスがインスツルメントされたときにトレースを生成します。APM とリアルユーザーモニタリングのインテグレーションは、Web やモバイルアプリケーションのリクエストを対応するバックエンドトレースにリンクし、フロントエンドとバックエンドの全データを 1 つのレンズで見ることができるようにします。
RUM ブラウザ SDK のバージョン 4.30.0
からは、traceSampleRate
という初期化パラメーターを設定することで、取り込み量を制御し、バックエンドのトレースのサンプリングを保持することができます。traceSampleRate
には 0
から 100
の間の数値を設定します。
もし traceSampleRate
の値が設定されていない場合は、デフォルトでブラウザのリクエストから来るトレースの 100% が Datadog に送信されます。
同様に、他の SDK でも同様のパラメーターでトレースサンプリングレートを制御してください。
SDK | パラメーター | 最小バージョン |
---|---|---|
Browser | traceSampleRate | v4.30.0 |
iOS | tracingSamplingRate | 1.11.0 サンプリングレートは、1.13.0 以降、取り込み制御ページで報告しています。 |
Android | traceSamplingRate | 1.13.0 サンプリングレートは、1.15.0 以降、取り込み制御ページで報告しています。 |
Flutter | tracingSamplingRate | 1.0.0 |
React Native | tracingSamplingRate | 1.0.0 サンプリングレートは、1.2.0 以降、取り込み制御ページで報告しています。 |
ingestion_reason:synthetics
と ingestion_reason:synthetics-browser
HTTP テストとブラウザテストは、バックエンドサービスがインストルメントされたときに、トレースを生成します。Synthetic テストと APM のインテグレーションは、 Synthetic テストを対応するバックエンドのトレースとリンクさせます。失敗したテストの実行から、そのテストの実行によって生成されたトレースを見ることで、問題の根本的な原因を突き止めることができます。
デフォルトでは、Synthetic HTTP テストとブラウザテストの 100% がバックエンドトレースを生成します。
いくつかの追加の取り込み理由は、特定の Datadog 製品によって生成されるスパンに起因します。
製品 | 取り込み理由 | 取り込みのメカニズムの説明 |
---|---|---|
サーバーレス | lambda と xray | Datadog トレーシングライブラリまたは AWS X-Ray インテグレーションでトレースしたサーバーレスアプリケーションから受信したトレース。 |
Application Security Management | appsec | Datadog トレーシングライブラリから取り込まれたトレースで、ASM によって脅威としてフラグが立てられたもの。 |
ingestion_reason:otel
OpenTelemetry SDK のセットアップ (OpenTelemetry Collector または Datadog Agent を使用) に応じて、取り込みサンプリングを制御する複数の方法があります。様々な OpenTelemetry のセットアップで OpenTelemetry SDK、OpenTelemetry Collector、Datadog Agent レベルでのサンプリングに利用できるオプションの詳細は OpenTelemetry による取り込みサンプリング を参照してください。
お役に立つドキュメント、リンクや記事: