Have you run into a scenario where something has gone wrong with your virtual machine or with your cloud service application and you have to collect logs from different role/VM instances for troubleshooting? What if you cannot connect to the Virtual Machine to collect these logs?
To address these scenarios, the Azure Customer Support team has released the Azure Log Collector extension which can collect and upload logs from Cloud Service instances or Virtual Machines without requiring to log into the remote Virtual Machine! These logs can automatically uploaded to Azure storage which can be shared with Azure support team or anyone who is troubleshooting the issue. If you’re new to VM Extensions, you can get overview of VM Extensions by visiting the documentation site here .
Note: The current version of Log Collector targets windows VMs only, Linux support would be coming soon.
Why do we need the Log Collector extension?
When you are working on troubleshooting issues with your application deployed to either the Azure PaaS or IaaS platform, you need to collect diagnostics data from the virtual machines at the exact time when the problem happened. The data could be generated from your own service or from Azure components such as Azure VM Agent. It needs some in-depth knowledge of Azure environment to find and collect the right data. Azure Log Collector simplifies this by supporting the following:
- A simple command line interface for log collection with support for customization.
- No dependency on remote access connection, the diagnostics data will still be collected even Remote Access is not enabled or stops working for any reason.
- The extension can be enabled from anywhere using Service Management REST API or Azure PowerShell cmdlets.
- If your cloud services have many role instances, the extension saves significant time to get log data from all virtual machines using a single sequence of commands at once.
- It allows you to specify custom locations on VMs to collect any additional data files.
- It works with both Virtual Machines and Cloud Services.
What log files does the Extension collect?
The collection modes supported by Azure Log Collector are as follows:
Type | Logs Collected |
Azure Platform Logs | This collection mode includes all the logs related to Azure guest agents and other Azure components |
All Logs |
|
Additional Logs | Any custom log folder can be targeted for collection . |
Please refer to MSDN VM Extension documentation for information on configuring these two modes and the blog here for description of files to be collected by this extension.
How to use the Azure Log Collector Extension?
Depending on whether you are troubleshooting cloud service or an application running inside Azure Virtual Machine, the MSDN documentation provides two sample PowerShell scripts called ‘SetAzureServiceLogCollector.ps1’ and ‘SetAzureVMLogCollector.ps1’ , copy these scripts and run them locally by following the instructions in the documentation page. After that, collecting logs is as simple as below:
Sample use case for Azure VM.
#Specify your cloud service name $ServiceName = 'YourServiceName' #Specify the instances on which extension will be installed and enabled. Use wildcard * for all instances $VMName = "YourVMName" #Specify the additional data collection folders and settings $AdditionalDataList = @() #Specify the collection mode, "Full" or "GA" $mode = "Full"
$StorageAccountName = 'Your Azure Storage Account Name' $StorageAccountKey = 'Your Storage Key'
.\SetAzureServiceLogCollector.ps1 -ServiceName YourCloudServiceName -Roles $roles -Instances $instances –Mode $mode -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -AdditionDataLocationList $AdditionalDataList
Similarly, here is a sample use case for Azure Cloud Service
.\SetAzureServiceLogCollector.ps1 -ServiceName YourCloudServiceName -Roles $roles -Instances $instances –Mode $mode -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -AdditionDataLocationList $AdditionalDataList
Repeat the commands again to collect logs multiple times.
What happens after the logs are collected?
Once the logs are uploaded to the storage account, they can be inspected for troubleshooting by following the steps here or can be send to Azure Support team if there is a support incident.
If the extension is no longer needed, you can remove by running the following cmdlet:
For IaaS :
Get-AzureVM -ServiceName $ServiceName -Name $VMName | Set-AzureVMExtension -Publisher Microsoft.WindowsAzure.Compute -ExtensionName "AzureLogCollector" -Version 1.0 -Uninstall | Update-AzureVM -Verbose
For PaaS:
Get-AzureVM -ServiceName $ServiceName -Name $VMName | Set-AzureServiceExtension -Publisher Microsoft.WindowsAzure.Compute -ExtensionName "AzureLogCollector" -Version 1.0 -Uninstall | Update-AzureVM -Verbose
We hope you find this extension useful ! Stay tuned for a Linux version of this in the upcoming releases!