web-dev-qa-db-ja.com

Azure WebJobでAzure Application Insightsを使用する

Azureドキュメントには、Azure Application InsightsをASP.NET、Javaなどのさまざまな種類のアプリケーションに統合する多くの例が含まれています。ただし、ドキュメントには、Application InsightsをAzure WebJobに統合する例は示されていません。

コンソールアプリケーションとして構築されたAzure WebJobにAzure Application Insightsを統合する方法を説明する例や記事へのリンクはありますか?

28

Application Insightsを介してイベントとメトリックを追跡するコンソールアプリケーションを作成しましたが、次のNuGetパッケージを追加することで、WebJobはそれほど変わらないと思います。

  • Microsoft.ApplicationInsights
  • Microsoft.ApplicationInsights.TraceListener(これは必要ない場合があります)

俺の ApplicationInsights.configは次のようになります。

<ApplicationInsights xmlns="http://schemas.Microsoft.com/ApplicationInsights/2013/Settings">
    <TelemetryModules>
        <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights" />
    </TelemetryModules>
</ApplicationInsights>

そして、単純なプログラムはこれを行います:

TelemetryConfiguration.Active.InstrumentationKey = "the_key";
TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = true;

var tc = new TelemetryClient();
tc.TrackRequest("Track Some Request", DateTimeOffset.UtcNow, new TimeSpan(0, 0, 3), "200", true);
tc.TrackMetric("XYZ Metric", 100);
tc.TrackEvent("Tracked Event");

tc.Flush(); //need to do this, otherwise if the app exits the telemetry data won't be sent

これもあります: Windowsデスクトップアプリ、サービス、ワーカーロールのApplication Insights

22
Brendan Green

上記の回答は2年前のものであり、それ以来多くのことが変わっています。これで、Azure WebjobsとのApplication insights統合に利用できるnugetパッケージがあります。以下のパッケージをインストールする必要があります。

  1. Microsoft.Azure.WebJobs.Logging.ApplicationInsights(現在ベータ版)
  2. Microsoft.Extensions.Logging
  3. Microsoft.Extensions.Logging.Console

以下のようにJobHostConfigurationを構成します。

string instrumentationKey = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
if (!string.IsNullOrEmpty(instrumentationKey))
{
      // build up a LoggerFactory with ApplicationInsights and a Console Logger
       config.LoggerFactory = new LoggerFactory().AddApplicationInsights(instrumentationKey, null).AddConsole();
       config.Tracing.ConsoleLevel = TraceLevel.Off;
}

これに関する完全な投稿を見る ここ

10
Unnie