Application Insights におけるサンプリングSampling in Application Insights

サンプリングは Azure Application Insights の機能です。Sampling is a feature in Azure Application Insights. アプリケーション データの分析に関して統計的な正しさを保ちながら、テレメトリのトラフィック、データ コスト、およびストレージ コストを削減する方法として推奨されます。It is the recommended way to reduce telemetry traffic, data costs, and storage costs, while preserving a statistically correct analysis of application data. サンプリングを使用すると、Application Insights によるテレメトリのスロットルを回避することもできます。Sampling also helps you avoid Application Insights throttling your telemetry. サンプリング フィルターによって関連のある項目が選択されるため、診断調査を行うときに項目間を移動できるようになります。The sampling filter selects items that are related, so that you can navigate between items when you are doing diagnostic investigations.

ポータルにメトリック カウントが表示される場合、それらはサンプリングを考慮するように再正規化されます。When metric counts are presented in the portal, they are renormalized to take into account sampling. それにより、統計への影響が最小限に抑えられます。Doing so minimizes any effect on the statistics.

簡単な概要Brief summary

  • サンプリングには、アダプティブ サンプリング、固定レート サンプリング、インジェスト サンプリングの 3 種類があります。There are three different types of sampling: adaptive sampling, fixed-rate sampling, and ingestion sampling.
  • アダプティブ サンプリングは、Application Insights ASP.NET および ASP.NET Core ソフトウェア開発キット (SDK) のすべての最新バージョンで既定で有効になっています。Adaptive sampling is enabled by default in all the latest versions of the Application Insights ASP.NET and ASP.NET Core Software Development Kits (SDKs). また、Azure Functions でも使用されます。It is also used by Azure Functions.
  • 固定レート サンプリングは、ASP.NET、ASP.NET Core、Java (エージェントと SDK の両方)、および Python 用の Application Insights SDK の最近のバージョンで使用できます。Fixed-rate sampling is available in recent versions of the Application Insights SDKs for ASP.NET, ASP.NET Core, Java (both the agent and the SDK), and Python.
  • インジェスト サンプリングは、Application Insights サービス エンドポイントで機能します。Ingestion sampling works on the Application Insights service endpoint. これは、他のサンプリングが有効になっていない場合にのみ適用されます。It only applies when no other sampling is in effect. SDK でテレメトリがサンプリングされると、インジェスト サンプリングは無効になります。If the SDK samples your telemetry, ingestion sampling is disabled.
  • Web アプリケーションの場合、カスタム イベントを記録しており、一連のイベントが確実にまとめて保持または破棄されるようにする必要がある場合は、それらのイベントに同じ OperationId 値を割り当てる必要があります。For web applications, if you log custom events and need to ensure that a set of events is retained or discarded together, the events must have the same OperationId value.
  • Analytics クエリを作成する場合は、 サンプリングを考慮する必要があります。If you write Analytics queries, you should take account of sampling. 具体的には、単純にレコードをカウントするのではなく、 summarize sum(itemCount)を使用する必要があります。In particular, instead of simply counting records, you should use summarize sum(itemCount).
  • パフォーマンス メトリックやカスタム メトリックなど、一部のテレメトリの種類は、サンプリングが有効かどうかに関係なく、常に保持されます。Some telemetry types, including performance metrics and custom metrics, are always kept regardless of whether sampling is enabled or not.

次の表は、各 SDK およびアプリケーションの種類で使用できるサンプリングの種類をまとめたものです。The following table summarizes the sampling types available for each SDK and type of application:

Application Insights SDKApplication Insights SDK アダプティブ サンプリングのサポートAdaptive sampling supported 固定レート サンプリングのサポートFixed-rate sampling supported インジェスト サンプリングのサポートIngestion sampling supported
ASP.NETASP.NET はい (既定でオン)Yes (on by default) はいYes 他のサンプリングが有効になっていない場合のみOnly if no other sampling is in effect
ASP.NET CoreASP.NET Core はい (既定でオン)Yes (on by default) はいYes 他のサンプリングが有効になっていない場合のみOnly if no other sampling is in effect
Azure FunctionsAzure Functions はい (既定でオン)Yes (on by default) いいえNo 他のサンプリングが有効になっていない場合のみOnly if no other sampling is in effect
JavaJava いいえNo はいYes 他のサンプリングが有効になっていない場合のみOnly if no other sampling is in effect
Node.JSNode.JS いいえNo はいYes 他のサンプリングが有効になっていない場合のみOnly if no other sampling is in effect
PythonPython いいえNo はいYes 他のサンプリングが有効になっていない場合のみOnly if no other sampling is in effect
その他すべてAll others いいえNo いいえNo はいYes

注意

このページのほとんどの情報は、Application Insights SDK の現在のバージョンに適用されます。The information on most of this page applies to the current versions of the Application Insights SDKs. SDK の以前のバージョンについては、以下のセクションを参照してください。For information on older versions of the SDKs, see the section below.

サンプリングの種類Types of sampling

3 つの異なるサンプリング方法があります。There are three different sampling methods:

  • アダプティブ サンプリングでは、ASP.NET/ASP.NET Core アプリの SDK および Azure Functions から送信されるテレメトリの量が自動的に調整されます。Adaptive sampling automatically adjusts the volume of telemetry sent from the SDK in your ASP.NET/ASP.NET Core app, and from Azure Functions. これは、ASP.NET または ASP.NET Core SDK を使用する場合の既定のサンプリングです。This is the default sampling when you use the ASP.NET or ASP.NET Core SDK. アダプティブ サンプリングは、現在、ASP.NET サーバー側テレメトリおよび Azure Functions でのみ利用できます。Adaptive sampling is currently only available for ASP.NET server-side telemetry, and for Azure Functions.

  • 固定レート サンプリングは、ASP.NET、ASP.NET Core、または Java サーバーとユーザーのブラウザーの両方から送信されるテレメトリの量を削減します。Fixed-rate sampling reduces the volume of telemetry sent from both your ASP.NET or ASP.NET Core or Java server and from your users' browsers. 管理者がレートを設定します。You set the rate. クライアントとサーバーはサンプリングを同期するので、検索では関連のあるページ ビューと要求の間を移動できます。The client and server will synchronize their sampling so that, in Search, you can navigate between related page views and requests.

  • インジェスト サンプリングは、Application Insights サービス エンドポイントで動作します。Ingestion sampling happens at the Application Insights service endpoint. アプリケーションから受信したテレメトリの一部を、設定したサンプリング レートで破棄します。It discards some of the telemetry that arrives from your app, at a sampling rate that you set. インジェスト サンプリングはアプリから送信されるテレメトリのトラフィックを削減しませんが、トラフィックを月間のクォータ (上限) 以内で維持するのに役立ちます。It doesn't reduce telemetry traffic sent from your app, but helps you keep within your monthly quota. インジェスト サンプリングの主な利点は、アプリを再デプロイすることなくサンプリング レートを設定できることです。The main advantage of ingestion sampling is that you can set the sampling rate without redeploying your app. インジェスト サンプリングは、すべてのサーバーとクライアントで一様に動作しますが、他の種類のサンプリングが動作している場合は適用されません。Ingestion sampling works uniformly for all servers and clients, but it does not apply when any other types of sampling are in operation.

