Application Insights コードなしアタッチを使用した実行時の Web アプリのインストルメント化Instrument web apps at runtime with Application Insights Codeless Attach

Azure Application Insights を使用すれば、ライブ Web アプリケーションをインストルメント化できます。その際、コードに変更を加えたり、再デプロイしたりする必要はありません。You can instrument a live web app with Azure Application Insights, without having to modify or redeploy your code. Microsoft Azure サブスクリプションが必要です。You need a Microsoft Azure subscription.

Status Monitor は、オンプレミスまたは VM の IIS でホストされた .NET アプリケーションをインストルメント化するために使用されます。Status Monitor is used to instrument a .NET application hosted in IIS either on-premises or in a VM.

  • お客様のアプリが Azure VM または Azure 仮想マシン スケール セットにデプロイされている場合、こちらの手順に従ってください。If your app is deployed into Azure VM or Azure virtual machine scale set, follow these instructions.
  • お客様のアプリが Azure のアプリ サービスにデプロイされている場合、こちらの手順に従ってください。If your app is deployed into Azure app services, follow these instructions.
  • お客様のアプリが Azure VM にデプロイされている場合は、Azure コントロール パネルから Application Insights の監視を有効にすることができますIf your app is deployed in an Azure VM, you can switch on Application Insights monitoring from the Azure control panel.
  • (Azure Cloud Services のインストルメント化については、個別の記事もあります)。(There are also separate articles about instrumenting Azure Cloud Services.)

App Insights の概要グラフ (失敗した要求、サーバー応答時間、サーバー要求に関する情報) のスクリーンショット

Application Insights を .NET Web アプリケーションに適用する方法には、次の 2 つがあります。You have a choice of two routes to apply Application Insights to your .NET web applications:

  • ビルド時: Web アプリ コードに Application Insights SDK を追加します。Build time: Add the Application Insights SDK to your web app code.
  • 実行時: 後述するように、コードのリビルドと再デプロイを行うことなく、サーバー上の Web アプリをインストルメント化します。Run time: Instrument your web app on the server, as described below, without rebuilding and redeploying the code.

注意

ビルド時のインストルメンテーションを使用すると、実行時のインストルメンテーションはオンにしても機能しません。If you use build time instrumentation, run time instrumention will not work even if it is turned on.

各方法の特徴について概要を次に示します。Here's a summary of what you get by each route:

ビルド時Build time 実行時Run time
要求と例外Requests & exceptions はいYes はいYes
より詳細な例外More detailed exceptions はいYes
依存関係の診断Dependency diagnostics .NET 4.6 以降 (詳細レベルは低い)On .NET 4.6+, but less detail はい。全詳細: 結果コード、SQL コマンド テキスト、HTTP 動詞Yes, full detail: result codes, SQL command text, HTTP verb
システム パフォーマンス カウンターSystem performance counters はいYes はいYes
カスタム テレメトリの APIAPI for custom telemetry はいYes いいえNo
トレース ログ統合Trace log integration はいYes いいえNo
ページ ビューとユーザー データPage view & user data はいYes いいえNo
コードのリビルドが必要Need to rebuild code はいYes いいえNo

ライブ IIS Web アプリの監視Monitor a live IIS web app

