App Analytics
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

App Analytics


App Analytics (旧 Trace Search & Analytics) を使うと、customer_iderror_typeapp_name などのユーザー定義タグで Analyzed Span を絞り込み、リクエストのトラブルシューティングやフィルタリングを行うことができます。次の方法で有効にできます。

: App Analytics を使用するには、Agent v6.7 以上を使用してください。

自動コンフィギュレーション

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.analytics_enabled = true }
  • true は、すべての Web フレームワークで分析を有効にします。
  • false または nil は、明示的に有効にされているインテグレーションを除いて分析を無効にします。(デフォルト)

App Analytics は、Go トレースクライアントのバージョン 1.11.0 以降で使用できます。WithAnalytics のトレーサー開始オプションを使用することで、すべての web インテグレーションに対してグローバルに有効にすることができます。例:

tracer.Start(tracer.WithAnalytics(true))

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_ENABLEDtrue に設定することで、すべてのトップレベルスパンに対してグローバルに有効にすることができます。なお、この設定は、コードで直接設定することもできます。

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 を有効にするには

  1. 環境変数 DD_TRACE_ANALYTICS_ENABLEDtrue に設定します。

  2. nginx.conf ファイルの先頭に env DD_TRACE_ANALYTICS_ENABLED; を追加します。

有効にすると、App Analytics UI に結果が表示されます。App Analytics ページにアクセスして使用を開始します。

その他のサービスの構成 (オプション)

インテグレーションごとの構成

グローバルに設定するほか、次の設定を使用して個々のインテグレーションに対して 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.use :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.postgres.analytics_enabled = True
  • 環境変数: DD_POSTGRES_ANALYTICS_ENABLED=true

デフォルトでは、App Analytics はデータベーストレースをキャプチャしないため、各インテグレーションに対して手動で収集を有効にする必要があります。例:

Datadog.configure { |c| c.use :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_NAME, "my-custom-service");
      span.setTag(DDTags.ANALYTICS_SAMPLE_RATE, 1.0);
    }
  }
}

カスタムインスツルメンテーションを使用するアプリケーションは、スパンで 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_KEY タグを設定することで App Analytics を有効にできます。

Datadog.tracer.trace('my.task') do |span|
  #  分析サンプリングレートを 1.0 に設定します
  span.set_tag(Datadog::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);

スパンのフィルタリング

Analyzed Span は、メタデータを含むサービスの最上位のスパンを表します。有効にすると、デフォルトでは 100% のスループットで Analyzed Span が送信されます。例えば、各 servlet.request スパンが Analyzed Span を生成するため、100 件のリクエストを持つ Java サービスは servlet.request スパンから 100 の Analyzed Span を生成します。Analyzed Span のフィルタリングは、請求可能な Analyzed Span の数を減らすという利点があり、トレースのサンプリングには影響しません。サービスのフィルタリング率が 100% 未満である場合、デフォルトでは Analyzed Span の生成メトリクス「総エラー数」と「総リクエスト数」は推定値を表示するようスケールアップされるため、ユーザーはフィルタリングされた値を表示することができます。

フィルターレートへの変更は、サービスおよび環境別にキューに配置されるため、全体的なスパンボリュームへの影響を予測できます。変更は、確認、編集、承認または拒否することが可能です。適用された変更は、直ちに有効となり請求書にも反映されます

Analyzed Span のフィルタリング