Application Insights SDK におけるフィルター処理および前処理Filter and preprocess telemetry in the Application Insights SDK

Application Insights SDK のプラグインを作成および構成して、Application Insights サービスに送信される前のテレメトリのエンリッチと処理の方法をカスタマイズできます。You can write and configure plug-ins for the Application Insights SDK to customize how telemetry can be enriched and processed before it's sent to the Application Insights service.

  • サンプリング は、統計に影響を与えることなくテレメトリの量を削減します。Sampling reduces the volume of telemetry without affecting your statistics. 関連するデータ ポイントが一緒に保持されるので、問題の診断時にそれらのデータ ポイント間を移動することができます。It keeps together related data points so that you can navigate between them when you diagnose a problem. ポータルでは、サンプリングを補正するために合計数が乗算されます。In the portal, the total counts are multiplied to compensate for the sampling.
  • テレメトリ プロセッサを使ったフィルター処理により、サーバーに送信される前のテレメトリから、不要な情報を SDK で取り除くことができます。Filtering with telemetry processors lets you filter out telemetry in the SDK before it's sent to the server. たとえば、ロボットからの要求を除外することでテレメトリの量を削減することができます。For example, you could reduce the volume of telemetry by excluding requests from robots. フィルター処理は、トラフィックを削減するうえでは、サンプリングよりも基本的な方法です。Filtering is a more basic approach to reducing traffic than sampling. 送信内容をより細かく制御できますが、統計に影響します。It allows you more control over what's transmitted, but it affects your statistics. たとえば、すべての成功した要求をフィルターで除外することができます。For example, you might filter out all successful requests.
  • アプリから送信されるテレメトリ (標準モジュールからのテレメトリも含む) に対し、テレメトリ初期化子でプロパティを追加したりプロパティに変更を加えたりすることができます。Telemetry initializers add or modify properties to any telemetry sent from your app, which includes telemetry from the standard modules. たとえば、算出値や、ポータルでデータをフィルター処理するのに使用できるバージョン番号を追加することが可能です。For example, you could add calculated values or version numbers by which to filter the data in the portal.
  • SDK API は、カスタム イベントとメトリックの送信に使用します。The SDK API is used to send custom events and metrics.

開始する前に次の操作を実行してください。Before you start:

FilteringFiltering

この手法では、テレメトリ ストリームに含める内容またはテレメトリ ストリームから除外する内容を直接制御できます。This technique gives you direct control over what's included or excluded from the telemetry stream. フィルター処理を使用すると、Application Insights への送信対象からテレメトリ項目を除外することができます。Filtering can be used to drop telemetry items from being sent to Application Insights. フィルター処理は、サンプリングと組み合わせて使用することも、個別に使用することもできます。You can use filtering in conjunction with sampling, or separately.

テレメトリのフィルター処理を行うには、テレメトリ プロセッサを記述し、それを TelemetryConfiguration に登録します。To filter telemetry, you write a telemetry processor and register it with TelemetryConfiguration. すべてのテレメトリはプロセッサを経由します。All telemetry goes through your processor. ストリームから削除するか、チェーン内の次のプロセッサに渡すかを選択できます。You can choose to drop it from the stream or give it to the next processor in the chain. HTTP 要求コレクターや依存関係コレクターなどの標準的なモジュールのテレメトリに加えて、自身で追跡したテレメトリも含まれます。Telemetry from the standard modules, such as the HTTP request collector and the dependency collector, and telemetry you tracked yourself is included. たとえば、ロボットからの要求や成功した依存関係の呼び出しについてのテレメトリをフィルターで除外できます。For example, you can filter out telemetry about requests from robots or successful dependency calls.

警告

プロセッサを使用して SDK から送信されるテレメトリをフィルター処理すると、ポータルに表示される統計にゆがみが生じ、関連項目を追跡するのが困難になる可能性があります。Filtering the telemetry sent from the SDK by using processors can skew the statistics that you see in the portal and make it difficult to follow related items.

代わりに、 サンプリングの使用を検討します。Instead, consider using sampling.

