You may already know Azure Monitor Application Insights, which is an application performance management service for web developers, helping you gain insights about your application performance and reliability.
Well, good news, you can now deploy Azure Monitor Application Insights as an agent (aka extension) on Azure Virtual Machines or Azure Virtual Machines Scale Sets when these VM/Scale Sets host web application running on .Net with IIS (if you are using another language you still need to use the SDK to embedded Application Insights into your application).
This can be quite useful when you do not have access to the source code of the application and want to leverage and take advantage of Application Insights.
You have 2 ways to deploy the Application Insights agent on your VM/Scale Sets:
- From the Azure portal (https://portal.azure.com/) by accessing the Extension blade of your virtual machine/scale sets and add the Application Insights Agent extension
For Virtual Machine
For Virtual Machine Scale Sets
- Of using PowerShell by using the following command
For a virtual machine
$publicCfgJsonString = ‘
{
“redfieldConfiguration”: {
“instrumentationKeyMap”: {
“filters”: [
{
“appFilter”: “.*”,
“machineFilter”: “.*”,
“instrumentationSettings” : {
“instrumentationKey”: “<instrumentation key from your Application Insights”
}
}
]
}
}
}
‘;
$privateCfgJsonString = ‘{}’;Set-AzVMExtension -ResourceGroupName “<your resource group>” -VMName “<your virtual machine>” -Location “<location of the virtual machine>” -Name “ApplicationMonitoring” -Publisher “Microsoft.Azure.Diagnostics” -Type “ApplicationMonitoringWindows” -Version “2.8” -SettingString $publicCfgJsonString -ProtectedSettingString $privateCfgJsonString
For a virtual machine scale sets
$publicCfgHashtable =
@{
“redfieldConfiguration”= @{
“instrumentationKeyMap”= @{
“filters”= @(
@{
“appFilter”= “.*”;
“machineFilter”= “.*”;
“instrumentationSettings”= @{
“instrumentationKey”= “<instrumentation key from your Application Insights”
}
}
)
}
}
};
$privateCfgHashtable = @{};$vmss = Get-AzVmss -ResourceGroupName “<your resource group>” -VMScaleSetName “<your VM Scale Sets name>”
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name “ApplicationMonitoring” -Publisher “Microsoft.Azure.Diagnostics” -Type “ApplicationMonitoringWindows” -TypeHandlerVersion “2.8” -Setting $publicCfgHashtable -ProtectedSetting $privateCfgHashtable
Update-AzVmss -ResourceGroupName $vmss.ResourceGroupName -Name $vmss.Name -VirtualMachineScaleSet $vmss