Azure VM と Virtual Machine Scale Sets の Application Insights

Azure 仮想マシンまたは Azure Virtual Machine Scale Sets 上で実行されている ASP.NET および ASP.NET Core の IIS でホストされたアプリケーションに対する監視を有効にすることが、従来より簡単になりました。 コードを変更することなく、Application Insights を使用する利点のすべてが得られます。

この記事では、Application Insights エージェントを使用した Application Insights 監視の有効化について説明した後、大規模なデプロイのプロセスを自動化するための事前ガイダンスを提供します。

Application Insights を有効にする

自動インストルメンテーションは簡単に有効にできます。 高度な構成は必要ありません。

サポートされている自動インストルメンテーション シナリオの全一覧については、「サポートされている環境、言語、リソース プロバイダー」を参照してください。

注意

自動インストルメンテーションは、ASP.NET、ASP.NET Core の IIS でホストされているアプリケーションと Java で使用できます。 Azure 仮想マシンと Virtual Machine Scale Sets 上でホストされている、Node.js、Python アプリケーションをインストルメント化するには、SDK を使用します。

Application Insights エージェントでは、SDK と同じ依存関係のシグナルを既定で自動的に収集します。 詳細については、「依存関係の自動収集」を参照してください。

Application Insights エージェントをインストールする前に、接続文字列が必要になります。 新しい Application Insights リソースを作成するか、既存の Application Insights リソースから接続文字列をコピーします。

仮想マシンの監視を有効にする

方法 1 - Azure portal と GUI

  1. Azure portal でお使いの Application Insights リソースに移動し、接続文字列をクリップボードにコピーします。

    接続文字列のスクリーンショット。

  2. お使いの仮想マシンに移動し、左側のナビゲーション メニューの [設定] セクションの下にある [拡張機能とアプリケーション] ペインを開き、[+ 追加] を選びます

    拡張機能ペインと [追加] ボタンのスクリーンショット。

  3. [Application Insights エージェント] カードを選んで、[次へ] を選びます

    [拡張機能のインストール] ペインと [次へ] ボタンのスクリーンショット。

  4. ステップ 1 でコピーした接続文字列を貼り付けて、[確認と作成] を選びます。

    [作成] ペインと [確認と作成] ボタンのスクリーンショット。

方法 2 - PowerShell

Note

PowerShell の新機能 使用開始ガイドを確認してください。

Application Insights エージェントを Azure 仮想マシンの拡張機能としてインストールまたは更新する

# define variables to match your environment before running
$ResourceGroup = "<myVmResourceGroup>"
$VMName = "<myVmName>"
$Location = "<myVmLocation>"
$ConnectionString = "<myAppInsightsResourceConnectionString>"

$publicCfgJsonString = @"
{
    "redfieldConfiguration": {
        "instrumentationKeyMap": {
        "filters": [
            {
            "appFilter": ".*",
            "machineFilter": ".*",
            "virtualPathFilter": ".*",
            "instrumentationSettings" : {
                "connectionString": "$ConnectionString"
            }
            }
        ]
        }
    }
    }
"@

$privateCfgJsonString = '{}'
	
Set-AzVMExtension -ResourceGroupName $ResourceGroup -VMName $VMName -Location $Location -Name "ApplicationMonitoringWindows" -Publisher "Microsoft.Azure.Diagnostics" -Type "ApplicationMonitoringWindows" -Version "2.8" -SettingString $publicCfgJsonString -ProtectedSettingString $privateCfgJsonString

Note

さらに複雑で大規模なデプロイの場合は、PowerShell のループを使って、複数の VM で Application Insights エージェント拡張機能をインストールまたは更新できます。

Azure 仮想マシンでの Application Insights エージェント拡張機能の状態のクエリを実行します

Get-AzVMExtension -ResourceGroupName "<myVmResourceGroup>" -VMName "<myVmName>" -Name ApplicationMonitoringWindows -Status

Azure 仮想マシンにインストールされている拡張機能の一覧を取得します

Get-AzResource -ResourceId "/subscriptions/<mySubscriptionId>/resourceGroups/<myVmResourceGroup>/providers/Microsoft.Compute/virtualMachines/<myVmName>/extensions"

Azure 仮想マシンから Application Insights エージェント拡張機能をアンインストールします