テレメトリ プロセッサを作成する (C#)Create a telemetry processor (C#)

  1. フィルターを作成するには、ITelemetryProcessor を実装します。To create a filter, implement ITelemetryProcessor.

    テレメトリ プロセッサによって処理のチェーンが構築されます。Telemetry processors construct a chain of processing. テレメトリ プロセッサをインスタンス化するときは、チェーン内の次のプロセッサへの参照が与えられます。When you instantiate a telemetry processor, you're given a reference to the next processor in the chain. テレメトリ データ ポイントが process メソッドに渡されると、作業が実行され、そのチェーンの次のテレメトリ プロセッサが呼び出されます (呼び出されないこともあります)。When a telemetry data point is passed to the process method, it does its work and then calls (or doesn't call) the next telemetry processor in the chain.

    using Microsoft.ApplicationInsights.Channel;
    using Microsoft.ApplicationInsights.Extensibility;
    
    public class SuccessfulDependencyFilter : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }
    
        // next will point to the next TelemetryProcessor in the chain.
        public SuccessfulDependencyFilter(ITelemetryProcessor next)
        {
            this.Next = next;
        }
    
        public void Process(ITelemetry item)
        {
            // To filter out an item, return without calling the next processor.
            if (!OKtoSend(item)) { return; }
    
            this.Next.Process(item);
        }
    
        // Example: replace with your own criteria.
        private bool OKtoSend (ITelemetry item)
        {
            var dependency = item as DependencyTelemetry;
            if (dependency == null) return true;
    
            return dependency.Success != true;
        }
    }
    
  2. プロセッサを追加します。Add your processor.

ASP.NET アプリASP.NET apps

次のスニペットを ApplicationInsights.config に挿入します。Insert this snippet in ApplicationInsights.config:

<TelemetryProcessors>
  <Add Type="WebApplication9.SuccessfulDependencyFilter, WebApplication9">
     <!-- Set public property -->
     <MyParamFromConfigFile>2-beta</MyParamFromConfigFile>
  </Add>
</TelemetryProcessors>

名前付きのパブリック プロパティをクラス内に指定することにより、.config ファイルから文字列値を渡すことができます。You can pass string values from the .config file by providing public named properties in your class.

警告

.config ファイル内の型名とプロパティ名をコード内のクラスおよびプロパティ名と慎重に照合してください。Take care to match the type name and any property names in the .config file to the class and property names in the code. 存在しない型またはプロパティが .config ファイルによって参照されていると、SDK は何も通知せずにテレメトリの送信に失敗する場合があります。If the .config file references a nonexistent type or property, the SDK may silently fail to send any telemetry.

または、コード内でフィルターを初期化することもできます。Alternatively, you can initialize the filter in code. 適切な初期化クラス (たとえば Global.asax.cs の AppStart) で、プロセッサをチェーンに挿入します。In a suitable initialization class, for example, AppStart in Global.asax.cs, insert your processor into the chain:

var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
builder.Use((next) => new SuccessfulDependencyFilter(next));

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

builder.Build();

この時点より後に作成されたテレメトリ クライアントではプロセッサが使用されます。Telemetry clients created after this point will use your processors.

ASP.NET Core または Worker サービス アプリASP.NET Core/Worker service apps

注意

ApplicationInsights.config または TelemetryConfiguration.Active を使用してプロセッサを追加することは、ASP.NET Core アプリケーションの場合、または Microsoft.ApplicationInsights.WorkerService SDK を使用している場合は無効です。Adding a processor by using ApplicationInsights.config or TelemetryConfiguration.Active isn't valid for ASP.NET Core applications or if you're using the Microsoft.ApplicationInsights.WorkerService SDK.

ASP.NET Core または WorkerService を使用して作成されたアプリの場合、新しいテレメトリ プロセッサを追加するには、次に示すように、IServiceCollection に対して AddApplicationInsightsTelemetryProcessor 拡張メソッドを使用します。For apps written by using ASP.NET Core or WorkerService, adding a new telemetry processor is done by using the AddApplicationInsightsTelemetryProcessor extension method on IServiceCollection, as shown. このメソッドは、Startup.cs クラスの ConfigureServices メソッドの中で呼び出されます。This method is called in the ConfigureServices method of your Startup.cs class.

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
        services.AddApplicationInsightsTelemetry();
        services.AddApplicationInsightsTelemetryProcessor<SuccessfulDependencyFilter>();

        // If you have more processors:
        services.AddApplicationInsightsTelemetryProcessor<AnotherProcessor>();
    }