重要

アダプティブ サンプリングまたは固定レート サンプリング方法の実行中は、インジェスト サンプリングは無効になります。If adaptive or fixed rate sampling methods are in operation, ingestion sampling is disabled.

アダプティブ サンプリングAdaptive sampling

アダプティブ サンプリングは、Web サーバー アプリから Application Insights サービス エンドポイントに送信されるテレメトリの量に適用されます。Adaptive sampling affects the volume of telemetry sent from your web server app to the Application Insights service endpoint.

ヒント

アダプティブ サンプリングは、ASP.NET SDK または ASP.NET Core SDK を使用する場合は既定で有効になり、Azure Functions でも既定で有効になります。Adaptive sampling is enabled by default when you use the ASP.NET SDK or the ASP.NET Core SDK, and is also enabled by default for Azure Functions.

この量は、指定されたトラフィックの最大レート内に維持されるように自動的に調整され、設定 MaxTelemetryItemsPerSecond を使用して制御されます。The volume is adjusted automatically to keep within a specified maximum rate of traffic, and is controlled via the setting MaxTelemetryItemsPerSecond. アプリケーションが少量のテレメトリを生成している場合 (デバッグ時や使用量が少ない場合など)、量が MaxTelemetryItemsPerSecond を下回っている限り、サンプリング プロセッサによって項目がドロップされることはありません。If the application produces a low amount of telemetry, such as when debugging or due to low usage, items won't be dropped by the sampling processor as long as volume is below MaxTelemetryItemsPerSecond. テレメトリの量が増えてくると、目的の量を達成するようにサンプリング レートが調整されます。As the volume of telemetry increases, the sampling rate is adjusted so as to achieve the target volume. 調整は、定期的に、送信レートの移動平均に基づいて再計算されます。The adjustment is recalculated at regular intervals, and is based on a moving average of the outgoing transmission rate.

目標の量を達成するため、生成されたテレメトリの一部は破棄されます。To achieve the target volume, some of the generated telemetry is discarded. 他のサンプリング種類と同様に、このアルゴリズムは関連するテレメトリ項目を維持します。But like other types of sampling, the algorithm retains related telemetry items. たとえば、検索でテレメトリを調べているときは、特定の例外に関連する要求を検索できます。For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception.

要求レートや例外レートなどのメトリック カウントはサンプリング レートを補正するように調整され、メトリックス エクスプローラーにはほぼ正しい値が表示されます。Metric counts such as request rate and exception rate are adjusted to compensate for the sampling rate, so that they show approximately correct values in Metric Explorer.

ASP.NET アプリケーション用のアダプティブ サンプリングの構成Configuring adaptive sampling for ASP.NET applications

注意

このセクションは、ASP.NET Core アプリケーションではなく、ASP.NET アプリケーションに適用されます。This section applies to ASP.NET applications, not to ASP.NET Core applications. ASP.NET Core アプリケーション用のアダプティブ サンプリングの構成については、このドキュメントで後述します。Learn about configuring adaptive sampling for ASP.NET Core applications later in this document.

ApplicationInsights.config で、AdaptiveSamplingTelemetryProcessor ノードのいくつかのパラメーターを調整できます。In ApplicationInsights.config, you can adjust several parameters in the AdaptiveSamplingTelemetryProcessor node. 次の図は既定値です。The figures shown are the default values:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    アダプティブ アルゴリズムが各サーバー ホストで収集しようとする論理演算の目標レート。The target rate of logical operations that the adaptive algorithm aims to collect on each server host. Web アプリが多数のホストで実行される場合は、Application Insights ポータルのトラフィックの目標レート内に収まるようにこの値を減らします。If your web app runs on many hosts, reduce this value so as to remain within your target rate of traffic at the Application Insights portal.

  • <EvaluationInterval>00:00:15</EvaluationInterval>

    テレメトリの現在のレートを再評価する間隔。The interval at which the current rate of telemetry is reevaluated. 評価は移動平均として実行されます。Evaluation is performed as a moving average. 急変しやすいテレメトリの場合は、この間隔を短くすることもできます。You might want to shorten this interval if your telemetry is liable to sudden bursts.

  • <SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>

    サンプリング率が変化してから、どのくらいの時間が経過すると、サンプリング率を下げてキャプチャ データ量を減らすことができるようになるかを指定します。When sampling percentage value changes, how soon after are we allowed to lower the sampling percentage again to capture less data?

  • <SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>

    サンプリング率が変化してから、どのくらいの時間が経過すると、サンプリング率を上げてキャプチャ データ量を増やすことができるようになるかを指定します。When sampling percentage value changes, how soon after are we allowed to increase the sampling percentage again to capture more data?

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    サンプリング率はさまざまであるため、設定できる最小値を指定します。As sampling percentage varies, what is the minimum value we're allowed to set?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    サンプリング率はさまざまであるため、設定できる最大値を指定します。As sampling percentage varies, what is the maximum value we're allowed to set?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    移動平均の計算で最新値に割り当てられる重みを指定します。In the calculation of the moving average, this specifies the weight that should be assigned to the most recent value. 1 以下の値を使用します。Use a value equal to or less than 1. 小さい値にすると、急変に対する反応が低いアルゴリズムになります。Smaller values make the algorithm less reactive to sudden changes.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    アプリの起動直後にサンプリングするテレメトリの量。The amount of telemetry to sample when the app has just started. デバッグ中はこの値を減らさないでください。Don't reduce this value while you're debugging.

  • <ExcludedTypes>Trace;Exception</ExcludedTypes>

    サンプリング対象にしない種類のセミコロン区切りのリスト。A semi-colon delimited list of types that you do not want to be subject to sampling. 認識される種類は、DependencyEventExceptionPageViewRequestTrace です。Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. 指定した種類はすべてのテレメトリが送信されます。指定されていない種類はサンプリングされます。All telemetry of the specified types is transmitted; the types that are not specified will be sampled.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    サンプリング対象にしない種類のセミコロン区切りのリスト。A semi-colon delimited list of types that you do want to subject to sampling. 認識される種類は、DependencyEventExceptionPageViewRequestTrace です。Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. 指定した種類はサンプリングされます。他のすべての種類のテレメトリは常に送信されます。The specified types will be sampled; all telemetry of the other types will always be transmitted.