アプリが IIS サーバーでホストされている場合は、Status Monitor を使用して Application Insights を有効にします。If your app is hosted on an IIS server, enable Application Insights by using Status Monitor.

  1. IIS Web サーバーで、管理者の資格情報を使用してサインインします。On your IIS web server, sign in with administrator credentials.

  2. Application Insights Status Monitor がまだインストールされていない場合は、インストーラーをダウンロードして実行しますIf Application Insights Status Monitor is not already installed, download and run the installer

  3. Status Monitor で、監視するインストール済みの Web アプリケーションまたは Web サイトを選択します。In Status Monitor, select the installed web application or website that you want to monitor. Azure の資格情報でサインインします。Sign in with your Azure credentials.

    Application Insights ポータルで結果を表示するときに使用するリソースを構成します。Configure the resource where you want to see the results in the Application Insights portal. (通常は、新しいリソースを作成するのが最良です。(Normally, it's best to create a new resource. このアプリに対して Web テストクライアントの監視を既に設定している場合は、既存のリソースを選択します。)Select an existing resource if you already have web tests or client monitoring for this app.)

    アプリとリソースを選択します。

  4. IIS を再起動します。Restart IIS.

    ダイアログの上部にある [再起動] を選択します。

    少しの間、Web サービスが中断されます。Your web service is interrupted for a short while.

監視オプションのカスタマイズCustomize monitoring options

Application Insights を有効にすると、Web アプリに DLL と ApplicationInsights.config が追加されます。Enabling Application Insights adds DLLs and ApplicationInsights.config to your web app. この .config ファイルを編集して、一部のオプションを変更できます。You can edit the .config file to change some of the options.

アプリを再発行するときに、Application Insights を再度有効にしてください。When you re-publish your app, re-enable Application Insights

アプリを再発行する前に、Visual Studio でコードに Application Insights を追加することを検討してください。Before you re-publish your app, consider adding Application Insights to the code in Visual Studio. より詳細なテレメトリが得られ、カスタム テレメトリを記述できるようになります。You'll get more detailed telemetry and the ability to write custom telemetry.

コードに Application Insights を追加せずに再発行する場合は、デプロイ プロセスによって発行済み Web サイトから DLL と ApplicationInsights.config が削除される可能性があることに注意してください。If you want to re-publish without adding Application Insights to the code, be aware that the deployment process may delete the DLLs and ApplicationInsights.config from the published web site. そのため、次のようになります。Therefore:

  1. ApplicationInsights.config を編集した場合は、アプリを再発行する前に ApplicationInsights.config のコピーを作成します。If you edited ApplicationInsights.config, take a copy of it before you re-publish your app.
  2. アプリを再発行します。Republish your app.
  3. Application Insights の監視を再度有効にします。Re-enable Application Insights monitoring. (Azure Web アプリのコントロール パネルまたは IIS ホストの Status Monitor のいずれか適切な方法を使用します)。(Use the appropriate method: either the Azure web app control panel, or the Status Monitor on an IIS host.)
  4. .config ファイルで実行した編集を再開します。Reinstate any edits you performed on the .config file.

トラブルシューティングTroubleshooting

有効なインストールの確認Confirm a valid installation

インストールが成功したことを確認するために実行できるいくつかの手順を以下に示します。These are some steps that you can perform to confirm that your installation was successful.

  • applicationInsights.config ファイルがターゲット アプリ ディレクトリ内に存在し、お客様の ikey を含んでいることを確認します。Confirm that the applicationInsights.config file is present in the target app directory and contains your ikey.

  • データがないと思われる場合は、Analytics で単純なクエリを実行して、現在テレメトリを送信中のクラウド ロールをすべて一覧表示できます。If you suspect that data is missing you can run a simple query in Analytics to list all the cloud roles currently sending telemetry.

    union * | summarize count() by cloud_RoleName, cloud_RoleInstance
    
  • Application Insights が正常にアタッチされたことを確認する必要がある場合は、コマンド ウィンドウで Sysinternals の Handle を実行して、applicationinsights.dll が IIS によって読み込まれたことを確認できます。If you need to confirm that Application Insights is successfully attached you can run Sysinternals Handle in a command window to confirm that applicationinsights.dll has been loaded by IIS.

    handle.exe /p w3wp.exe
    

接続できないCan't connect? テレメトリが見つかりませんか?No telemetry?

ログインできないUnable to login

  • Status Monitor でログインできない場合は、代わりにコマンド ライン インストールを行ってください。If Status Monitor cannot login, do a command line install instead. お客様の ikey を収集するために Status Monitor によってログインが試行されますが、これはコマンドを使用して手動で指定できます。Status Monitor attempts to login to collect your ikey, but you can provide this manually using the command:
Import-Module 'C:\Program Files\Microsoft Application Insights\Status Monitor\PowerShell\Microsoft.Diagnostics.Agent.StatusMonitor.PowerShell.dll'
Start-ApplicationInsightsMonitoring -Name appName -InstrumentationKey 00000000-000-000-000-0000000

ファイルまたはアセンブリ "System.Diagnostics.DiagnosticSource" を読み込めませんでしたCould not load file or assembly 'System.Diagnostics.DiagnosticSource'

Application Insights を有効にした後にこのエラーが発生する場合があります。You may get this error after enabling Application Insights. これは、インストーラーによってお客様の bin ディレクトリ内の dll が置き換えられるためです。This is because the installer replaces this dll in your bin directory. 修正するには、お客様の web.config を更新します。To fix update your web.config:

<dependentAssembly>
    <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51"/>
    <bindingRedirect oldVersion="0.0.0.0-4.*.*.*" newVersion="4.0.2.1"/>
</dependentAssembly>

こちらでこの問題を追跡しています。We are tracking this issue here.

アプリケーションの診断メッセージApplication diagnostic messages

  • Status Monitor を開き、左ウィンドウ枠でアプリケーションを選択します。Open Status Monitor and select your application on left pane. 「通知の構成」セクションに、このアプリケーションの診断メッセージがあるかどうかを確認します。Check if there are any diagnostics messages for this application in the "Configuration notifications" section:

    Open the Performance blade to see request, response time, dependency and other data

詳細ログDetailed logs

  • 既定では、Status Monitor は C:\Program Files\Microsoft Application Insights\Status Monitor\diagnostics.log に診断ログを出力します。By default Status Monitor will output diagnostic logs at: C:\Program Files\Microsoft Application Insights\Status Monitor\diagnostics.log

  • 詳細ログを出力するには、構成ファイル C:\Program Files\Microsoft Application Insights\Status Monitor\Microsoft.Diagnostics.Agent.StatusMonitor.exe.config を修正し、<add key="TraceLevel" value="All" />appsettings に追加します。To output verbose logs, modify the config file: C:\Program Files\Microsoft Application Insights\Status Monitor\Microsoft.Diagnostics.Agent.StatusMonitor.exe.config and add <add key="TraceLevel" value="All" /> to the appsettings. 次に、Status Monitor を再起動します。Then restart status monitor.

  • Status Monitor は .NET アプリケーションであるため、適切な診断を構成ファイルに追加することによる .net トレースの有効化も実行できます。As Status Monitor is a .NET application you can also enable .net tracing by adding the appropriate diagnostics to the config file. たとえば、いくつかのシナリオでは、ネットワーク トレースを構成することで、ネットワーク レベルで何が起こるかを確認するのに役立つ可能性があります。For example, in some scenarios it can be useful to see what's happening at the network level by configuring network tracing

アクセス許可が不十分であるInsufficient permissions

  • サーバーに「権限が不十分」であるという内容のメッセージが表示される場合、次を実行してください。On the server, if you see a message about "insufficient permissions", try the following:
    • IIS マネージャーで、アプリケーション プールを選択し、 [詳細設定] を開きます。 [プロセス モデル] に表示されている ID をメモします。In IIS Manager, select your application pool, open Advanced Settings, and under Process Model note the identity.
    • コンピューターの管理コントロール パネルで、この ID をパフォーマンス モニター ユーザー グループに追加します。In Computer management control panel, add this identity to the Performance Monitor Users group.

Systems Center Operations Manager との競合Conflict with Systems Center Operations Manager

  • MMA/SCOM (Systems Center Operations Manager) がサーバーにインストールされている場合、一部のバージョンで競合が発生することがあります。If you have MMA/SCOM (Systems Center Operations Manager) installed on your server, some versions can conflict. SCOM と Status Monitor の両方をアンインストールし、最新バージョンを再度インストールしてください。Uninstall both SCOM and Status Monitor, and re-install the latest versions.

失敗したインストールまたは不完全なインストールFailed or incomplete installation

インストール中に Status Monitor が失敗すると、不完全なインストールが残って、そこから Status Monitor を復旧できなくなる場合があります。If Status Monitor fails during an installation, you could be left with an incomplete install that Status Monitor is unable to recover from. この場合、手動のリセットが必要です。This will require a manual reset.

お客様のアプリケーション ディレクトリにある以下のファイルをすべて削除します。Delete any of these files found in your application directory:

  • お客様の bin ディレクトリ内にあり、"Microsoft.AI."Any DLLs in your bin directory starting with either "Microsoft.AI." または "Microsoft.ApplicationInsights." で始まるすべての DLLor "Microsoft.ApplicationInsights.".
  • お客様の bin ディレクトリ内にある DLL "Microsoft.Web.Infrastructure.dll"This DLL in your bin directory "Microsoft.Web.Infrastructure.dll"
  • お客様の bin ディレクトリ内にある DLL "System.Diagnostics.DiagnosticSource.dll"This DLL in your bin directory "System.Diagnostics.DiagnosticSource.dll"
  • お客様のアプリケーション ディレクトリで "App_Data\packages" を削除しますIn your application directory remove "App_Data\packages"
  • お客様のアプリケーション ディレクトリで "applicationinsights.config" を削除しますIn your application directory remove "applicationinsights.config"

その他のトラブルシューティングAdditional Troubleshooting

システム要件System Requirements

サーバー上の Application Insights Status Monitor をサポートする OS:OS support for Application Insights Status Monitor on Server:

  • Windows Server 2008Windows Server 2008
  • Windows Server 2008 R2Windows Server 2008 R2
  • Windows Server 2012Windows Server 2012
  • Windows Server 2012 R2Windows server 2012 R2
  • Windows Server 2016Windows Server 2016

最新の SP と .NET Framework 4.5 を使用 (Status Monitor はこのバージョンのフレームワーク上に構築されます)with latest SP and .NET Framework 4.5 (Status Monitor is built on this version of the framework)

クライアント側:.NET Framework 4.5 がインストールされた Windows 7、8、8.1、10On the client side: Windows 7, 8, 8.1 and 10, again with .NET Framework 4.5

IIS のサポート:IIS 7、7.5、8、8.5 (IIS は必須)。IIS support is: IIS 7, 7.5, 8, 8.5 (IIS is required)

PowerShell でのオートメーションAutomation with PowerShell

監視の開始と停止は、IIS サーバーで PowerShell を使って実行できます。You can start and stop monitoring by using PowerShell on your IIS server.

最初に Application Insights モジュールをインポートします。First import the Application Insights module:

Import-Module 'C:\Program Files\Microsoft Application Insights\Status Monitor\PowerShell\Microsoft.Diagnostics.Agent.StatusMonitor.PowerShell.dll'

監視されているアプリを特定します。Find out which apps are being monitored:

Get-ApplicationInsightsMonitoringStatus [-Name appName]

  • -Name (省略可能) Web アプリの名前。-Name (Optional) The name of a web app.

  • この IIS サーバーに存在する各 Web アプリ (または指定されたアプリ) について、Application Insights の監視ステータスを表示します。Displays the Application Insights monitoring status for each web app (or the named app) in this IIS server.

  • 各アプリの ApplicationInsightsApplication を返します。Returns ApplicationInsightsApplication for each app:

    • SdkState==EnabledAfterDeployment:アプリは監視中です。Status Monitor ツールまたは Start-ApplicationInsightsMonitoring によって実行時にインストルメント化されました。SdkState==EnabledAfterDeployment: App is being monitored, and was instrumented at run time, either by the Status Monitor tool, or by Start-ApplicationInsightsMonitoring.
    • SdkState==Disabled:アプリは Application Insights 用にインストルメント化されていません。SdkState==Disabled: The app is not instrumented for Application Insights. 過去に一度もインストルメント化されたことがないか、Status Monitor ツールまたは Stop-ApplicationInsightsMonitoringによって実行時の監視が無効に設定されています。Either it was never instrumented, or run-time monitoring was disabled with the Status Monitor tool or with Stop-ApplicationInsightsMonitoring.
    • SdkState==EnabledByCodeInstrumentation:アプリは、ソース コードに SDK を追加することによってインストルメント化されています。SdkState==EnabledByCodeInstrumentation: The app was instrumented by adding the SDK to the source code. SDK は更新することも停止することもできません。Its SDK cannot be updated or stopped.
    • SdkVersion は、このアプリの監視に使用されているバージョンを示します。SdkVersion shows the version in use for monitoring this app.
    • LatestAvailableSdkVersionは、現在 NuGet ギャラリーで入手できるバージョンを示します。LatestAvailableSdkVersionshows the version currently available on the NuGet gallery. このバージョンにアプリをアップグレードするには、 Update-ApplicationInsightsMonitoringを使用します。To upgrade the app to this version, use Update-ApplicationInsightsMonitoring.

Start-ApplicationInsightsMonitoring -Name appName -InstrumentationKey 00000000-000-000-000-0000000

  • -Name IIS に存在するアプリの名前。-Name The name of the app in IIS

  • -InstrumentationKey 結果を表示する Application Insights リソースの ikey。-InstrumentationKey The ikey of the Application Insights resource where you want the results to be displayed.

  • このコマンドレットが作用するのは、まだインストルメント化されていないアプリ (SdkState==NotInstrumented) だけです。This cmdlet only affects apps that are not already instrumented - that is, SdkState==NotInstrumented.

    このコマンドレットは、既にインストルメント化されたアプリには作用しません。The cmdlet does not affect an app that is already instrumented. SDK をコードに追加することによってビルド時にインストルメント化されたアプリか、過去にこのコマンドレットを使用したことによって実行時にインストルメント化されたアプリかは問題ではありません。It does not matter whether the app was instrumented at build time by adding the SDK to the code, or at run time by a previous use of this cmdlet.

    アプリをインストルメント化するときに使用される SDK バージョンは、このサーバーに最近ダウンロードされたバージョンとなります。The SDK version used to instrument the app is the version that was most recently downloaded to this server.

    最新バージョンをダウンロードするには、Update-ApplicationInsightsVersion を使用してください。To download the latest version, use Update-ApplicationInsightsVersion.

  • 成功すると ApplicationInsightsApplication が返されます。Returns ApplicationInsightsApplication on success. 失敗した場合、トレースが stderr に出力されます。If it fails, it logs a trace to stderr.

        Name                      : Default Web Site/WebApp1
        InstrumentationKey        : 00000000-0000-0000-0000-000000000000
        ProfilerState             : ApplicationInsights
        SdkState                  : EnabledAfterDeployment
        SdkVersion                : 1.2.1
        LatestAvailableSdkVersion : 1.2.3
    

Stop-ApplicationInsightsMonitoring [-Name appName | -All]

  • -Name IIS に存在するアプリの名前。-Name The name of an app in IIS
  • -All この IIS サーバーに存在する、ステータスが SdkState==EnabledAfterDeployment であるすべてのアプリの監視を停止します。-All Stops monitoring all apps in this IIS server for which SdkState==EnabledAfterDeployment
  • 指定されたアプリの監視を停止し、インストルメンテーションを解除します。Stops monitoring the specified apps and removes instrumentation. 実行時に Status Monitoring ツールまたは Start-ApplicationInsightsApplication を使用してインストルメント化されたアプリに対してのみ正しく動作します。It only works for apps that have been instrumented at run-time using the Status Monitoring tool or Start-ApplicationInsightsApplication. (SdkState==EnabledAfterDeployment)(SdkState==EnabledAfterDeployment)
  • ApplicationInsightsApplication が返されます。Returns ApplicationInsightsApplication.

Update-ApplicationInsightsMonitoring -Name appName [-InstrumentationKey "0000000-0000-000-000-0000"Update-ApplicationInsightsMonitoring -Name appName [-InstrumentationKey "0000000-0000-000-000-0000"]

  • -Name:IIS に存在する Web アプリの名前。-Name: The name of a web app in IIS.
  • -InstrumentationKey (省略可能)。アプリのテレメトリの送信先となるリソースを変更する場合に使用します。-InstrumentationKey (Optional.) Use this to change the resource to which the app's telemetry is sent.
  • このコマンドレットの機能を次に示します。This cmdlet:
    • 最近このマシンにダウンロードされた SDK バージョンに、指定されたアプリをアップグレードしますUpgrades the named app to the version of the SDK most recently downloaded to this machine. (SdkState==EnabledAfterDeployment の場合にのみ機能します)。(Only works if SdkState==EnabledAfterDeployment)
    • インストルメンテーション キーが指定された場合、そのキーを持ったリソースにテレメトリを送信するよう、指定されたアプリを再構成しますIf you provide an instrumentation key, the named app is reconfigured to send telemetry to the resource with that key. (SdkState != Disabled の場合に機能します)。(Works if SdkState != Disabled)

Update-ApplicationInsightsVersion

  • 最新の Application Insights SDK をサーバーにダウンロードします。Downloads the latest Application Insights SDK to the server.

Status Monitor に関する質問Questions about Status Monitor

Status Monitor とは何ですか?What is Status Monitor?

IIS Web サーバーにインストールするデスクトップ アプリケーションです。A desktop application that you install in your IIS web server. Web アプリのインストルメント化と構成を支援します。It helps you instrument and configure web apps.

どのような場合に Status Monitor を使うのですか?When do I use Status Monitor?

  • IIS サーバーで実行される任意の Web アプリをインストルメント化する場合。既に実行中の場合でも、インストルメント化が可能です。To instrument any web app that is running on your IIS server - even if it is already running.
  • コンパイル時に Application Insights SDK でビルドされた Web アプリ用の追加のテレメトリを有効にする場合。To enable additional telemetry for web apps that have been built with the Application Insights SDK at compile time.

実行後に閉じることはできますか?Can I close it after it runs?

はい。Yes. 選択した Web サイトをインストルメント化した後で、閉じることができます。After it has instrumented the websites you select, you can close it.

単独でテレメトリを収集することはありません。It doesn't collect telemetry by itself. Web アプリの構成と、一部のアクセス許可の設定のみを行います。It just configures the web apps and sets some permissions.

Status Monitor では何ができますか?What does Status Monitor do?

Status Monitor でインストルメント化する Web アプリを選択する際、次のことができます。When you select a web app for Status Monitor to instrument:

  • Web アプリのバイナリ フォルダーで、Application Insights のアセンブリと ApplicationInsights.config ファイルをダウンロードし、配置します。Downloads and places the Application Insights assemblies and ApplicationInsights.config file in the web app's binaries folder.
  • CLR プロファイリングを有効にして、依存関係の呼び出しを収集します。Enables CLR profiling to collect dependency calls.

Status Monitor でインストールされる Application Insights SDK のバージョンは何ですか?What version of Application Insights SDK does Status Monitor install?

現時点では、Status Monitor でインストールできる Application Insights SDK のバージョンは 2.3 または 2.4 のみです。As of now, Status Monitor can only install Application Insights SDK versions 2.3 or 2.4.

Application Insights SDK バージョン 2.4 は .NET 4.0 をサポートする最後のバージョンであり、2016 年 1 月に提供が終了していますThe Application Insights SDK Version 2.4 is the last version to support .NET 4.0 which was EOL January 2016. そのため、現時点では、Status Monitor を使用して .NET 4.0 アプリケーションをインストルメント化できます。Therefore, as of now Status Monitor can be used to instrument a .NET 4.0 application.

アプリを更新するときは、毎回 Status Monitor を実行する必要がありますか?Do I need to run Status Monitor whenever I update the app?

段階的に再デプロイする場合は必要ありません。Not if you redeploy incrementally.

発行プロセスで [既存のファイルの削除] オプションを選択した場合は、Status Monitor を再実行して Application Insights を構成する必要があります。If you select the 'delete existing files' option in the publish process, you would need to re-run Status Monitor to configure Application Insights.

どのようなテレメトリが収集されますか?What telemetry is collected?

Status Monitor を使用して実行時にのみインストルメント化するアプリケーションの場合:For applications that you instrument only at run-time by using Status Monitor:

  • HTTP 要求HTTP requests
  • 依存関係の呼び出しCalls to dependencies
  • 例外Exceptions
  • パフォーマンス カウンターPerformance counters

コンパイル時に既にインストルメント化されているアプリケーションの場合:For applications already instrumented at compile time:

  • プロセス カウンター。Process counters.
  • 依存関係の呼び出し (.NET 4.5) と、依存関係の呼び出しの戻り値 (.NET 4.6)。Dependency calls (.NET 4.5); return values in dependency calls (.NET 4.6).
  • 例外スタック トレースの値。Exception stack trace values.

詳細情報Learn more

ビデオVideo

Status Monitor のダウンロードDownload Status Monitor

次のステップNext steps

テレメトリの表示:View your telemetry:

テレメトリの追加:Add more telemetry: