このページは、レガシー版 App Analytics に関するコンフィギュレーション情報を伴う非推奨機能について説明します。トラブルシューティングまたは古い設定の修正に利用可能です。トレース全体を完全に制御するには、
取り込みコントロールおよび保持フィルターを使用してください。
新しいコンフィギュレーションオプションへの移行
取り込みコントロールページへ移動し、レガシー版コンフィギュレーションを使用しているサービスを確認します。Legacy Setup
のステータスでフラグが立てられています。
新しいコンフィギュレーションオプションへ移行するには、Legacy Setup
のフラグ付きのサービスから、すべてのレガシー版 App Analytics コンフィギュレーションオプションを削除します。次に、Datadog Agent およびトレーシングライブラリのサンプリングメカニズムを実装してトレースを送信します。
App Analytics のセットアップ
App Analytics の構成オプションは、トレーシングライブラリと Datadog Agent に配置されています。ライブラリでは、サービスからの分析スパンは、自動または手動のいずれかで生成されます。
トレーシングライブラリで
自動コンフィギュレーション
App Analytics は、Java トレースクライアントのバージョン 0.25.0 以降で使用できます。トレースクライアントでコンフィギュレーションパラメーターを 1 つ設定することで、すべての web サーバーインテグレーションに対してグローバルに有効にすることができます。
- システムプロパティ:
-Ddd.trace.analytics.enabled=true
App Analytics は、Python トレースクライアントのバージョン 0.19.0 以降で使用できます。トレースクライアントでコンフィギュレーションパラメーターを 1 つ設定することで、すべての web インテグレーションに対して App Analytics をグローバルに有効にできます。
- トレーサー構成:
ddtrace.config.analytics_enabled = True
App Analyticsは、Ruby トレースクライアントのバージョン 0.19.0 以降で使用できます。グローバルフラグを使用することで、すべての web インテグレーションに対して有効にできます。
これを行うには、環境で DD_TRACE_ANALYTICS_ENABLED=true
を設定するか、次のように構成します。
Datadog.configure { |c| c.tracing.analytics.enabled = true }
true
は、すべての Web フレームワークで分析を有効にします。false
または nil
は、明示的に有効にされているインテグレーションを除いて分析を無効にします。(デフォルト)
App Analyticsは、Go トレースクライアントのバージョン 1.11.0 以降で使用できます。以下を使用することで、すべての web インテグレーションにグローバルに有効化できます:
App Analytics は、Node.js トレースクライアントのバージョン 0.10.0 以降で使用できます。トレースクライアントでコンフィギュレーションパラメーターを 1 つ設定することで、すべての web インテグレーションに対してグローバルに有効できます。
tracer.init({
analytics: true
})
次のコンフィギュレーションパラメーターを使用することもできます。
App Analytics は、.NET トレースクライアントのバージョン 1.1.0 以降で使用できます。トレースクライアントでコンフィギュレーションパラメーターを 1 つ設定することで、すべての web インテグレーションに対してグローバルに有効にできます。
- 環境変数または AppSetting:
DD_TRACE_ANALYTICS_ENABLED=true
これは、コードでも設定できます。
Tracer.Instance.Settings.AnalyticsEnabled = true;
App Analytics は、PHP トレースクライアントのバージョン 0.17.0 以降で使用できます。トレースクライアントでコンフィギュレーションパラメーターを 1 つ設定することで、すべての web インテグレーションに対してグローバルに有効にできます。
App Analytics は、C++ トレースクライアントのバージョン 1.0.0 以降で使用できます。環境変数 DD_TRACE_ANALYTICS_ENABLED
を true
に設定することで、すべてのサービスエントリスパンに対してグローバルに有効にすることができます。注: この設定は、コードで直接設定することもできます。
datadog::opentracing::TracerOptions tracer_options;
tracer_options.agent_host = "dd-agent";
tracer_options.service = "<サービス名>";
tracer_options.analytics_rate = 1.0;
auto tracer = datadog::opentracing::makeTracer(tracer_options);
Nginx で App Analytics を有効にするには
環境変数 DD_TRACE_ANALYTICS_ENABLED
を true
に設定します。
nginx.conf
ファイルの先頭に env DD_TRACE_ANALYTICS_ENABLED;
を追加します。
その他のサービスの構成 (オプション)
インテグレーションごとの構成
グローバルに設定するほか、次の設定を使用して個々のインテグレーションに対して App Analytics を有効または無効にすることも可能です。
- システムプロパティ:
-Ddd.<integration>.analytics.enabled=true
- 環境変数:
DD_<INTEGRATION>_ANALYTICS_ENABLED=true
カスタムサービスを送信するインテグレーションに対し、グローバルコンフィギュレーションに加えて上記を使用します。例えば、カスタムサービスとして送信される JMS スパンの場合、次のように設定して App Analytics ですべての JMS トレースを有効にします。
- システムプロパティ:
-Ddd.jms.analytics.enabled=true
- 環境変数:
DD_JMS_ANALYTICS_ENABLED=true
インテグレーション名は、インテグレーションテーブルにあります。
グローバルに設定するほか、次の設定を使用して個々のインテグレーションに対して App Analytics を有効または無効にすることも可能です。
- トレーサー構成:
ddtrace.config.<INTEGRATION>.analytics_enabled = True
- 環境変数:
DD_<INTEGRATION>_ANALYTICS_ENABLED=true
カスタムサービスを送信するインテグレーションに対し、グローバルコンフィギュレーションに加えて上記を使用します。例えば、カスタムサービスとして送信される Boto スパンの場合、次のように設定して App Analytics ですべての Boto トレースを有効にします。
- トレーサー構成:
ddtrace.config.boto.analytics_enabled = True
- 環境変数:
DD_BOTO_ANALYTICS_ENABLED=true
注: インテグレーションによっては、そのインテグレーション固有のトレーサーが実装されているため非標準の方法で設定する必要があります。詳細については、App Analytics のライブラリドキュメントを参照してください。
特定のインテグレーションに対して App Analytics を有効にすることできます。
それには、環境で DD_<INTEGRATION>_ANALYTICS_ENABLED=true
を設定するか、以下の構成を使用します。
Datadog.configure { |c| c.tracing.instrument :integration, analytics_enabled: true }
integration
は、インテグレーションの名前です。オプションについては、インテグレーションのリストを参照してください。
true
は、グローバル設定に関係なく、このインテグレーションで分析を有効にします。false
は、グローバル設定に関係なく、このインテグレーションで分析を無効にします。nil
は、グローバルな分析設定を優先させます。
グローバル設定に加えて、各インテグレーションで App Analytics を個別に有効または無効にできます。たとえば、標準ライブラリの net/http
パッケージを構成する場合は、以下のようにします。
```go
package main
import (
httptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/net/http"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func main() {
tracer.Start()
defer tracer.Stop()
mux := httptrace.NewServeMux(httptrace.WithAnalytics(true))
// ...</mrk>
}
グローバル設定に加えて、個別のインテグレーションで App Analytics を有効または無効にできます。
たとえば、express
で App Analytics を有効にするには、以下のようにします。
tracer.use('express', {
analytics: true
})
インテグレーション名は、インテグレーションテーブルにあります。
グローバル設定に加えて、個別のインテグレーションで App Analytics を有効または無効にできます。
- 環境変数または AppSetting:
DD_<INTEGRATION>_ANALYTICS_ENABLED=true
コードの場合は次のようになります。
Tracer.Instance.Settings.Integrations["<INTEGRATION>"].AnalyticsEnabled = true;
たとえば、ASP.NET MVC で App Analytics を有効にするには、以下のようにします。
- 環境変数または AppSetting:
DD_ASPNETMVC_ANALYTICS_ENABLED=true
コードの場合は次のようになります。
Tracer.Instance.Settings.Integrations["AspNetMvc"].AnalyticsEnabled = true;
インテグレーション名は、インテグレーションテーブルにあります。注: Linux では、環境変数の名前は大文字と小文字が区別されます。
グローバルに設定するほか、次の設定を使用して個々のインテグレーションに対して App Analytics を有効または無効にすることも可能です。
- 環境変数:
DD_<INTEGRATION>_ANALYTICS_ENABLED=true
カスタムサービスを送信するインテグレーションに対し、グローバルコンフィギュレーションに加えて上記を使用します。例えば、カスタムサービスとして送信される Symfony スパンの場合、次のように設定して App Analytics ですべての Symfony トレースを有効にします。
- 環境変数:
DD_SYMFONY_ANALYTICS_ENABLED=true
インテグレーション名は、インテグレーションテーブルにあります。
データベースサービス
デフォルトでは、App Analytics はデータベーストレースをキャプチャしないため、各インテグレーションに対して手動で収集を有効にする必要があります。例:
- システムプロパティ:
-Ddd.jdbc.analytics.enabled=true
- 環境変数:
DD_JDBC_ANALYTICS_ENABLED=true
デフォルトでは、App Analytics はデータベーストレースをキャプチャしないため、各インテグレーションに対して手動で収集を有効にする必要があります。例:
- トレーサーコンフィギュレーション:
ddtrace.config.psycopg.analytics_enabled = True
- 環境変数:
DD_PSYCOPG_ANALYTICS_ENABLED=true
デフォルトでは、App Analytics はデータベーストレースをキャプチャしないため、各インテグレーションに対して手動で収集を有効にする必要があります。例:
Datadog.configure { |c| c.tracing.instrument :mongo, analytics_enabled: true }
デフォルトでは、データベーストレースは App Analytics によりキャプチャされません。各インテグレーションに対し手動で収集を有効にする必要があります。例:
// Analytics が有効になっているデータベースドライバーを登録します。sqltrace.Register("mysql", &mysql.MySQLDriver{}, sqltrace.WithAnalytics(true))
デフォルトでは、App Analytics はデータベーストレースをキャプチャしないため、各インテグレーションに対して手動で収集を有効にする必要があります。例:
tracer.use('mysql', {
analytics: true
})
デフォルトでは、App Analytics はデータベーストレースをキャプチャしないため、各インテグレーションに対して手動で収集を有効にする必要があります。例えば、ADO.NET に対して App Analytics を有効にするには以下のようにします。
- 環境変数または AppSetting:
DD_AdoNet_ANALYTICS_ENABLED=true
コードの場合は次のようになります。
Tracer.Instance.Settings.Integrations["AdoNet"].AnalyticsEnabled = true;
インテグレーション名は、インテグレーションテーブルにあります。注: Linux では、環境変数の名前は大文字と小文字が区別されます。
デフォルトでは、App Analytics はデータベーストレースをキャプチャしません。次の設定を使用して、個々のインテグレーションに対し App Analytics を有効または無効にすることができます。
- 環境変数:
DD_<INTEGRATION>_ANALYTICS_ENABLED=true
カスタムサービスを送信するインテグレーションに対し、グローバルコンフィギュレーションに加えて上記を使用します。mysqli
の場合、次のようになります。
- 環境変数:
DD_MYSQLI_ANALYTICS_ENABLED=true
インテグレーション名は、インテグレーションテーブルにあります。
カスタムインスツルメンテーション
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで ANALYTICS_SAMPLE_RATE
タグを設定することで App Analytics を有効にできます。
import datadog.trace.api.DDTags;
import datadog.trace.api.Trace;
import io.opentracing.Tracer;
import io.opentracing.util.GlobalTracer;
class MyClass {
@Trace
void myMethod() {
final Span span = GlobalTracer.get().activeSpan();
// @Trace アノテーションにより送信されるスパン。
if (span != null) {
span.setTag(DDTags.SERVICE, "<SERVICE_NAME>");
span.setTag(DDTags.ANALYTICS_SAMPLE_RATE, 1.0);
}
}
}
注: dd.trace.methods または trace annotations スパン向けの App analytics は、-Ddd.trace-annotation.analytics.enabled=true
の設定により有効化することができます。
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで ddtrace.constants.ANALYTICS_SAMPLE_RATE_KEY
タグを設定することで App Analytics を有効にできます。
from ddtrace import tracer
from ddtrace.constants import ANALYTICS_SAMPLE_RATE_KEY
@tracer.wrap()
def my_method():
span = tracer.current_span()
span.set_tag(ANALYTICS_SAMPLE_RATE_KEY, True)
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで Analytics::TAG_ENABLED
タグを設定することで App Analytics を有効にできます。
Datadog::Tracing.trace('my.task') do |span|
# 分析サンプリングレートを 1.0 に設定します
span.set_tag(Datadog::Tracing::Metadata::Ext::Analytics::TAG_ENABLED, true)
end
カスタムインスツルメンテーションの場合、以下に示すように、スパンで App Analytics を有効にするための特別なタグが追加されています。
span.SetTag(ext.AnalyticsEvent, true)
これにより、スパンが App Analytics イベントとしてマークされます。
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで ANALYTICS
タグを設定することで App Analytics を有効にできます。
const { ANALYTICS } = require('dd-trace/ext/tags')
span.setTag(ANALYTICS, true)
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで Tags.Analytics
タグを設定することで App Analytics を有効にできます。
using Datadog.Trace;
using(var scope = Tracer.Instance.StartActive("web.request"))
{
// このスパンで Analytics を有効にします
scope.span.SetTag(Tags.Analytics, "true");
}
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで ANALYTICS_KEY
タグを設定することで App Analytics を有効にできます。
<?php
// ... App Analytics を有効にする既存のスパン
$span->setTag(Tag::ANALYTICS_KEY, true);
?>
カスタムインスツルメンテーションを使用するアプリケーションは、スパンで analytics_event
タグを設定することで App Analytics を有効にできます。
...
#include <datadog/tags.h>
...
auto tracer = ...
auto span = tracer->StartSpan("operation_name");
// true のブール値はスパンに対して App Analytics を有効にします
//(サンプルレートは 1.0)。
span->SetTag(datadog::tags::analytics_event, true);
// 0.0~1.0 のダブル値は App Analytics を有効にし、
//サンプルレートを指定された値に設定します。
span->SetTag(datadog::tags::analytics_event, 0.5);
Datadog Agent で
このセクションでは、レガシー App Analytics に関連する構成情報とともに、非推奨の機能について説明します。
サービスごとに解析するスパンの割合を構成するには、datadog.yaml
ファイルに以下のように設定します。
apm_config:
analyzed_rate_by_service:
service_A: 1
service_B: 0.2
service_C: 0.05
サービスおよび操作名ごとに解析するスパンの割合を構成するには、datadog.yaml
ファイルに以下のように設定します。
apm_config:
analyzed_spans:
service_A|operation_name_X: 1
service_A|operation_name_Y: 0.25
service_B|operation_name_Z: 0.01
トラブルシューティング: 1 秒あたりの最大イベント制限
Agent ログに以下のエラーメッセージが表示される場合、アプリケーションは、デフォルトで APM で許可されている毎秒 200 件を超えるトレースイベントを発行しています。
Max events per second reached (current=300.00/s, max=200.00/s). Some events are now being dropped (sample rate=0.54). Consider adjusting event sampling rates.
Agent の APM レート制限を増やすには、Agent のコンフィギュレーションファイル (apm_config:
セクションの下) 内で max_events_per_second
属性を構成します。コンテナ化されたデプロイメント (Docker、Kubernetes など) の場合は、DD_APM_MAX_EPS
環境変数を使用します。
注: APM レート制限を増やすと、App Analytics のコストが増加する可能性があります。