アダプティブ サンプリングをオフにするには、ApplicationInsights.config から AdaptiveSamplingTelemetryProcessor ノードを削除します。To switch off adaptive sampling, remove the AdaptiveSamplingTelemetryProcessor node(s) from ApplicationInsights.config.

代替手段:コードでアダプティブ サンプリングを構成するAlternative: Configure adaptive sampling in code

.config ファイルでサンプリング パラメーターを設定する代わりに、プログラムでこれらの値を設定できます。Instead of setting the sampling parameter in the .config file, you can programmatically set these values.

  1. .config ファイルからすべての AdaptiveSamplingTelemetryProcessor ノードを削除します。Remove all the AdaptiveSamplingTelemetryProcessor node(s) from the .config file.

  2. 次のスニペットを使用してアダプティブ サンプリングを構成します。Use the following snippet to configure adaptive sampling:

    using Microsoft.ApplicationInsights;
    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    
    // ...
    
    var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    
    // Enable AdaptiveSampling so as to keep overall telemetry volume to 5 items per second.
    builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5);
    
    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();
    

    (テレメトリ プロセッサについてはこちらをご覧ください。)(Learn about telemetry processors.)

テレメトリの種類ごとにサンプリング レートを個別に調整したり、特定の種類をまったくサンプリングされないように除外したりすることもできます。You can also adjust the sampling rate for each telemetry type individually, or can even exclude certain types from being sampled at all:

// The following configures adaptive sampling with 5 items per second, and also excludes Dependency telemetry from being subjected to sampling.
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");

ASP.NET Core アプリケーション用のアダプティブ サンプリングの構成Configuring adaptive sampling for ASP.NET Core applications

ASP.NET Core アプリケーションには ApplicationInsights.config が存在しないため、コードを使用してすべての構成を行います。There is no ApplicationInsights.config for ASP.NET Core applications, so all configuration is done via code. アダプティブ サンプリングは、すべての ASP.NET Core アプリケーションで既定で有効にされています。Adaptive sampling is enabled by default for all ASP.NET Core applications. サンプリング動作は無効にしたり、カスタマイズしたりできます。You can disable or customize the sampling behavior.

アダプティブ サンプリングを無効にするTurning off adaptive sampling

Application Insights サービスを追加するときに、メソッド ConfigureServicesStartup.cs ファイル内の ApplicationInsightsServiceOptions を使用して、既定のサンプリング機能を無効にできます。The default sampling feature can be disabled while adding Application Insights service, in the method ConfigureServices, using ApplicationInsightsServiceOptions within the Startup.cs file:

public void ConfigureServices(IServiceCollection services)
{
    // ...

    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    aiOptions.EnableAdaptiveSampling = false;
    services.AddApplicationInsightsTelemetry(aiOptions);

    //...
}

上記のコードによって、アダプティブ サンプリングが無効になります。The above code will disable adaptive sampling. その他のカスタマイズ オプションを使用したサンプリングを追加するには、次の手順に従います。Follow the steps below to add sampling with more customization options.

サンプリング設定を構成するConfigure sampling settings

サンプリング動作をカスタマイズするには、次に示すように、TelemetryProcessorChainBuilder の拡張メソッドを使用します。Use extension methods of TelemetryProcessorChainBuilder as shown below to customize sampling behavior.

重要

このメソッドを使用してサンプリングを構成する場合は、AddApplicationInsightsTelemetry()を呼び出すときに aiOptions.EnableAdaptiveSampling プロパティを false に設定してください。If you use this method to configure sampling, please make sure to set the aiOptions.EnableAdaptiveSampling property to false when calling AddApplicationInsightsTelemetry().

using Microsoft.ApplicationInsights.Extensibility

public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
    var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = configuration.TelemetryProcessorChainBuilder;

    // Using adaptive sampling
    builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5);

    // Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling.
    // builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");

    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();

    // ...
}

Azure Functions 用のアダプティブ サンプリングの構成Configuring adaptive sampling for Azure Functions

Azure Functions で実行されているアプリに対してアダプティブ サンプリングを構成するには、こちらのページの手順に従います。Follow instructions from this page to configure adaptive sampling for apps running in Azure Functions.

固定レート サンプリングFixed-rate sampling

固定レート サンプリングは、Web サーバーおよび Web ブラウザーから送信されるトラフィックを削減します。Fixed-rate sampling reduces the traffic sent from your web server and web browsers. アダプティブ サンプリングとは異なり、管理者によって決定された固定レートでテレメトリを削減します。Unlike adaptive sampling, it reduces telemetry at a fixed rate decided by you. 固定レート サンプリングは、ASP.NET、ASP.NET Core、Java、および Python アプリケーションで使用できます。Fixed-rate sampling is available for ASP.NET, ASP.NET Core, Java and Python applications.

他のサンプリング手法と同様に、ここでも関連する項目が保持されます。Like other sampling techniques, this also retains related items. また、クライアントとサーバーのサンプリングが同期されて、関連する項目が維持されます。たとえば、検索でページ ビューを見ると、それに関連するサーバー要求を見つけることができます。It also synchronizes the client and server sampling so that related items are retained - for example, when you look at a page view in Search, you can find its related server requests.

メトリックス エクスプローラーでは、要求や例外の数などのレートに係数が乗算されて、サンプリング レートに対してほぼ正しくなるように補正されます。In Metrics Explorer, rates such as request and exception counts are multiplied by a factor to compensate for the sampling rate, so that they are approximately correct.

ASP.NET アプリケーション用の固定レート サンプリングの構成Configuring fixed-rate sampling for ASP.NET applications

  1. アダプティブ サンプリングを無効にする:ApplicationInsights.config で、AdaptiveSamplingTelemetryProcessor ノードを削除またはコメント アウトします。Disable adaptive sampling: In ApplicationInsights.config, remove or comment out the AdaptiveSamplingTelemetryProcessor node.

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. 固定レート サンプリング モジュールを有効にします。Enable the fixed-rate sampling module. 次のスニペットを ApplicationInsights.config に追加します。Add this snippet to ApplicationInsights.config:

    <TelemetryProcessors>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.SamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <!-- Set a percentage close to 100/N where N is an integer. -->
            <!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
            <SamplingPercentage>10</SamplingPercentage>
        </Add>
    </TelemetryProcessors>
    

    または、ApplicationInsights.config ファイルでサンプリング パラメーターを設定する代わりに、プログラムでこれらの値を設定できます。Alternatively, instead of setting the sampling parameter in the ApplicationInsights.config file, you can programmatically set these values:

    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    
    // ...
    
    var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    
    builder.UseSampling(10.0); // percentage
    
    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();
    

    (テレメトリ プロセッサについてはこちらをご覧ください。)(Learn about telemetry processors.)

ASP.NET Core アプリケーション用の固定レート サンプリングの構成Configuring fixed-rate sampling for ASP.NET Core applications

  1. アダプティブ サンプリングを無効にする:ApplicationInsightsServiceOptions を使用して、ConfigureServices メソッドで変更を行うことができます。Disable adaptive sampling: Changes can be made in the ConfigureServices method, using ApplicationInsightsServiceOptions:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    
        //...
    }
    
  2. 固定レート サンプリング モジュールを有効にします。Enable the fixed-rate sampling module. 次のスニペットに示すように、Configure メソッドで変更を行うことができます。Changes can be made in the Configure method as shown in the below snippet:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var configuration = app.ApplicationServices.GetService<TelemetryConfiguration>();
    
        var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
        // For older versions of the Application Insights SDK, use the following line instead:
        // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling   
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
    
        builder.Build();
    
        // ...
    }
    

Java アプリケーション用の固定レート サンプリングの構成Configuring fixed-rate sampling for Java applications

Java エージェントおよび SDK では、既定ではどのサンプリングも有効になっていません。By default no sampling is enabled in the Java agent and SDK. 現在、固定レート サンプリングのみがサポートされています。Currently it only supports fixed rate sampling. Java では、アダプティブ サンプリングはサポートされていません。Adaptive sampling is not supported in Java.

Java エージェントの構成Configuring Java Agent

  1. applicationinsights-agent-3.0.0-PREVIEW.5.jar をダウンロードしますDownload applicationinsights-agent-3.0.0-PREVIEW.5.jar

  2. サンプリングを有効にするには、ApplicationInsights.json ファイルに以下を追加します。To enable sampling add the following to your ApplicationInsights.json file:

{
  "instrumentationSettings": {
    "preview": {
      "sampling": {
        "fixedRate": {
          "percentage": 10 //this is just an example that shows you how to enable only only 10% of transaction 
        }
      }
    }
  }
}

Java SDK の構成Configuring Java SDK

  1. 最新の Application Insights Java SDK を使用して Web アプリケーションをダウンロードして構成します。Download and configure your web application with the latest Application Insights Java SDK.

  2. ApplicationInsights.xml ファイルに次のスニペットを追加することによって、固定レート サンプリング モジュールを有効にしますEnable the fixed-rate sampling module by adding the following snippet to ApplicationInsights.xml file:

    <TelemetryProcessors>
        <BuiltInProcessors>
            <Processor type="FixedRateSamplingTelemetryProcessor">
                <!-- Set a percentage close to 100/N where N is an integer. -->
                <!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
                <Add name="SamplingPercentage" value="50" />
            </Processor>
        </BuiltInProcessors>
    </TelemetryProcessors>
    
  3. Processor タグの FixedRateSamplingTelemetryProcessor 内の次のタグを使用して、特定の種類のテレメトリをサンプリングに含めたり、サンプリングから除外したりできます。You can include or exclude specific types of telemetry from sampling using the following tags inside the Processor tag's FixedRateSamplingTelemetryProcessor:

    <ExcludedTypes>
        <ExcludedType>Request</ExcludedType>
    </ExcludedTypes>
    
    <IncludedTypes>
        <IncludedType>Exception</IncludedType>
    </IncludedTypes>
    

サンプリングに含めたり、サンプリングから除外したりできるテレメトリの種類は、DependencyEventExceptionPageViewRequest、および Trace です。The telemetry types that can be included or excluded from sampling are: Dependency, Event, Exception, PageView, Request, and Trace.

注意

サンプリング率には、N を整数として 100/N に近い割合を選択します。For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. サンプリングでは現在、その他の値はサポートされていません。Currently sampling doesn't support other values.

OpenCensus Python アプリケーション用の固定レート サンプリングの構成Configuring fixed-rate sampling for OpenCensus Python applications

最新の OpenCensus Azure Monitor エクスポーターを使用してアプリケーションをインストルメント化します。Instrument your application with the latest OpenCensus Azure Monitor exporters.

注意

メトリック エクスポーターには固定レート サンプリングを利用できません。Fixed-rate sampling is not available for the metrics exporter. つまり、カスタム メトリックは、サンプリングを構成できない唯一のテレメトリということになります。This means custom metrics are the only types of telemetry where sampling can NOT be configured. メトリック エクスポーターからは、それが追跡するあらゆるテレメトリが送信されます。The metrics exporter will send all telemetry that it tracks.

追跡の固定レート サンプリングFixed-rate sampling for tracing

Tracer 構成の一部として sampler を指定できます。You may specify a sampler as part of your Tracer configuration. 明示的なサンプラーが指定されていない場合は、既定で ProbabilitySampler が使用されます。If no explicit sampler is provided, the ProbabilitySampler will be used by default. ProbabilitySampler では、既定で 1/10,000 のレートが使用されます。これは、10,000 の要求のうちの 1 つが Application Insights に送信されることを意味します。The ProbabilitySampler would use a rate of 1/10000 by default, meaning one out of every 10000 requests will be sent to Application Insights. サンプリング レートを指定する場合は、以下を参照してください。If you want to specify a sampling rate, see below.

サンプリング レートを指定する場合は、サンプリング レートが 0.0 から 1.0 の範囲であるサンプラーを Tracer に指定していることを確認します。To specify the sampling rate, make sure your Tracer specifies a sampler with a sampling rate between 0.0 and 1.0 inclusive. サンプリング レート 1.0 は 100% を表します。つまり、すべての要求は Application Insights にテレメトリとして送信されます。A sampling rate of 1.0 represents 100%, meaning all of your requests will be sent as telemetry to Application Insights.

tracer = Tracer(
    exporter=AzureExporter(
        instrumentation_key='00000000-0000-0000-0000-000000000000',
    ),
    sampler=ProbabilitySampler(1.0),
)

ログの固定レート サンプリングFixed-rate sampling for logs