フィルターの例Example filters

人工的な要求Synthetic requests

ボットと Web テストを除外します。Filter out bots and web tests. メトリックス エクスプローラーで人工的なソースを除外することもできますが、SDK 自体でそのソースをフィルター処理することにより、トラフィックとインジェストのサイズが削減されます。Although Metrics Explorer gives you the option to filter out synthetic sources, this option reduces traffic and ingestion size by filtering them at the SDK itself.

public void Process(ITelemetry item)
{
  if (!string.IsNullOrEmpty(item.Context.Operation.SyntheticSource)) {return;}

  // Send everything else:
  this.Next.Process(item);
}

失敗した認証Failed authentication

"401" 応答が返された要求を除外します。Filter out requests with a "401" response.

public void Process(ITelemetry item)
{
    var request = item as RequestTelemetry;

    if (request != null &&
    request.ResponseCode.Equals("401", StringComparison.OrdinalIgnoreCase))
    {
        // To filter out an item, return without calling the next processor.
        return;
    }

    // Send everything else
    this.Next.Process(item);
}

リモートの依存関係の高速呼び出しを除外するFilter out fast remote dependency calls

低速な呼び出しのみの診断を実行する場合は、高速呼び出しを除外します。If you want to diagnose only calls that are slow, filter out the fast ones.

注意

このフィルター処理によって、ポータルに表示される統計にゆがみが生じます。This filtering will skew the statistics you see on the portal.

public void Process(ITelemetry item)
{
    var request = item as DependencyTelemetry;

    if (request != null && request.Duration.TotalMilliseconds < 100)
    {
        return;
    }
    this.Next.Process(item);
}

依存関係の問題の診断Diagnose dependency issues

このブログ では、依存関係に対して定期的な ping を自動送信することによって依存関係の問題を診断するプロジェクトについて説明します。This blog describes a project to diagnose dependency issues by automatically sending regular pings to dependencies.

JavaScript Web アプリケーションJavaScript web applications

ITelemetryInitializer を使用したフィルター処理Filter by using ITelemetryInitializer

  1. テレメトリ初期化子のコールバック関数を作成します。Create a telemetry initializer callback function. コールバック関数は、パラメーターとして ITelemetryItem を受け取ります。これは、処理されるイベントを指します。The callback function takes ITelemetryItem as a parameter, which is the event that's being processed. このコールバックから false が返されると、テレメトリ項目がフィルターで除外されます。Returning false from this callback results in the telemetry item to be filtered out.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
          return false;
      }
    
      return true;
    };
    
  2. 次のテレメトリ初期化子のコールバックを追加します。Add your telemetry initializer callback:

    appInsights.addTelemetryInitializer(filteringFunction);
    

プロパティの追加/変更:ITelemetryInitializerAdd/modify properties: ITelemetryInitializer

テレメトリを追加情報でエンリッチしたり、標準のテレメトリ モジュールによって設定されたテレメトリのプロパティをオーバーライドしたりするには、テレメトリ初期化子を使用します。Use telemetry initializers to enrich telemetry with additional information or to override telemetry properties set by the standard telemetry modules.

たとえば、Web 向けの Application Insights パッケージでは HTTP 要求に関するテレメトリが収集されます。For example, Application Insights for a web package collects telemetry about HTTP requests. 既定では、応答コードが 400 以上の要求はすべて失敗としてフラグが設定されます。By default, it flags as failed any request with a response code >=400. これに対して 400 を成功として処理する場合は、"成功" プロパティを設定するテレメトリ初期化子を指定できます。But if you want to treat 400 as a success, you can provide a telemetry initializer that sets the success property.

テレメトリ初期化子を指定すると、Track*() メソッドのいずれかが呼び出されるたびに、テレメトリ初期化子も呼び出されます。If you provide a telemetry initializer, it's called whenever any of the Track*() methods are called. これには、標準のテレメトリ モジュールによって呼び出される Track() メソッドも含まれます。This includes Track() methods called by the standard telemetry modules. 規約により、これらのモジュールでは、初期化子によって既に設定されているプロパティは設定されません。By convention, these modules don't set any property that was already set by an initializer. テレメトリ初期化子は、テレメトリ プロセッサを呼び出す前に呼び出されます。Telemetry initializers are called before calling telemetry processors. そのため、初期化子によって実行されたエンリッチメントはすべて、プロセッサから参照することができます。So any enrichments done by initializers are visible to processors.