Remove-AzVMExtension -ResourceGroupName "<myVmResourceGroup>" -VMName "<myVmName>" -Name "ApplicationMonitoring"

注意

インストールを確認するには、Application Insights エージェント拡張機能のデプロイに使用した接続文字列に関連付けられている、Application Insights リソース内の Live Metrics Stream を選択します。 複数の仮想マシンからデータを送信する場合は、[サーバー名] でターゲットの Azure 仮想マシンを選びます。 データのフローが開始されるまでに最大で 1 分かかる場合があります。

Virtual Machine Scale Sets の監視を有効にする

方法 1 - Azure portal と GUI

VM に関する前の手順に従いますが、VM ではなく Virtual Machine Scale Sets に移動します。

方法 2 - PowerShell

Application Insights エージェントを Azure Virtual Machine Scale Sets の拡張機能としてインストールまたは更新します

# set resource group, vmss name, and connection string to reflect your enivornment
$ResourceGroup = "<myVmResourceGroup>"
$VMSSName = "<myVmName>"
$ConnectionString = "<myAppInsightsResourceConnectionString>"
$publicCfgHashtable =
@{
  "redfieldConfiguration"= @{
    "instrumentationKeyMap"= @{
      "filters"= @(
        @{
          "appFilter"= ".*";
          "machineFilter"= ".*";
          "virtualPathFilter"= ".*";
          "instrumentationSettings" = @{
            "connectionString"= "$ConnectionString"
          }
        }
      )
    }
  }
};
$privateCfgHashtable = @{};
$vmss = Get-AzVmss -ResourceGroupName $ResourceGroup -VMScaleSetName $VMSSName
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "ApplicationMonitoringWindows" -Publisher "Microsoft.Azure.Diagnostics" -Type "ApplicationMonitoringWindows" -TypeHandlerVersion "2.8" -Setting $publicCfgHashtable -ProtectedSetting $privateCfgHashtable
Update-AzVmss -ResourceGroupName $vmss.ResourceGroupName -Name $vmss
# Note: Depending on your update policy, you might need to run Update-AzVmssInstance for each instance

Azure Virtual Machine Scale Sets にインストールされている拡張機能の一覧を取得します

Get-AzResource -ResourceId "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVmssName>/extensions"

Azure Virtual Machine Scale Sets からアプリケーション監視拡張機能をアンインストールします

# set resource group and vmss name to reflect your environment
$vmss = Get-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myVmssName>"
Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "ApplicationMonitoringWindows"
Update-AzVmss -ResourceGroupName $vmss.ResourceGroupName -Name $vmss.Name -VirtualMachineScaleSet $vmss
# Note: Depending on your update policy, you might need to run Update-AzVmssInstance for each instance

トラブルシューティング

Azure 仮想マシンと Virtual Machine Scale Sets 上で実行されている、.NET アプリケーション用の Application Insights 監視エージェント拡張機能のトラブルシューティングに関するヒントを見つけます。

拡張機能のデプロイで問題が発生する場合は、次のディレクトリにあるファイルにログされる実行出力を確認します。

C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.ApplicationMonitoringWindows\<version>\

拡張機能が正常にデプロイされていても、テレメトリを表示できない場合は、エージェントのトラブルシューティングに関する記事で説明されている次のいずれかの問題である可能性があります。

  • アプリの bin ディレクトリでの DLL の競合
  • IIS 共有構成との競合

アプリケーション ホストとインジェスト サービスの間の接続をテストする

Application Insights SDK とエージェントからテレメトリが送信され、インジェスト エンドポイントへの REST 呼び出しとして取り込まれます。 Web サーバーまたはアプリケーション ホスト マシンからインジェスト サービス エンドポイントへの接続は、PowerShell の生の REST クライアントを使用するか、curl コマンドを使用してテストできます。 「Azure Monitor Application Insights でアプリケーション テレメトリが見つからない場合のトラブルシューティング」をご覧ください。

リリース ノート

2.8.44

  • Application Insights .NET/.NET Core SDK を 2.20.1 - red field に更新しました。
  • SQL クエリ コレクションを有効にしました。
  • Azure Active Directory 認証のサポートを有効にしました。

2.8.42

  • ApplicationInsights .NET/.NET Core SDK を 2.18.1 - red field に更新しました。

2.8.41

  • ASP.NET Core の自動インストルメンテーション機能を追加しました。

次のステップ