オプションの引数 logging_sampling_rate を変更することで、AzureLogHandler の固定レート サンプリングを構成できます。You can configure fixed-rate sampling for AzureLogHandler by modifying the logging_sampling_rate optional argument. 引数を指定しない場合、1.0 のサンプリング レートが使用されます。If no argument is supplied, a sampling rate of 1.0 will be used. サンプリング レート 1.0 は 100% を表します。つまり、すべての要求は Application Insights にテレメトリとして送信されます。A sampling rate of 1.0 represents 100%, meaning all of your requests will be sent as telemetry to Application Insights.

handler = AzureLogHandler(
    instrumentation_key='00000000-0000-0000-0000-000000000000',
    logging_sampling_rate=0.5,
)

JavaScript を使用した Web ページ用の固定レート サンプリングの構成Configuring fixed-rate sampling for web pages with JavaScript

JavaScript ベースの Web ページは、Application Insights を使用するように構成できます。JavaScript-based web pages can be configured to use Application Insights. テレメトリは、ユーザーのブラウザー内で実行中のクライアント アプリケーションから送信され、ページは任意のサーバーからホストできます。Telemetry is sent from the client application running within the user's browser, and the pages can be hosted from any server.

Application Insights 用に JavaScript ベースの Web ページを構成する場合は、Application Insights ポータルから JavaScript スニペットを入手して、それを変更します。When you configure your JavaScript-based web pages for Application Insights, modify the JavaScript snippet that you get from the Application Insights portal.

ヒント

JavaScript が含まれている ASP.NET アプリでは、スニペットは通常 _Layout.cshtml にあります。In ASP.NET apps with JavaScript included, the snippet typically goes in _Layout.cshtml.

samplingPercentage: 10, のような行をインストルメンテーション キーの前に挿入します。Insert a line like samplingPercentage: 10, before the instrumentation key:

<script>
    var appInsights = // ... 
    ({ 
      // Value must be 100/N where N is an integer.
      // Valid examples: 50, 25, 20, 10, 5, 1, 0.1, ...
      samplingPercentage: 10, 

      instrumentationKey: ...
    }); 

    window.appInsights = appInsights; 
    appInsights.trackPageView(); 
</script>

サンプリング率には、N を整数として 100/N に近い割合を選択します。For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. サンプリングでは現在、その他の値はサポートされていません。Currently sampling doesn't support other values.

サーバー側とクライアント側のサンプリングの調整Coordinating server-side and client-side sampling

クライアント側 JavaScript SDK では、サーバー側 SDK と連携して固定レート サンプリングが行われます。The client-side JavaScript SDK participates in fixed-rate sampling in conjunction with the server-side SDK. インストルメント化されたページでは、サーバー側 SDK でサンプリング対象にすると判断したのと同じユーザーからのクライアント側テレメトリのみが送信されます。The instrumented pages will only send client-side telemetry from the same user for which the server-side SDK made its decision to include in the sampling. このロジックは、クライアント側とサーバー側のアプリケーション間でユーザー セッションの整合性を維持することを目的としています。This logic is designed to maintain the integrity of user sessions across client- and server-side applications. その結果、Application Insights 内の特定のテレメトリ項目から、このユーザーまたはセッションに関するその他すべてのテレメトリ項目を見つけることができ、検索では関連のあるページ ビューと要求の間を移動できます。As a result, from any particular telemetry item in Application Insights you can find all other telemetry items for this user or session and in Search, you can navigate between related page views and requests.

クライアント側とサーバー側のテレメトリに、調整済みのサンプルが表示されない場合:If your client and server-side telemetry don't show coordinated samples:

  • サーバーとクライアントの両方でサンプリングを有効にしていることを確認してください。Verify that you enabled sampling both on the server and client.
  • クライアントとサーバーの両方で同じサンプリング率を設定していることを確認してください。Check that you set the same sampling percentage in both the client and server.
  • SDK のバージョンが 2.0 以降であることを確認してください。Make sure that the SDK version is 2.0 or above.

インジェスト サンプリングIngestion sampling

インジェスト サンプリングは、Web サーバー、ブラウザー、デバイスからのテレメトリが Application Insights サービス エンドポイントに到達した時点で動作します。Ingestion sampling operates at the point where the telemetry from your web server, browsers, and devices reaches the Application Insights service endpoint. アプリから送信されるテレメトリ トラフィックを削減することはありませんが、Application Insights によって処理および維持 (そして課金) される量を削減します。Although it doesn't reduce the telemetry traffic sent from your app, it does reduce the amount processed and retained (and charged for) by Application Insights.

アプリが頻繁に月間クォータを超えて、SDK ベースのいずれかのサンプリング種類を使用するオプションがない場合は、この種類のサンプリングを使用します。Use this type of sampling if your app often goes over its monthly quota and you don't have the option of using either of the SDK-based types of sampling.

[使用量と推定コスト] ページで、サンプリング レートを設定します。Set the sampling rate in the Usage and estimated costs page:

アプリケーションの [概要] ブレードで、[設定]、[クォータ]、[サンプル] の順にクリックし、サンプリング レートを選択して、[更新] をクリックします。

他のサンプリング種類と同様に、このアルゴリズムは関連するテレメトリ項目を維持します。Like other types of sampling, the algorithm retains related telemetry items. たとえば、検索でテレメトリを調べているときは、特定の例外に関連する要求を検索できます。For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception. メトリックはそのような要求のレートをカウントし、例外レートを正しく維持します。Metric counts such as request rate and exception rate are correctly retained.

サンプリングによって破棄されたデータ ポイントは、 連続エクスポートなどの Application Insights の機能では使用できません。Data points that are discarded by sampling are not available in any Application Insights feature such as Continuous Export.

インジェスト サンプリングは、アダプティブ サンプリングまたは固定レート サンプリングの実行中は動作しません。Ingestion sampling doesn't operate while adaptive or fixed-rate sampling is in operation. アダプティブ サンプリングは、ASP.NET SDK または ASP.NET Core SDK が使用されている場合に、または Azure App Service あるいは Status Monitor を使用して Application Insights が有効になっている場合に、既定で有効になります。Adaptive sampling is enabled by default when the ASP.NET SDK or the ASP.NET Core SDK is being used, or when Application Insights is enabled in Azure App Service or by using Status Monitor. Application Insights サービス エンドポイントによってテレメトリが受信されると、そのテレメトリが調べられ、サンプリング レートが100% 未満であると報告された (つまり、テレメトリがサンプリングされている) 場合、設定したインジェスト サンプリング レートは無視されます。When telemetry is received by the Application Insights service endpoint, it examines the telemetry and if the sampling rate is reported to be less than 100% (which indicates that telemetry is being sampled) then the ingestion sampling rate that you set is ignored.