初期化子を定義するDefine your initializer

C#C#

using System;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;

namespace MvcWebRole.Telemetry
{
  /*
   * Custom TelemetryInitializer that overrides the default SDK
   * behavior of treating response codes >= 400 as failed requests
   *
   */
  public class MyTelemetryInitializer : ITelemetryInitializer
  {
    public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;
        // Is this a TrackRequest() ?
        if (requestTelemetry == null) return;
        int code;
        bool parsed = Int32.TryParse(requestTelemetry.ResponseCode, out code);
        if (!parsed) return;
        if (code >= 400 && code < 500)
        {
            // If we set the Success property, the SDK won't change it:
            requestTelemetry.Success = true;

            // Allow us to filter these requests in the portal:
            requestTelemetry.Properties["Overridden400s"] = "true";
        }
        // else leave the SDK to set the Success property
    }
  }
}

ASP.NET アプリ:初期化子を読み込むASP.NET apps: Load your initializer

ApplicationInsights.config で:In ApplicationInsights.config:

<ApplicationInsights>
  <TelemetryInitializers>
    <!-- Fully qualified type name, assembly name: -->
    <Add Type="MvcWebRole.Telemetry.MyTelemetryInitializer, MvcWebRole"/>
    ...
  </TelemetryInitializers>
</ApplicationInsights>

または、Global.aspx.cs などのコード内で初期化子をインスタンス化することもできます。Alternatively, you can instantiate the initializer in code, for example, in Global.aspx.cs:

protected void Application_Start()
{
    // ...
    TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
}

詳細については、このサンプルを参照してください。See more of this sample.

ASP.NET Core または Worker サービス アプリ:初期化子を読み込むASP.NET Core/Worker service apps: Load your initializer

注意

ApplicationInsights.config または TelemetryConfiguration.Active を使用して初期化子を追加することは、ASP.NET Core アプリケーションの場合、または Microsoft.ApplicationInsights.WorkerService SDK を使用している場合は無効です。Adding an initializer by using ApplicationInsights.config or TelemetryConfiguration.Active isn't valid for ASP.NET Core applications or if you're using the Microsoft.ApplicationInsights.WorkerService SDK.

ASP.NET Core または WorkerService を使用して作成されたアプリの場合、次に示すように、新しいテレメトリ初期化子を追加するには、依存関係挿入コンテナーに追加します。For apps written by using ASP.NET Core or WorkerService, adding a new telemetry initializer is done by adding it to the Dependency Injection container, as shown. これは、Startup.ConfigureServices メソッドで実行します。This is done in the Startup.ConfigureServices method.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

JavaScript テレメトリ初期化子JavaScript telemetry initializers

JavaScriptJavaScript

ポータルから取得した初期化コードの直後にテレメトリ初期化子を挿入します。Insert a telemetry initializer immediately after the initialization code that you got from the portal:

<script type="text/javascript">
    // ... initialization code
    ...({
        instrumentationKey: "your instrumentation key"
    });
    window.appInsights = appInsights;


    // Adding telemetry initializer.
    // This is called whenever a new telemetry item
    // is created.

    appInsights.addTelemetryInitializer(function (envelope) {
        var telemetryItem = envelope.data.baseData;

        // To check the telemetry items type - for example PageView:
        if (envelope.name == Microsoft.ApplicationInsights.Telemetry.PageView.envelopeType) {
            // this statement removes url from all page view documents
            telemetryItem.url = "URL CENSORED";
        }

        // To set custom properties:
        telemetryItem.properties = telemetryItem.properties || {};
        telemetryItem.properties["globalProperty"] = "boo";
        
        // To set cloud role name / instance
        envelope.tags["ai.cloud.role"] = "your role name";
        envelope.tags["ai.cloud.roleInstance"] = "your role instance";
    });

    // End of inserted code.

    appInsights.trackPageView();
</script>

