Enviar métricas do SO convidado para o repositório de métricas do Azure Monitor usando um modelo ARM para uma VM do Windows
Nota
O Azure Monitor Agent (AMA) coleta dados de monitoramento do sistema operacional convidado do Azure e de máquinas virtuais híbridas e os entrega ao Azure Monitor para uso por recursos, insights e outros serviços, como o Microsoft Sentinel e o Microsoft Defender for Cloud.
Recomendamos usar o Azure Monitor Agent para coletar logs e métricas de Máquinas Virtuais. Para obter mais informações, consulte Visão geral do Azure Monitor Agent.
Os dados de desempenho do SO convidado das máquinas virtuais (VMs) do Azure não são recolhidos automaticamente como outras métricas da plataforma. Instale a extensão Azure Monitor Diagnostics para coletar métricas do SO convidado no banco de dados de métricas para que ele possa ser usado com todos os recursos do Azure Monitor Metrics. Esses recursos incluem alertas, gráficos, roteamento e acesso quase em tempo real a partir de uma API REST. Este artigo descreve o processo de envio de métricas de desempenho do SO convidado para uma VM do Windows para o banco de dados de métricas usando um modelo do Azure Resource Manager (modelo ARM).
Nota
Para obter detalhes sobre como configurar a extensão de diagnóstico para coletar métricas do SO convidado usando o portal do Azure, consulte Instalar e configurar a extensão WAD (Diagnóstico do Windows Azure).
Se você é novo em modelos ARM, saiba mais sobre implantações de modelos e sua estrutura e sintaxe.
Pré-requisitos
- A sua subscrição tem de estar registada no Microsoft.Insights.
- Você precisa ter o Azure PowerShell ou o Azure Cloud Shell instalado.
Configurar o Azure Monitor como um coletor de dados
A extensão do Diagnóstico do Azure usa um recurso chamado coletores de dados para rotear métricas e logs para locais diferentes. As etapas a seguir mostram como usar um modelo ARM e o PowerShell para implantar uma VM usando o novo coletor de dados do Azure Monitor.
Modelo ARM
Para este exemplo, você pode usar um modelo de exemplo disponível publicamente. Os modelos iniciais estão no GitHub.
- Azuredeploy.json: Um modelo ARM pré-configurado para a implantação de uma VM.
- Azuredeploy.parameters.json: Um arquivo de parâmetros que armazena informações como qual nome de usuário e senha você deseja definir para sua VM. Durante a implantação, o modelo ARM usa os parâmetros definidos nesse arquivo.
Transfira e guarde ambos os ficheiros localmente.
Modificar azuredeploy.parameters.json
Abra o arquivo azuredeploy.parameters.json .
Insira valores para
adminUsername
eadminPassword
para a VM. Esses parâmetros são usados para acesso remoto à VM. Para evitar que sua VM seja sequestrada, não use os valores neste modelo. Os bots verificam a internet em busca de nomes de usuário e senhas em repositórios públicos do GitHub. É provável que eles estejam testando VMs com esses padrões.Crie um exclusivo
dnsname
para a VM.
Modificar azuredeploy.json
Abra o arquivo azuredeploy.json .
Adicione um ID de conta de armazenamento à
variables
seção do modelo após a entrada parastorageAccountName
.// Find these lines. "variables": { "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", // Add this line directly below. "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
Adicione esta extensão MSI (Managed Service Identity) ao modelo na parte superior da
resources
seção. A extensão garante que o Azure Monitor aceite as métricas que estão sendo emitidas.//Find this code. "resources": [ // Add this code directly below. { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('vmName'), '/', 'WADExtensionSetup')]", "apiVersion": "2017-12-01", "location": "[resourceGroup().location]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" ], "properties": { "publisher": "Microsoft.ManagedIdentity", "type": "ManagedIdentityExtensionForWindows", "typeHandlerVersion": "1.0", "autoUpgradeMinorVersion": true, "settings": { "port": 50342 } } },
Adicione a
identity
configuração ao recurso VM para garantir que o Azure atribua uma identidade do sistema à extensão MSI. Esta etapa garante que a VM possa emitir métricas de convidado sobre si mesma para o Azure Monitor.// Find this section "subnet": { "id": "[variables('subnetRef')]" } } } ] } }, { "apiVersion": "2017-03-30", "type": "Microsoft.Compute/virtualMachines", "name": "[variables('vmName')]", "location": "[resourceGroup().location]", // add these 3 lines below "identity": { "type": "SystemAssigned" }, //end of added lines "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" ], "properties": { "hardwareProfile": { ...
Adicione a seguinte configuração para habilitar a extensão de diagnóstico em uma VM do Windows. Para uma VM simples baseada no Gerenciador de Recursos, você pode adicionar a configuração de extensão à matriz de recursos para a VM. A linha
"sinks": "AzMonSink"
, e a correspondente"SinksConfig"
mais adiante na seção, permitem que a extensão emita métricas diretamente para o Azure Monitor. Sinta-se à vontade para adicionar ou remover contadores de desempenho conforme necessário."networkProfile": { "networkInterfaces": [ { "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" } ] }, "diagnosticsProfile": { "bootDiagnostics": { "enabled": true, "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" } } }, //Start of section to add "resources": [ { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('vmName'), '/', 'Microsoft.Insights.VMDiagnosticsSettings')]", "apiVersion": "2017-12-01", "location": "[resourceGroup().location]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" ], "properties": { "publisher": "Microsoft.Azure.Diagnostics", "type": "IaaSDiagnostics", "typeHandlerVersion": "1.12", "autoUpgradeMinorVersion": true, "settings": { "WadCfg": { "DiagnosticMonitorConfiguration": { "overallQuotaInMB": 4096, "DiagnosticInfrastructureLogs": { "scheduledTransferLogLevelFilter": "Error" }, "Directories": { "scheduledTransferPeriod": "PT1M", "IISLogs": { "containerName": "wad-iis-logfiles" }, "FailedRequestLogs": { "containerName": "wad-failedrequestlogs" } }, "PerformanceCounters": { "scheduledTransferPeriod": "PT1M", "sinks": "AzMonSink", "PerformanceCounterConfiguration": [ { "counterSpecifier": "\\Memory\\Available Bytes", "sampleRate": "PT15S" }, { "counterSpecifier": "\\Memory\\% Committed Bytes In Use", "sampleRate": "PT15S" }, { "counterSpecifier": "\\Memory\\Committed Bytes", "sampleRate": "PT15S" } ] }, "WindowsEventLog": { "scheduledTransferPeriod": "PT1M", "DataSource": [ { "name": "Application!*" } ] }, "Logs": { "scheduledTransferPeriod": "PT1M", "scheduledTransferLogLevelFilter": "Error" } }, "SinksConfig": { "Sink": [ { "name" : "AzMonSink", "AzureMonitor" : {} } ] } }, "StorageAccount": "[variables('storageAccountName')]" }, "protectedSettings": { "storageAccountName": "[variables('storageAccountName')]", "storageAccountKey": "[listKeys(variables('accountid'),'2015-06-15').key1]", "storageAccountEndPoint": "https://core.windows.net/" } } } ] //End of section to add
Salve e feche ambos os arquivos.
Implementar o modelo do Resource Manager
Nota
Você deve estar executando a extensão de Diagnóstico do Azure versão 1.5 ou superior e ter a autoUpgradeMinorVersion:
propriedade definida como true
em seu modelo ARM. Em seguida, o Azure carrega a extensão adequada quando inicia a VM. Se você não tiver essas configurações em seu modelo, altere-as e reimplante o modelo.
Para implantar o modelo ARM, usamos o Azure PowerShell.
Inicie o PowerShell.
Entre no Azure usando
Login-AzAccount
o .Obtenha a sua lista de subscrições utilizando
Get-AzSubscription
o .Defina a assinatura que você está usando para criar/atualizar a VM em:
Select-AzSubscription -SubscriptionName "<Name of the subscription>"
Para criar um novo grupo de recursos para a VM que está sendo implantada, execute o seguinte comando:
New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
Nota
Lembre-se de usar uma região do Azure habilitada para métricas personalizadas.
Execute os comandos a seguir para implantar a VM usando o modelo ARM.
Nota
Se desejar atualizar uma VM existente, adicione -Mode Incremental ao final do comando a seguir.
New-AzResourceGroupDeployment -Name "<NameThisDeployment>" -ResourceGroupName "<Name of the Resource Group>" -TemplateFile "<File path of your Resource Manager template>" -TemplateParameterFile "<File path of your parameters file>"
Depois que sua implantação for bem-sucedida, a VM deve estar no portal do Azure, emitindo métricas para o Azure Monitor.
Nota
Você pode encontrar erros ao redor do arquivo
vmSkuSize
. Se esse erro acontecer, volte para o arquivo azuredeploy.json e atualize ovmSkuSize
valor padrão do parâmetro. Neste caso, recomendamos que tente"Standard_DS1_v2"
).
Crie um gráfico das suas métricas
Inicie sessão no portal do Azure.
No menu à esquerda, selecione Monitor.
Na página Monitor, selecione Métricas.
Altere o período de agregação para Últimos 30 minutos.
No menu suspenso de recursos, selecione a VM que você criou. Se você não alterou o nome no modelo, ele deve ser SimpleWinVM2.
Na lista suspensa namespaces, selecione azure.vm.windows.guestmetrics.
Na lista suspensa métricas, selecione Memória%Bytes confirmados em uso.
Próximos passos
Saiba mais sobre métricas personalizadas.