警告

ポータル タイルに表示される値は、インジェスト サンプリングに設定した値を示します。The value shown on the portal tile indicates the value that you set for ingestion sampling. いずれかの種類の SDK サンプリング (アダプティブまたは固定レート サンプリング) が動作している場合、この値は実際のサンプリング レートを表しません。It doesn't represent the actual sampling rate if any sort of SDK sampling (adaptive or fixed-rate sampling) is in operation.

サンプリングを使用する場合When to use sampling

一般に、ほとんどの中小規模アプリケーションでは、サンプリングは不要です。In general, for most small and medium size applications you don't need sampling. 最も役立つ診断情報や最も正確な統計は、すべてのユーザー アクティビティからデータを収集することで入手します。The most useful diagnostic information and most accurate statistics are obtained by collecting data on all your user activities.

サンプリングの主な利点:The main advantages of sampling are:

  • アプリが短期間に非常に高いレートのテレメトリを送信すると、Application Insights サービスによってデータ ポイントがドロップ ("スロットル") される。Application Insights service drops ("throttles") data points when your app sends a very high rate of telemetry in a short time interval. サンプリングによって、アプリケーションでスロットルが発生する可能性が減少する。Sampling reduces the likelihood that your application will see throttling occur.
  • データ ポイントを、価格レベルの クォータ 以内に抑える。To keep within the quota of data points for your pricing tier.
  • テレメトリの収集によるネットワーク トラフィックを削減する。To reduce network traffic from the collection of telemetry.

使用する必要があるサンプリングの種類Which type of sampling should I use?

次の場合はインジェスト サンプリングを使用します。Use ingestion sampling if:

  • テレメトリの月間クォータを消費することが多い場合。You often use your monthly quota of telemetry.
  • ユーザーの Web ブラウザーから取得するテレメトリが多すぎる場合。You're getting too much telemetry from your users' web browsers.
  • サンプリングをサポートしていない SDK のバージョン (たとえば、2 より前の ASP.NET バージョン) を使用している場合。You're using a version of the SDK that doesn't support sampling - for example ASP.NET versions earlier than 2.

次の場合は固定レート サンプリングを使用します。Use fixed-rate sampling if:

  • クライアントとサーバーのサンプリングを同期する場合。検索でイベントを調査するときに、クライアントとサーバーの関連するイベント間を移動できます (ページ ビュー、HTTP 要求など)。You want synchronized sampling between client and server so that, when you're investigating events in Search, you can navigate between related events on the client and server, such as page views and HTTP requests.
  • アプリに適したサンプリング率を確保する場合。You are confident of the appropriate sampling percentage for your app. 正確なメトリックを取得できる程度に高く、価格クォータとスロットル制限を超えないレートにする必要があります。It should be high enough to get accurate metrics, but below the rate that exceeds your pricing quota and the throttling limits.

アダプティブ サンプリングを使用する場合。Use adaptive sampling:

他の形式のサンプリングを使う条件に当てはまらない場合は、アダプティブ サンプリングをお勧めします。If the conditions to use the other forms of sampling do not apply, we recommend adaptive sampling. この設定は、ASP.NET/ASP.NET Core SDK で既定で有効になっています。This setting is enabled by default in the ASP.NET/ASP.NET Core SDK. 一定の最小レートに達するまでトラフィックは減らないので、使用頻度の低いサイトは一切サンプリングされない可能性があります。It will not reduce traffic until a certain minimum rate is reached, therefore low-use sites will probably not be sampled at all.

サンプリングが動作しているかどうかを把握するKnowing whether sampling is in operation

適用されている場所に関係なく、実際のサンプリング レートを検出するには、次のように Analytics クエリ を使用します。To discover the actual sampling rate no matter where it has been applied, use an Analytics query such as this:

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

いずれかの種類の RetainedPercentage が 100 未満である場合、その種類のテレメトリはサンプリングされています。If you see that RetainedPercentage for any type is less than 100, then that type of telemetry is being sampled.

重要

Application Insights は、上で説明したどのサンプリング手法でも、セッション、メトリック (カスタム メトリックを含む)、またはパフォーマンス カウンターのテレメトリの種類をサンプリングしません。Application Insights does not sample session, metrics (including custom metrics), or performance counter telemetry types in any of the sampling techniques. これらのテレメトリの種類では精度の低下がきわめて望ましくないため、これらの種類は常にサンプリングから除外されます。These types are always excluded from sampling as a reduction in precision can be highly undesirable for these telemetry types.

サンプリングのしくみHow sampling works

サンプリング アルゴリズムによって、ドロップするテレメトリ項目と保持する項目が決定されます。The sampling algorithm decides which telemetry items to drop, and which ones to keep. これは、サンプリングが SDK または Application Insights サービスのどちらで実行されるかに関係なく当てはまります。This is true whether sampling is done by the SDK or in the Application Insights service. サンプリングはいくつかのルールに基づいて決定されますが、このルールのねらいは、削減されたデータ セットを使用する場合でも、Application Insights の診断機能を実用的で信頼性の高いものに維持しながら、すべての相互に関連するデータ ポイントはそのままの状態で保持することです。The sampling decision is based on several rules that aim to preserve all interrelated data points intact, maintaining a diagnostic experience in Application Insights that is actionable and reliable even with a reduced data set. たとえば、アプリのサンプルに失敗した要求が含まれている場合、追加のテレメトリ項目 (この要求に対してログに記録された例外やトレースなど) は保持されます。For example, if your app has a failed request included in a sample, the additional telemetry items (such as exception and traces logged for this request) will be retained. サンプリングでは、すべてをまとめて維持するか、ドロップするかのどちらかです。Sampling either keeps or drops them all together. そのため、Application Insights で要求の詳細を表示する場合は、その要求に加えて、関連付けられているテレメトリ項目も常に表示されます。As a result, when you look at the request details in Application Insights, you can always see the request along with its associated telemetry items.

サンプリングの判定は、要求の操作 ID に基づいています。つまり、特定の操作に属するすべてのテレメトリ項目が保持されるか、または破棄されるかのどちらかです。The sampling decision is based on the operation ID of the request, which means that all telemetry items belonging to a particular operation is either preserved or dropped. 操作 ID が設定されていないテレメトリ項目 (HTTP コンテキストのない非同期スレッドから報告されたテレメトリ項目など) の場合、サンプリングでは単純に各種類のテレメトリ項目を一定の割合ずつキャプチャします。For the telemetry items that do not have an operation ID set (such as telemetry items reported from asynchronous threads with no HTTP context) sampling simply captures a percentage of telemetry items of each type.