telemetryItem で使用できる非カスタム プロパティの概要については、Application Insights エクスポート データ モデルに関するページを参照してください。For a summary of the noncustom properties available on the telemetry item, see Application Insights Export Data Model.

任意の数の初期化子を追加できます。You can add as many initializers as you like. これらは、追加された順序で呼び出されます。They're called in the order that they're added.

OpenCensus Python テレメトリ プロセッサOpenCensus Python telemetry processors

OpenCensus Python のテレメトリ プロセッサは、エクスポート前にテレメトリを処理するために呼び出される単なるコールバック関数です。Telemetry processors in OpenCensus Python are simply callback functions called to process telemetry before they're exported. コールバック関数は、パラメーターとして エンベロープ データ型を受け入れる必要があります。The callback function must accept an envelope data type as its parameter. テレメトリをエクスポートから除外するには、コールバック関数が False を返すようにします。To filter out telemetry from being exported, make sure the callback function returns False. エンベロープの Azure Monitor データ型のスキーマについては、GitHub を参照してください。You can see the schema for Azure Monitor data types in the envelopes on GitHub.

注意

cloud_RoleName を変更するには、tags フィールドの ai.cloud.role 属性を変更します。You can modify cloud_RoleName by changing the ai.cloud.role attribute in the tags field.

def callback_function(envelope):
    envelope.tags['ai.cloud.role'] = 'new_role_name'
# Example for log exporter
import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)

# Callback function to append '_hello' to each log message telemetry
def callback_function(envelope):
    envelope.data.baseData.message += '_hello'
    return True

handler = AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>')
handler.add_telemetry_processor(callback_function)
logger.addHandler(handler)
logger.warning('Hello, World!')
# Example for trace exporter
import requests

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace import config_integration
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

config_integration.trace_integrations(['requests'])

# Callback function to add os_type: linux to span properties
def callback_function(envelope):
    envelope.data.baseData.properties['os_type'] = 'linux'
    return True

exporter = AzureExporter(
    connection_string='InstrumentationKey=<your-instrumentation-key-here>'
)
exporter.add_telemetry_processor(callback_function)
tracer = Tracer(exporter=exporter, sampler=ProbabilitySampler(1.0))
with tracer.span(name='parent'):
response = requests.get(url='https://www.wikipedia.org/wiki/Rabbit')
# Example for metrics exporter
import time

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module
from opencensus.stats import stats as stats_module
from opencensus.stats import view as view_module
from opencensus.tags import tag_map as tag_map_module

stats = stats_module.stats
view_manager = stats.view_manager
stats_recorder = stats.stats_recorder

CARROTS_MEASURE = measure_module.MeasureInt("carrots",
                                            "number of carrots",
                                            "carrots")
CARROTS_VIEW = view_module.View("carrots_view",
                                "number of carrots",
                                [],
                                CARROTS_MEASURE,
                                aggregation_module.CountAggregation())

# Callback function to only export the metric if value is greater than 0
def callback_function(envelope):
    return envelope.data.baseData.metrics[0].value > 0

def main():
    # Enable metrics
    # Set the interval in seconds in which you want to send metrics
    exporter = metrics_exporter.new_metrics_exporter(connection_string='InstrumentationKey=<your-instrumentation-key-here>')
    exporter.add_telemetry_processor(callback_function)
    view_manager.register_exporter(exporter)

    view_manager.register_view(CARROTS_VIEW)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()

    mmap.measure_int_put(CARROTS_MEASURE, 1000)
    mmap.record(tmap)
    # Default export interval is every 15.0s
    # Your application should run for at least this amount
    # of time so the exporter will meet this interval
    # Sleep can fulfill this
    time.sleep(60)

    print("Done recording metrics")

if __name__ == "__main__":
    main()

必要な数だけプロセッサを追加できます。You can add as many processors as you like. これらは、追加された順序で呼び出されます。They're called in the order that they're added. 1 つのプロセッサから例外がスローされた場合、次のプロセッサには影響しません。If one processor throws an exception, it doesn't impact the following processors.

TelemetryInitializers の例Example TelemetryInitializers

カスタム プロパティを追加するAdd a custom property

次のサンプル初期化子は、追跡されたすべてのテレメトリにカスタム プロパティを追加します。The following sample initializer adds a custom property to every tracked telemetry.

