你当前正在访问 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 应用程序。
使用 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 自动检测功能。
后续步骤
- 了解如何将应用程序部署到 Azure 虚拟机规模集。
- 设置可用性 Web 测试,以便在终结点关闭时发出警报。