テレメトリを表示する場合、Application Insights サービスは、不足しているデータ ポイントを補正するために、収集時に使用したものと同じサンプリング率でメトリックを調整します。When presenting telemetry back to you, the Application Insights service adjusts the metrics by the same sampling percentage that was used at the time of collection, to compensate for the missing data points. そのため、Application Insights でテレメトリを表示する場合、ユーザーは統計的に正しく、実際の数値に非常に近い近似値を見ていることになります。Hence, when looking at the telemetry in Application Insights, the users are seeing statistically correct approximations that are very close to the real numbers.

近似精度は、構成したサンプリング率に大きく左右されます。The accuracy of the approximation largely depends on the configured sampling percentage. また、多数のユーザーからの同じような要求を大量に処理するアプリケーションの場合は、近似精度が高くなります。Also, the accuracy increases for applications that handle a large volume of generally similar requests from lots of users. 一方で、処理量が膨大ではないアプリケーションの場合、通常はクォータの範囲内ですべてのテレメトリを送信でき、スロットルによるデータの損失もないため、サンプリングは必要ありません。On the other hand, for applications that don't work with a significant load, sampling is not needed as these applications can usually send all their telemetry while staying within the quota, without causing data loss from throttling.

よく寄せられる質問Frequently asked questions

ASP.NET および ASP.NET Core SDK での既定のサンプリング動作はどのようなものですか。What is the default sampling behavior in the ASP.NET and ASP.NET Core SDKs?

  • 上の SDK の最新バージョンのいずれかを使用している場合は、1 秒あたり 5 つのテレメトリ項目のアダプティブ サンプリングが既定で有効になります。If you are using one of the latest versions of the above SDK, Adaptive Sampling is enabled by default with five telemetry items per second. 既定では 2 つの AdaptiveSamplingTelemetryProcessor ノードが追加され、一方はサンプリングに Event の種類を含め、もう一方は Event の種類をサンプリングから除外します。There are two AdaptiveSamplingTelemetryProcessor nodes added by default, and one includes the Event type in sampling, while the other excludes the Event type from sampling. この構成は、SDK がテレメトリ項目を Event の種類の 5 つのテレメトリ項目と、その他のすべての種類の組み合わせの 5 つのテレメトリ項目に制限することにより、Events が確実に他のテレメトリの種類とは別にサンプリングされるようにすることを示します。This configuration means that the SDK will try to limit telemetry items to five telemetry items of Event types, and five telemetry items of all other types combined, thereby ensuring that Events are sampled separately from other telemetry types. イベントは通常、ビジネス テレメトリに使用されるため、多くの場合、診断テレメトリの量によって影響を受けないようにする必要があります。Events are typically used for business telemetry, and most likely should not be affected by diagnostic telemetry volumes.

    生成される既定の ApplicationInsights.config ファイルを以下に示します。The following shows the default ApplicationInsights.config file generated. ASP.NET Core では、同じ既定の動作がコードで有効になります。In ASP.NET Core, the same default behavior is enabled in code. この既定の動作を変更するには、このページの前のセクションの例を使用します。Use the examples in the earlier section of this page to change this default behavior.

    <TelemetryProcessors>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
            <ExcludedTypes>Event</ExcludedTypes>
        </Add>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
            <IncludedTypes>Event</IncludedTypes>
        </Add>
    </TelemetryProcessors>
    

テレメトリを複数回サンプリングできますかCan telemetry be sampled more than once?

  • いいえ。No. ある項目が既にサンプリングされている場合、SamplingTelemetryProcessor はサンプリングの検討からその項目を無視します。SamplingTelemetryProcessors ignore items from sampling considerations if the item is already sampled. 同じことがインジェスト サンプリングにも当てはまります。これにより、SDK 自体で既にサンプリングされている項目にはサンプリングが適用されません。The same is true for ingestion sampling as well, which won't apply sampling to those items already sampled in the SDK itself.

サンプリングを、"各テレメトリ タイプの X% を収集" という単純な方法にしないのはなぜですか。Why isn't sampling a simple "collect X percent of each telemetry type"?

  • このサンプリング方法では、メトリックの近似精度は非常に高レベルになりますが、一方でユーザーごと、セッションごと、要求ごとに診断データを関連付けるという、診断には欠かせない機能が利用できなくなります。While this sampling approach would provide with a high level of precision in metric approximations, it would break the ability to correlate diagnostic data per user, session, and request, which is critical for diagnostics. そのため、"アプリ ユーザーの X% に関するすべてのテレメトリ項目を収集"、または "アプリ要求の X% に関するすべてのテレメトリを収集" のようなポリシーを使用すると、サンプリングがより適切に実行されます。Therefore, sampling works better with policies like "collect all telemetry items for X percent of app users", or "collect all telemetry for X percent of app requests". 要求に関連付けられていないテレメトリ項目 (バックグラウンドの非同期処理など) の場合、フォールバックは "テレメトリの種類ごとにすべての項目の X % を収集する" ことです。For the telemetry items not associated with the requests (such as background asynchronous processing), the fallback is to "collect X percent of all items for each telemetry type."

サンプリング率は、時間経過に伴い変化する可能性がありますか。Can the sampling percentage change over time?

  • はい。アダプティブ サンプリングの場合、現在監視されているテレメトリのデータ量に基づいて、サンプリング率が徐々に変化します。Yes, adaptive sampling gradually changes the sampling percentage, based on the currently observed volume of the telemetry.

固定レート サンプリング率を使用している場合、自分のアプリに最適なサンプリング率は、どのようにして確認できますか。If I use fixed-rate sampling, how do I know which sampling percentage will work the best for my app?

  • 1 つの方法として、アダプティブ サンプリングから始め、決定されたレートを確認したら (前の質問を参照)、そのレートを使って固定レート サンプリングに切り替えます。One way is to start with adaptive sampling, find out what rate it settles on (see the above question), and then switch to fixed-rate sampling using that rate.

    それ以外では、推測するしかありません。Otherwise, you have to guess. Application Insights での現在のテレメトリ使用状況を分析し、発生しているスロットルを観察して、収集されるテレメトリの量を見積もります。Analyze your current telemetry usage in Application Insights, observe any throttling that is occurring, and estimate the volume of the collected telemetry. この 3 つの情報に、選択した価格レベルを合わせて考えると、収集されるテレメトリの量をどれくらい削減すればよいかがわかります。These three inputs, together with your selected pricing tier, suggest how much you might want to reduce the volume of the collected telemetry. ただし、ユーザー数の増加やテレメトリ量の何らかの変化によって、見積りが無効になることがあります。However, an increase in the number of your users or some other shift in the volume of telemetry might invalidate your estimate.