public void Initialize(ITelemetry item)
{
  var itemProperties = item as ISupportProperties;
  if(itemProperties != null && !itemProperties.Properties.ContainsKey("customProp"))
    {
        itemProperties.Properties["customProp"] = "customValue";
    }
}

クラウド ロール名を追加するAdd a cloud role name

次のサンプル初期化子によって、追跡されたすべてのテレメトリにクラウド ロール名が設定されます。The following sample initializer sets the cloud role name to every tracked telemetry.

public void Initialize(ITelemetry telemetry)
{
    if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
    {
        telemetry.Context.Cloud.RoleName = "MyCloudRoleName";
    }
}

HttpContext から情報を追加するAdd information from HttpContext

次のサンプル初期化子では、HttpContext からデータが読み取られ、RequestTelemetry インスタンスに追加されます。The following sample initializer reads data from HttpContext and appends it to a RequestTelemetry instance. IHttpContextAccessor は、コンストラクターの依存関係のインジェクションを通じて自動的に提供されます。The IHttpContextAccessor is automatically provided through constructor dependency injection.

public class HttpContextRequestTelemetryInitializer : ITelemetryInitializer
{
    private readonly IHttpContextAccessor httpContextAccessor;

    public HttpContextRequestTelemetryInitializer(IHttpContextAccessor httpContextAccessor)
    {
        this.httpContextAccessor =
            httpContextAccessor ??
            throw new ArgumentNullException(nameof(httpContextAccessor));
    }

    public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;
        if (requestTelemetry == null) return;

        var claims = this.httpContextAccessor.HttpContext.User.Claims;
        Claim oidClaim = claims.FirstOrDefault(claim => claim.Type == "oid");
        requestTelemetry.Properties.Add("UserOid", oidClaim?.Value);
    }
}

ITelemetryProcessor と ITelemetryInitializerITelemetryProcessor and ITelemetryInitializer

テレメトリ プロセッサとテレメトリ初期化子は何が違うのでしょうか。What's the difference between telemetry processors and telemetry initializers?

  • それらを使って実行できることにはいくつかの重複があります。There are some overlaps in what you can do with them. どちらもテレメトリのプロパティを追加または変更するために使用できますが、その用途には初期化子を使用することをお勧めします。Both can be used to add or modify properties of telemetry, although we recommend that you use initializers for that purpose.
  • テレメトリ初期化子は、常にテレメトリ プロセッサの前に実行されます。Telemetry initializers always run before telemetry processors.
  • テレメトリ初期化子は、複数回呼び出すことができます。Telemetry initializers may be called more than once. 規約により、既に設定されているプロパティは設定されません。By convention, they don't set any property that was already set.
  • テレメトリ プロセッサを使用すると、テレメトリ項目を完全に置換または破棄できます。Telemetry processors allow you to completely replace or discard a telemetry item.
  • 登録されているテレメトリ初期化子はすべて、テレメトリ項目ごとに呼び出されることが保証されます。All registered telemetry initializers are guaranteed to be called for every telemetry item. テレメトリ プロセッサの場合、SDK で呼び出しが保証されるのは、最初のテレメトリ プロセッサのみです。For telemetry processors, SDK guarantees calling the first telemetry processor. その他のプロセッサが呼び出されるかどうかは、先行するテレメトリ プロセッサによって決まります。Whether the rest of the processors are called or not is decided by the preceding telemetry processors.
  • 追加のプロパティでテレメトリをエンリッチしたり、既存のプロパティをオーバーライドしたりするには、TelemetryInitializers を使用します。Use telemetry initializers to enrich telemetry with additional properties or override an existing one. テレメトリ プロセッサを使用してテレメトリを除外します。Use a telemetry processor to filter out telemetry.

ApplicationInsights.config のトラブルシューティングTroubleshoot ApplicationInsights.config

  • 完全修飾された型名とアセンブリ名が正しいことを確認します。Confirm that the fully qualified type name and assembly name are correct.
  • applicationinsights.config ファイルが出力ディレクトリ内に存在し、最近の変更がすべて含まれていることを確認します。Confirm that the applicationinsights.config file is in your output directory and contains any recent changes.

リファレンス ドキュメントReference docs

SDK コードSDK code

次のステップNext steps