通过 自动检测 为托管在 Azure 虚拟机 和 Azure 虚拟机规模集 上的 Internet Information Server(IIS)的 ASP.NET 和 ASP.NET Core 应用程序启用 Azure MonitorApplication Insights 监控。 使用虚拟机扩展部署 Application Insights 代理。 代理 自动收集与 SDK 相同的依赖项信号。 使用 PowerShell 自动执行大规模部署。
有关支持的自动检测方案的完整列表,请参阅支持的环境、语言和资源提供程序。
先决条件
在安装 Application Insights 代理扩展之前,需要一个连接字符串。
创建新的 Application Insights 资源 或从现有资源复制连接字符串。
为虚拟机启用监视
可使用 Azure 门户或 PowerShell 来启用 VM 监视。
在 Azure 门户中,转到你的 Application Insights 资源。 将你的连接字符串复制到剪贴板。
转到虚拟机。 在左侧菜单的“设置”部分下,选择“扩展 + 应用程序”>“添加”。
选择“Application Insights 代理”“下一步”。>
粘贴你在步骤 1 中复制的连接字符串,然后选择“查看 + 创建”。
注意
不熟悉 PowerShell? 请查看入门指南。
安装或更新用作 Azure 虚拟机扩展的 Application Insights 代理:
# 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
注意
对于更复杂的大规模部署,你可以使用 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 资源中的“实时指标流”来验证安装。 如果你从多个虚拟机发送数据,请在“服务器名称”下选择目标 Azure 虚拟机。 最长可能需要等待一分钟,数据才会开始流动。
instrumentationKeyMap (扩展设置)
重要
InstrumentationKeyMap 是一项高级路由功能,可将同一台计算机上的 Internet Information Services (IIS) 应用映射到 Application Insights 资源。 此功能适用于由 Application Insights 代理自动监测的 IIS 托管 ASP.NET 和 ASP.NET Core 应用。
匹配的工作原理
- 映射定义了一个名为
filters 的规则有序列表。 第一个匹配规则生效。 首先设置特定规则,然后以一个通用规则收尾。
- 每个规则都可以为匹配的应用分配不同的 Application Insights 资源。 首选受支持方案中的连接字符串,因为检测密钥是旧式的。
可用筛选器
-
MachineFilter 或 machineFilter:与计算机或虚拟机名称匹配的 C# 正则表达式。
.* 匹配所有名称。
-
AppFilter或appFilter:与 IIS 站点名称 () 匹配的 C# 正则表达式。HostingEnvironment.SiteName 如果VirtualPathFilter或virtualPathFilter未提供,则需要此筛选器。
-
VirtualPathFilter或virtualPathFilter:与 IIS 虚拟路径 () 匹配的 C# 正则表达式。HostingEnvironment.ApplicationVirtualPath 使用此筛选器以网站下的单个应用为目标。
术语映射
- PowerShell cmdlet 使用
MachineFilter、AppFilter和VirtualPathFilter。
- Azure VM 和虚拟机规模集扩展 JSON 使用
machineFilter、appFilter 和 virtualPathFilter,并使用 instrumentationSettings 设置资源。
小窍门
包括与所有应用(例如 .*)匹配的最终规则,并应用默认资源以使行为明确。
VM 和虚拟机规模集扩展的应用方向
将地图置于redfieldConfiguration.instrumentationKeyMap.filters扩展的公共设置中(-SettingString用于 VM,-Setting用于虚拟机规模集)。 属性名称为驼峰式小写。 使用 instrumentationSettings.connectionString.. 设置每个规则的目标资源。
{
"redfieldConfiguration": {
"instrumentationKeyMap": {
"filters": [
{
"machineFilter": ".*",
"appFilter": ".*",
"instrumentationSettings": {
"connectionString": "<your-APPLICATIONINSIGHTS_CONNECTION_STRING>"
}
}
]
}
}
}
为虚拟机规模集启用监视
可以使用 Azure 门户或 PowerShell 为虚拟机规模集启用监视。
遵循前述用于 VM 的步骤,但需转到虚拟机规模集而不是 VM。
安装或更新 Application Insights 代理程序,将其用作虚拟机规模集的扩展:
# Set resource group, vmss name, and connection string to reflect your environment
$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
获取虚拟机规模集的已安装扩展的列表:
Get-AzResource -ResourceId "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVmssName>/extensions"
从虚拟机规模集卸载应用程序监视扩展:
# 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
疑难解答
有关专用故障排除步骤,请参阅 为 VM 和虚拟机规模集部署 Application Insights Monitoring Agent 扩展时出现问题。
发行说明
2.8.44
- 已将 Application Insights .NET/.NET Core SDK 更新为 2.20.1 - 红色字段。
- 启用了 SQL 查询集合。
- 已启用对 Microsoft Entra 身份验证的支持。
2.8.42
已将 Application Insights .NET/.NET Core SDK 更新到 2.18.1 - 红色字段。
2.8.41
添加了 ASP.NET Core 自动检测功能。
后续步骤