サンプリング率を低く構成しすぎると、どうなりますか。What happens if I configure the sampling percentage to be too low?

  • Application Insights がデータ量の減少に関してデータの視覚化を補正しようとしている場合、サンプリング率を極端に低くすると過度にアグレッシブなサンプリングが行われ、近似精度の低下につながります。Excessively low sampling percentages cause over-aggressive sampling, and reduce the accuracy of the approximations when Application Insights attempts to compensate the visualization of the data for the data volume reduction. また、頻度の低い失敗や遅延要求の一部はサンプリングから除外される場合があるため、診断機能に悪影響を及ぼす可能性もあります。Also your diagnostic experience might be negatively impacted, as some of the infrequently failing or slow requests may be sampled out.

サンプリング率を高く構成しすぎると、どうなりますか。What happens if I configure the sampling percentage to be too high?

  • サンプリング率を高く構成しすぎた (十分にアグレッシブでない) 場合は、収集されるテレメトリの量が十分に減少しないことになります。Configuring too high a sampling percentage (not aggressive enough) results in an insufficient reduction in the volume of the collected telemetry. スロットルに関連するテレメトリ データが失われる可能性が残り、超過料金によって Application Insights の使用コストが予定額を超える場合もあります。You may still experience telemetry data loss related to throttling, and the cost of using Application Insights might be higher than you planned due to overage charges.

サンプリングはどのようなプラットフォームで使用できますか。On what platforms can I use sampling?

  • インジェスト サンプリングは、SDK がサンプリングを実行していない場合に任意のテレメトリが特定の量を超えると、自動的に実行される場合があります。Ingestion sampling can occur automatically for any telemetry above a certain volume, if the SDK is not performing sampling. この構成は、たとえば、ASP.NET SDK や Java SDK の古いバージョンを使用している場合に機能します。This configuration would work, for example, if you are using an older version of the ASP.NET SDK or Java SDK.
  • 最新の ASP.NET または ASP.NET Core SDK (Azure または独自のサーバーのいずれかでホストされる) を使用している場合、既定ではアダプティブ サンプリングが行われますが、前述の方法で固定レートに切り替えることができます。If you're using the current ASP.NET or ASP.NET Core SDKs (hosted either in Azure or on your own server), you get adaptive sampling by default, but you can switch to fixed-rate as described above. 固定レート サンプリングの場合、ブラウザー SDK は自動的にサンプル関連のイベントに同期します。With fixed-rate sampling, the browser SDK automatically synchronizes to sample related events.
  • 最新の Java エージェントを使用している場合は、ApplicationInsights.json を構成して (Java SDK の場合は ApplicationInsights.xml を構成する) 固定レート サンプリングを有効にできます。If you're using the current Java agent, you can configure ApplicationInsights.json (for Java SDK, configure ApplicationInsights.xml) to turn on fixed-rate sampling. サンプリングは、既定で無効になっています。Sampling is turned off by default. 固定レート サンプリングでは、ブラウザー SDK とサーバーは自動的にサンプル関連のイベントに同期されます。With fixed-rate sampling, the browser SDK and the server automatically synchronize to sample related events.

常に確認したい頻度の低いイベントがあります。サンプリング モジュールを使わずに確認するにはどうすればよいですか。There are certain rare events I always want to see. How can I get them past the sampling module?

  • これを実現する最善の方法は、次に示すように、保持したいテレメトリ項目で SamplingPercentage を 100 に設定するカスタムの TelemetryInitializer を記述することです。The best way to achieve this is to write a custom TelemetryInitializer, which sets the SamplingPercentage to 100 on the telemetry item you want retained, as shown below. 初期化子はテレメトリ プロセッサ (サンプリングを含む) の前に実行されることが保証されるため、これにより、すべてのサンプリング手法ではサンプリングに関する考慮事項からこの項目が確実に無視されます。As initializers are guaranteed to be run before telemetry processors (including sampling), this ensures that all sampling techniques will ignore this item from any sampling considerations. ASP.NET SDK、ASP.NET Core SDK、JavaScript SDK、Java SDK では、カスタムのテレメトリ初期化子が利用できます。Custom telemetry initializers are available in the ASP.NET SDK, the ASP.NET Core SDK, the JavaScript SDK, and the Java SDK. たとえば、ASP.NET SDK を使用してテレメトリ初期化子を構成できます。For example, you can configure a telemetry initializer using the ASP.NET SDK:

    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if(somecondition)
            {
                ((ISupportSampling)telemetry).SamplingPercentage = 100;
            }
        }
    }
    

以前の SDK バージョンOlder SDK versions

アダプティブ サンプリングは ASP.NET v2.0.0-beta3 以降の Application Insights SDK、Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 以降で使用でき、既定で有効になっています。Adaptive sampling is available for the Application Insights SDK for ASP.NET v2.0.0-beta3 and later, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 and later, and is enabled by default.

固定レート サンプリングは、ASP.NET バージョン 2.0.0 以降および Java SDK バージョン 2.0.1 以降の SDK の機能です。Fixed-rate sampling is a feature of the SDK in ASP.NET versions from 2.0.0 and Java SDK version 2.0.1 and onwards.

ASP.NET SDK の v2.5.0-beta2 および ASP.NET Core SDK の v2.2.0-beta3 より前では、サンプリングの判定は、"ユーザー" を定義するアプリケーション (つまり、最も一般的な Web アプリケーション) のユーザー ID のハッシュに基づいていました。Prior to v2.5.0-beta2 of the ASP.NET SDK, and v2.2.0-beta3 of ASP.NET Core SDK, the sampling decision was based on the hash of the user ID for applications that define "user" (that is, most typical web applications). ユーザーを定義しない種類のアプリケーション (Web サービスなど) の場合、サンプリングの判定は要求の操作 ID に基づいていました。For the types of applications that didn't define users (such as web services) the sampling decision was based on the operation ID of the request. ASP.NET および ASP.NET Core SDK の最近のバージョンでは、サンプリングの判定に操作 ID が使用されます。Recent versions of the ASP.NET and ASP.NET Core SDKs use the operation ID for the sampling decision.

次のステップNext steps