Enable VM insights using PowerShell
This article describes how to enable VM insights on Azure virtual machines using PowerShell. This procedure can be used for the following:
- Azure virtual machine
- Azure Virtual Machine Scale Set
This article only applies to the Log Analytics agent. To enable VM insights with the Azure monitor agent, use other installation methods described in Enable VM insights overview.
- Log Analytics workspace configured for VM insights.
- See Supported operating systems to ensure that the operating system of the virtual machine or Virtual Machine Scale Set you're enabling is supported.
- See Manage the Azure Monitor agent for prerequisites related to Azure Monitor agent.
To enable VM insights for multiple VMs or Virtual Machine Scale Sets, use the PowerShell script Install-VMInsights.ps1, which is available from the Azure PowerShell Gallery. This script iterates through:
- Every virtual machine and Virtual Machine Scale Set in your subscription.
- The scoped resource group that's specified by ResourceGroup.
- A single VM or Virtual Machine Scale Set that's specified by Name.
For each virtual machine or Virtual Machine Scale Set, the script verifies whether the VM extension for the Log Analytics agent and Dependency agent is already installed. If both extensions are installed, the script tries to reinstall it. If both extensions aren't installed, the script installs them.
Verify you're using Azure PowerShell module Az version 1.0.0 or later with
Enable-AzureRM compatibility aliases enabled. Run
Get-Module -ListAvailable Az to find the version. If you need to upgrade, see Install Azure PowerShell module. If you're running PowerShell locally, you also need to run
Connect-AzAccount to create a connection with Azure.
To get a list of the script's argument details and example usage, run
Get-Help .\Install-VMInsights.ps1 -Detailed SYNOPSIS This script installs VM extensions for Log Analytics and the Dependency agent as needed for VM Insights. SYNTAX .\Install-VMInsights.ps1 [-WorkspaceId] <String> [-WorkspaceKey] <String> [-SubscriptionId] <String> [[-ResourceGroup] <String>] [[-Name] <String>] [[-PolicyAssignmentName] <String>] [-ReInstall] [-TriggerVmssManualVMUpdate] [-Approve] [-WorkspaceRegion] <String> [-WhatIf] [-Confirm] [<CommonParameters>] DESCRIPTION This script installs or reconfigures the following on VMs and virtual machine scale sets: - Log Analytics VM extension configured to supplied Log Analytics workspace - Dependency agent VM extension Can be applied to: - Subscription - Resource group in a subscription - Specific VM or virtual machine scale set - Compliance results of a policy for a VM or VM extension Script will show you a list of VMs or virtual machine scale sets that will apply to and let you confirm to continue. Use -Approve switch to run without prompting, if all required parameters are provided. If the extensions are already installed, they will not install again. Use -ReInstall switch if you need to, for example, update the workspace. Use -WhatIf if you want to see what would happen in terms of installs, what workspace configured to, and status of the extension. PARAMETERS -WorkspaceId <String> Log Analytics WorkspaceID (GUID) for the data to be sent to -WorkspaceKey <String> Log Analytics Workspace primary or secondary key -SubscriptionId <String> SubscriptionId for the VMs/VM Scale Sets If using PolicyAssignmentName parameter, subscription that VMs are in -ResourceGroup <String> <Optional> Resource Group to which the VMs or VM Scale Sets belong -Name <String> <Optional> To install to a single VM/VM Scale Set -PolicyAssignmentName <String> <Optional> Take the input VMs to operate on as the Compliance results from this Assignment If specified will only take from this source. -ReInstall [<SwitchParameter>] <Optional> If VM/VM Scale Set is already configured for a different workspace, set this to change to the new workspace -TriggerVmssManualVMUpdate [<SwitchParameter>] <Optional> Set this flag to trigger update of VM instances in a scale set whose upgrade policy is set to Manual -Approve [<SwitchParameter>] <Optional> Gives the approval for the installation to start with no confirmation prompt for the listed VMs/VM Scale Sets -WorkspaceRegion <String> Region the Log Analytics Workspace is in Supported values: "East US","eastus","Southeast Asia","southeastasia","West Central US","westcentralus","West Europe","westeurope" For Health supported is: "East US","eastus","West Central US","westcentralus" -WhatIf [<SwitchParameter>] <Optional> See what would happen in terms of installs. If extension is already installed will show what workspace is currently configured, and status of the VM extension -Confirm [<SwitchParameter>] <Optional> Confirm every action <CommonParameters> This cmdlet supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. For more information, see about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216). -------------------------- EXAMPLE 1 -------------------------- .\Install-VMInsights.ps1 -WorkspaceRegion eastus -WorkspaceId <WorkspaceId> -WorkspaceKey <WorkspaceKey> -SubscriptionId <SubscriptionId> -ResourceGroup <ResourceGroup> Install for all VMs in a resource group in a subscription -------------------------- EXAMPLE 2 -------------------------- .\Install-VMInsights.ps1 -WorkspaceRegion eastus -WorkspaceId <WorkspaceId> -WorkspaceKey <WorkspaceKey> -SubscriptionId <SubscriptionId> -ResourceGroup <ResourceGroup> -ReInstall Specify to reinstall extensions even if already installed, for example, to update to a different workspace -------------------------- EXAMPLE 3 -------------------------- .\Install-VMInsights.ps1 -WorkspaceRegion eastus -WorkspaceId <WorkspaceId> -WorkspaceKey <WorkspaceKey> -SubscriptionId <SubscriptionId> -PolicyAssignmentName a4f79f8ce891455198c08736 -ReInstall Specify to use a PolicyAssignmentName for source and to reinstall (move to a new workspace)
The following example demonstrates using the PowerShell commands in the folder to enable VM insights and understand the expected output:
$WorkspaceId = "<GUID>" $WorkspaceKey = "<Key>" $SubscriptionId = "<GUID>" .\Install-VMInsights.ps1 -WorkspaceId $WorkspaceId -WorkspaceKey $WorkspaceKey -SubscriptionId $SubscriptionId -WorkspaceRegion eastus Getting list of VMs or virtual machine scale sets matching criteria specified VMs or virtual machine scale sets matching criteria: db-ws-1 VM running db-ws2012 VM running This operation will install the Log Analytics and Dependency agent extensions on the previous two VMs or virtual machine scale sets. VMs in a non-running state will be skipped. Extension will not be reinstalled if already installed. Use -ReInstall if desired, for example, to update workspace. Confirm Continue? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y db-ws-1 : Deploying DependencyAgentWindows with name DAExtension db-ws-1 : Successfully deployed DependencyAgentWindows db-ws-1 : Deploying MicrosoftMonitoringAgent with name MMAExtension db-ws-1 : Successfully deployed MicrosoftMonitoringAgent db-ws2012 : Deploying DependencyAgentWindows with name DAExtension db-ws2012 : Successfully deployed DependencyAgentWindows db-ws2012 : Deploying MicrosoftMonitoringAgent with name MMAExtension db-ws2012 : Successfully deployed MicrosoftMonitoringAgent Summary: Already onboarded: (0) Succeeded: (4) db-ws-1 : Successfully deployed DependencyAgentWindows db-ws-1 : Successfully deployed MicrosoftMonitoringAgent db-ws2012 : Successfully deployed DependencyAgentWindows db-ws2012 : Successfully deployed MicrosoftMonitoringAgent Connected to different workspace: (0) Not running - start VM to configure: (0) Failed: (0)