你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 虚拟机和 Azure 虚拟机规模集上部署 Azure Monitor Application Insights 代理

现在比以往更容易在基于 .NET 或 Java 的 Web 应用程序上启用监视功能,这些应用程序运行在 Azure 虚拟机Azure 虚拟机规模集上。 获取使用 Application Insights 的所有权益,不需修改代码。

本文逐步讲解如何通过 Application Insights 代理启用 Application Insights 监视,并提供有关如何自动完成大规模部署过程的初步指导。

重要

在 Azure VM 和 VMSS 上运行的基于 Java 的应用程序是通过 Application Insights Java 3.0 代理 监视的,该代理已正式发布。

重要

适用于在 Azure VM 和 VMSS 上运行的 ASP.NET 和 ASP.NET Core 应用程序的 Azure Application Insights 代理目前以公共预览版提供。 若要监视本地运行的 ASP.NET 应用程序,请使用用于本地服务器的 Azure Application Insights 代理。该代理已正式发布且完全受支持。 用于 Azure VM 和 VMSS 的预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 有些功能可能不受支持,有些功能可能受到限制。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

启用 Application Insights

自动检测易于启用,无需高级配置。

注意

自动检测功能适用于 ASP.NET、ASP.NET Core IIS 托管的应用程序和 Java。 使用 SDK 来检测托管在 Azure 虚拟机和虚拟机规模集上的 Node.js 和 Python 应用程序。

Application Insights 代理自动收集与 .NET SDK 相同的、现成的依赖项信号。 若要了解详细信息,请参阅依赖项自动收集

使用 PowerShell 在 Azure 虚拟机上管理用于 .NET 应用程序的 Application Insights 代理

注意

在安装 Application Insights 代理之前,需要一个连接字符串。 创建新的 Application Insights 资源,或从现有 Application Insights 资源复制连接字符串。

注意

不熟悉 PowerShell? 请查看入门指南

安装或更新用作 Azure 虚拟机扩展的 Application Insights 代理

$publicCfgJsonString = '
{
  "redfieldConfiguration": {
    "instrumentationKeyMap": {
      "filters": [
        {
          "appFilter": ".*",
          "machineFilter": ".*",
          "virtualPathFilter": ".*",
          "instrumentationSettings" : {
            "connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/" # Application Insights connection string, create new Application Insights resource if you don't have one. https://portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/microsoft.insights%2Fcomponents
          }
        }
      ]
    }
  }
}
';
$privateCfgJsonString = '{}';

Set-AzVMExtension -ResourceGroupName "<myVmResourceGroup>" -VMName "<myVmName>" -Location "<myVmLocation>" -Name "ApplicationMonitoring" -Publisher "Microsoft.Azure.Diagnostics" -Type "ApplicationMonitoringWindows" -Version "2.8" -SettingString $publicCfgJsonString -ProtectedSettingString $privateCfgJsonString

注意

可以使用 PowerShell 循环跨多个虚拟机大规模安装或更新用作扩展的 Application Insights 代理。

从 Azure 虚拟机卸载 Application Insights 代理扩展

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

查询 Azure 虚拟机的 Application Insights 代理扩展状态

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

获取 Azure 虚拟机的已安装扩展的列表

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

# Name              : ApplicationMonitoring
# ResourceGroupName : <myVmResourceGroup>
# ResourceType      : Microsoft.Compute/virtualMachines/extensions
# Location          : southcentralus
# ResourceId        : /subscriptions/<mySubscriptionId>/resourceGroups/<myVmResourceGroup>/providers/Microsoft.Compute/virtualMachines/<myVmName>/extensions/ApplicationMonitoring

你还可以在门户中的 Azure 虚拟机部分中查看已安装的扩展。

注意

验证安装的方法是:单击与你在部署 Application Insights 代理扩展时使用的连接字符串相关联的 Application Insights 资源中的“实时指标流”。 如果从多个虚拟机发送数据,请在“服务器名称”下选择目标 Azure 虚拟机。 可能需要等待长达一分钟的时间数据才会开始流动。

使用 PowerShell 在 Azure 虚拟机规模集上管理用于 .NET 应用程序的 Application Insights 代理

安装或更新用作 Azure 虚拟机规模集扩展的 Application Insights 代理

$publicCfgHashtable =
@{
  "redfieldConfiguration"= @{
    "instrumentationKeyMap"= @{
      "filters"= @(
        @{
          "appFilter"= ".*";
          "machineFilter"= ".*";
          "virtualPathFilter"= ".*";
          "instrumentationSettings" = @{
            "connectionString"= "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/" # Application Insights connection string, create new Application Insights resource if you don't have one. https://ms.portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/microsoft.insights%2Fcomponents
          }
        }
      )
    }
  }
};
$privateCfgHashtable = @{};

$vmss = Get-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myVmssName>"

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.Name -VirtualMachineScaleSet $vmss

# Note: depending on your update policy, you might need to run Update-AzVmssInstance for each instance

从 Azure 虚拟机规模集卸载应用程序监视扩展

$vmss = Get-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myVmssName>"

Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "ApplicationMonitoring"

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 虚拟机规模集的应用程序监视扩展状态

# Not supported by extensions framework

获取 Azure 虚拟机规模集的已安装扩展的列表

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

# Name              : ApplicationMonitoringWindows
# ResourceGroupName : <myResourceGroup>
# ResourceType      : Microsoft.Compute/virtualMachineScaleSets/extensions
# Location          :
# ResourceId        : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVmssName>/extensions/ApplicationMonitoringWindows

疑难解答

请查找在 Azure 虚拟机和虚拟机规模集上运行的 .NET 应用程序的 Application Insights 监视代理扩展的故障排除提示。

注意

仅支持通过基于 SDK 的手动检测在 Azure 虚拟机和 Azure 虚拟机规模集中使用 .NET Core、Node.js 和 Python 应用程序,因此,以下步骤不适用于这些方案。

扩展执行输出将记录到在以下目录中发现的文件:

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

发行说明

2.8.44

  • 将 ApplicationInsights .NET/.NET Core SDK 更新到了 2.20.1-redfield。
  • 启用了 SQL 查询集合。
  • 支持 Azure Active Directory 身份验证。

2.8.42

  • 将 ApplicationInsights .NET/.NET Core SDK 更新到了 2.18.1-redfield。

2.8.41

  • 添加了 ASP.NET Core 自动检测功能。

后续步骤