Use a extensão de diagnóstico Linux 3.0 para monitorar métricas e logs
Atenção
Este artigo faz referência ao CentOS, uma distribuição Linux com status de Fim de Vida (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.
Este documento descreve a versão 3.0 e mais recente da extensão de diagnóstico do Linux (LAD).
Importante
Para obter informações sobre a versão 2.3 e anteriores, consulte Monitorar o desempenho e os dados de diagnóstico de uma VM Linux.
Introdução
A extensão de diagnóstico do Linux ajuda um usuário a monitorar a integridade de uma VM Linux executada no Microsoft Azure. Tem as seguintes capacidades:
- Coleta métricas de desempenho do sistema da VM e as armazena em uma tabela específica em uma conta de armazenamento designada.
- Recupera eventos de log do syslog e os armazena em uma tabela específica na conta de armazenamento designada.
- Permite que os usuários personalizem as métricas de dados coletadas e carregadas.
- Permite que os usuários personalizem os recursos do syslog e os níveis de gravidade dos eventos que são coletados e carregados.
- Permite que os usuários carreguem arquivos de log especificados em uma tabela de armazenamento designada.
- Dá suporte ao envio de métricas e eventos de log para pontos de extremidade arbitrários dos Hubs de Eventos do Azure e blobs formatados em JSON na conta de armazenamento designada.
Esta extensão funciona com ambos os modelos de implantação do Azure.
Instalar a extensão em uma VM
Você pode habilitar a extensão usando cmdlets do Azure PowerShell, scripts da CLI do Azure, modelos do Azure Resource Monitor (modelos ARM) ou o portal do Azure. Para obter mais informações, consulte Recursos de extensões.
Nota
Alguns componentes da extensão LAD VM também são fornecidos na extensão Log Analytics VM. Devido a essa arquitetura, conflitos podem surgir se ambas as extensões forem instanciadas no mesmo modelo ARM.
Para evitar conflitos de tempo de instalação, use a dependsOn
diretiva para garantir que as extensões sejam instaladas sequencialmente. As extensões podem ser instaladas em qualquer ordem.
Estas instruções de instalação e uma configuração de exemplo para download para configurar o LAD 3.0 para:
- Capture e armazene as mesmas métricas do LAD 2.3.
- Capture um conjunto útil de métricas do sistema de arquivos. Esta funcionalidade é nova no LAD 3.0.
- Capture a coleção syslog padrão habilitada pelo LAD 2.3.
- Habilite a experiência do portal do Azure para criar gráficos e alertas em métricas de VM.
A configuração para download é apenas um exemplo. Modifique-o para atender às suas necessidades.
Pré-requisitos
- Azure Linux Agent versão 2.2.0 ou posterior. A maioria das imagens da galeria Linux da VM do Azure inclui a versão 2.2.7 ou posterior. Execute
/usr/sbin/waagent -version
para confirmar a versão instalada na VM. Se a VM estiver executando uma versão mais antiga, atualize o agente convidado. - CLI do Azure. Se necessário, configure o ambiente da CLI do Azure em sua máquina.
- O comando wget. Se você ainda não o tem, instale-o usando o gerenciador de pacotes correspondente.
- Uma assinatura existente do Azure.
- Uma conta de armazenamento de uso geral existente para armazenar os dados. As contas de armazenamento de uso geral devem oferecer suporte ao armazenamento de tabelas. Uma conta de armazenamento de blob não funcionará.
- Python 2.
Requisito Python
A extensão de diagnóstico Linux requer Python 2. Se sua máquina virtual usa uma distribuição que não inclui Python 2 por padrão, você deve instalá-la. Os seguintes comandos de exemplo instalam o Python 2 em várias distribuições:
- Red Hat, CentOS, Oracle:
yum install -y python2
- Ubuntu, Debian:
apt-get install -y python2
- SUSE:
zypper install -y python2
O python2
arquivo executável deve ser aliased para python. Aqui está um método para definir esse alias:
Execute o seguinte comando para remover quaisquer aliases existentes.
sudo update-alternatives --remove-all python
Execute o seguinte comando para criar o alias.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
Instalação de amostra
A configuração de exemplo baixada nos exemplos a seguir coleta um conjunto de dados padrão e os envia para o armazenamento de tabelas. A URL para a configuração de exemplo e seu conteúdo podem ser alterados.
Na maioria dos casos, você deve baixar uma cópia do arquivo JSON de configurações do portal e personalizá-lo para suas necessidades. Em seguida, use modelos ou sua própria automação para usar uma versão personalizada do arquivo de configuração em vez de fazer o download do URL a cada vez.
Nota
Para os exemplos a seguir, preencha os valores corretos para as variáveis na primeira seção antes de executar o código.
Exemplo de CLI do Azure
# Set your Azure VM diagnostic variables.
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vm=<your_azure_linux_vm_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
# Login to Azure before you do anything else.
az login
# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>
# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json
# Build the VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show -g $my_resource_group -n $my_linux_vm --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vm_resource_id#g" portal_public_settings.json
# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"
# Finally, tell Azure to install and enable the extension.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vm-name $my_linux_vm --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json
Exemplo de CLI do Azure para instalar o LAD 3.0 na instância do conjunto de escala da máquina virtual
#Set your Azure Virtual Machine Scale Sets diagnostic variables.
$my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
$my_linux_vmss=<your_azure_linux_vmss_name>
$my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
# Login to Azure before you do anything else.
az login
# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>
# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json
# Build the virtual machine scale set resource ID. Replace the storage account name and resource ID in the public settings.
$my_vmss_resource_id=$(az vmss show -g $my_resource_group -n $my_linux_vmss --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vmss_resource_id#g" portal_public_settings.json
# Build the protected settings (storage account SAS token).
$my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
$my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"
# Finally, tell Azure to install and enable the extension.
az vmss extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json
Exemplo do PowerShell
$storageAccountName = "yourStorageAccountName"
$storageAccountResourceGroup = "yourStorageAccountResourceGroupName"
$vmName = "yourVMName"
$VMresourceGroup = "yourVMResourceGroupName"
# Get the VM object
$vm = Get-AzVM -Name $vmName -ResourceGroupName $VMresourceGroup
# Get the public settings template from GitHub and update the templated values for storage account and resource ID
$publicSettings = (Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json).Content
$publicSettings = $publicSettings.Replace('__DIAGNOSTIC_STORAGE_ACCOUNT__', $storageAccountName)
$publicSettings = $publicSettings.Replace('__VM_RESOURCE_ID__', $vm.Id)
# If you have customized public settings, you can inline those rather than using the preceding template: $publicSettings = '{"ladCfg": { ... },}'
# Generate a SAS token for the agent to use to authenticate with the storage account
$sasToken = New-AzStorageAccountSASToken -Service Blob,Table -ResourceType Service,Container,Object -Permission "racwdlup" -Context (Get-AzStorageAccount -ResourceGroupName $storageAccountResourceGroup -AccountName $storageAccountName).Context -ExpiryTime $([System.DateTime]::Now.AddYears(10))
# Build the protected settings (storage account SAS token)
$protectedSettings="{'storageAccountName': '$storageAccountName', 'storageAccountSasToken': '$sasToken'}"
# Finally, install the extension with the settings you built
Set-AzVMExtension -ResourceGroupName $VMresourceGroup -VMName $vmName -Location $vm.Location -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0
Atualizar as configurações da extensão
Depois de alterar suas configurações protegidas ou públicas, implante-as na VM executando o mesmo comando. Se as configurações forem alteradas, as atualizações serão enviadas para a extensão. O LAD recarrega a configuração e reinicia-se.
Migrar de versões anteriores da extensão
A última versão da extensão é 4.0.
Importante
Esta extensão introduz alterações significativas na configuração. Uma dessas alterações melhorou a segurança da extensão, de modo que a compatibilidade com versões anteriores do 2.x não pôde ser mantida. Além disso, o editor de extensão para esta extensão difere do editor para as versões 2.x.
Para migrar do 2.x para a nova versão, primeiro desinstale a extensão antiga (sob o nome do editor antigo). Em seguida, instale a versão 3.
Recomendações:
- Instale a extensão com a atualização automática da versão secundária ativada.
- Em VMs de modelo de implantação clássicas, especifique a versão
3.*
se estiver instalando a extensão por meio da CLI XPLAT do Azure ou do PowerShell. - Nas VMs do modelo de implantação do Azure Resource Manager, inclua
"autoUpgradeMinorVersion": true
no modelo de implantação de VM.
- Em VMs de modelo de implantação clássicas, especifique a versão
- Use uma conta de armazenamento nova ou diferente para LAD 3.0. LAD 2.3 e LAD 3.0 têm várias pequenas incompatibilidades que tornam o compartilhamento de uma conta problemático:
- LAD 3.0 armazena eventos syslog em uma tabela que tem um nome diferente.
- As
counterSpecifier
cadeias de caracteres parabuiltin
métricas diferem no LAD 3.0.
Configurações protegidas
Esse conjunto de informações de configuração contém informações confidenciais que devem ser protegidas da exibição pública. Ele contém, por exemplo, credenciais de armazenamento. Essas configurações são transmitidas e armazenadas pela extensão de forma criptografada.
{
"storageAccountName" : "the storage account to receive data",
"storageAccountEndPoint": "the hostname suffix for the cloud for this account",
"storageAccountSasToken": "SAS access token",
"mdsdHttpProxy": "HTTP proxy settings",
"sinksConfig": { ... }
}
Nome | Valor |
---|---|
storageAccountName | O nome da conta de armazenamento na qual os dados são gravados pela extensão. |
storageAccountEndPoint | (Opcional) O ponto de extremidade que identifica a nuvem na qual a conta de armazenamento existe. Se essa configuração estiver ausente, o padrão LAD será a nuvem pública do Azure, https://core.windows.net . Para usar uma conta de armazenamento no Azure Alemanha, Azure Government ou Microsoft Azure operado pela 21Vianet, defina esse valor conforme necessário. |
storageAccountSasToken | Um token SAS de conta para serviços de blob e tabela (ss='bt' ). Aplica-se a contentores e objetos (srt='co' ). Ele concede permissões para adicionar, criar, listar, atualizar e gravar (sp='acluw' ). Não inclua o ponto de interrogação principal (?). |
mdsdHttpProxy | (Opcional) Informações de proxy HTTP que a extensão precisa para se conectar à conta de armazenamento e ao ponto de extremidade especificados. |
sinksConfig | (Opcional) Detalhes de destinos alternativos para os quais métricas e eventos podem ser entregues. As seções a seguir abordam detalhes sobre cada coletor de dados suportado pela extensão. |
Para obter um token SAS dentro de um modelo ARM, use a listAccountSas
função. Para obter um modelo de exemplo, consulte Exemplo de função de lista.
Você pode construir o token SAS necessário por meio do portal do Azure:
- Selecione a conta de armazenamento de uso geral na qual você deseja que a extensão seja gravada.
- No menu à esquerda, em Configurações, selecione Assinatura de acesso compartilhado.
- Faça as seleções conforme descrito anteriormente.
- Selecione Gerar SAS.
Copie o SAS gerado para o storageAccountSasToken
campo. Remova o ponto de interrogação à esquerda (?).
sinksConfig
"sinksConfig": {
"sink": [
{
"name": "sinkname",
"type": "sinktype",
...
},
...
]
},
A sinksConfig
seção opcional define mais destinos para os quais a extensão envia as informações que coleta. A sink
matriz contém um objeto para cada coletor de dados adicional. O type
atributo determina os outros atributos no objeto.
Elemento | Valor |
---|---|
nome | Uma cadeia de caracteres que se refere a esse coletor em outro lugar na configuração da extensão. |
tipo | O tipo de pia que está sendo definido. Determina os outros valores (se houver) em instâncias desse tipo. |
LAD versão 3.0 suporta dois tipos de coletor: EventHub
e JsonBlob
.
Coletor do EventHub
"sink": [
{
"name": "sinkname",
"type": "EventHub",
"sasURL": "https SAS URL"
},
...
]
A "sasURL"
entrada contém a URL completa, incluindo o token SAS, para o hub de eventos no qual os dados devem ser publicados. A LAD exige que uma SAS nomeie uma política que permita a declaração de envio.
Por exemplo:
- Crie um namespace de Hubs de Eventos do Azure chamado
contosohub
. - Crie um hub de eventos no namespace chamado
syslogmsgs
. - Crie uma política de acesso compartilhado no hub de eventos que permita a declaração de envio. Nomeie a política
writer
.
Se o seu SAS estiver bom até a meia-noite UTC de 1º de janeiro de 2018, o valor sasURL pode ser como este exemplo:
https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer
Para obter mais informações sobre como gerar e recuperar informações sobre tokens SAS para Hubs de Eventos, consulte Gerar um token SAS.
Pia JsonBlob
"sink": [
{
"name": "sinkname",
"type": "JsonBlob"
},
...
]
Os dados direcionados para um JsonBlob
coletor são armazenados em blobs no Armazenamento do Azure. Cada instância do LAD cria um blob a cada hora para cada nome de coletor. Cada blob sempre contém uma matriz JSON sintaticamente válida de objetos. Novas entradas são adicionadas atomicamente à matriz.
Os blobs são armazenados em um contêiner que tem o mesmo nome do coletor. As regras de Armazenamento do Azure para nomes de contêiner de blob se aplicam aos nomes de JsonBlob
coletores. O nome deve ter entre 3 e 63 caracteres ASCII alfanuméricos minúsculos ou traços.
Configurações públicas
A estrutura de configurações públicas contém vários blocos de configurações que controlam as informações que a extensão coleta. Cada configuração é opcional. Se você especificar ladCfg
, também deverá especificar StorageAccount
.
{
"ladCfg": { ... },
"perfCfg": { ... },
"fileLogs": { ... },
"StorageAccount": "the storage account to receive data",
"mdsdHttpProxy" : ""
}
Elemento | Value |
---|---|
StorageAccount | O nome da conta de armazenamento na qual os dados são gravados pela extensão. Deve ser o nome especificado nas configurações protegidas. |
mdsdHttpProxy | (Opcional) O mesmo que nas configurações protegidas. O valor público é substituído pelo valor privado, se for definido. Coloque as configurações de proxy que contêm um segredo, como uma senha, nas configurações protegidas. |
As seções a seguir fornecem detalhes para os elementos restantes.
ladCfg
"ladCfg": {
"diagnosticMonitorConfiguration": {
"eventVolume": "Medium",
"metrics": { ... },
"performanceCounters": { ... },
"syslogEvents": { ... }
},
"sampleRateInSeconds": 15
}
A ladCfg
estrutura é opcional. Ele controla a coleta de métricas e logs que são entregues ao serviço Azure Monitor Metrics e a outros coletores de dados. Deve especificar:
- Uma
performanceCounters
ousyslogEvents
ambas. - A
metrics
estrutura.
Elemento | Value |
---|---|
eventVolume | (Opcional) Controla o número de partições criadas na tabela de armazenamento. Deve ser "Large" , "Medium" ou "Small" . Se um valor não for especificado, o padrão será "Medium" . |
sampleRateInSeconds | (Opcional) O intervalo padrão entre a coleção de métricas brutas (não agregadas). A menor taxa de amostragem suportada é de 15 segundos. Se o valor não for especificado, o padrão será 15 . |
metrics
"metrics": {
"resourceId": "/subscriptions/...",
"metricAggregation" : [
{ "scheduledTransferPeriod" : "PT1H" },
{ "scheduledTransferPeriod" : "PT5M" }
]
}
Elemento | Value |
---|---|
resourceId | A ID de recurso do Azure Resource Manager da VM ou do conjunto de escala ao qual a VM pertence. Essa configuração também deve ser especificada se algum JsonBlob coletor for usado na configuração. |
scheduledTransferPeriod | A frequência com que as métricas agregadas são calculadas e transferidas para o Azure Monitor Metrics. A frequência é expressa como um intervalo de tempo IS 8601. O menor período de transferência é de 60 segundos, ou seja, PT1M. Especifique pelo menos um scheduledTransferPeriod arquivo . |
As amostras das métricas especificadas na seção são coletadas a performanceCounters
cada 15 segundos ou na taxa de amostragem explicitamente definida para o contador. Se aparecerem várias scheduledTransferPeriod
frequências, como no exemplo, cada agregação é calculada de forma independente.
performanceCounters
"performanceCounters": {
"sinks": "",
"performanceCounterConfiguration": [
{
"type": "builtin",
"class": "Processor",
"counter": "PercentIdleTime",
"counterSpecifier": "/builtin/Processor/PercentIdleTime",
"condition": "IsAggregate=TRUE",
"sampleRate": "PT15S",
"unit": "Percent",
"annotation": [
{
"displayName" : "Aggregate CPU %idle time",
"locale" : "en-us"
}
]
}
]
}
A performanceCounters
seção opcional controla a coleta de métricas. As amostras brutas são agregadas para cada uma scheduledTransferPeriod
delas para produzir os seguintes valores:
- Média
- Mínimo
- Máximo
- Último valor recolhido
- Contagem das amostras em bruto utilizadas para calcular o agregado
Elemento | Value |
---|---|
Pias | (Opcional) Uma lista separada por vírgulas de nomes de coletores para os quais o LAD envia resultados métricos agregados. Todas as métricas agregadas são publicadas em cada coletor listado. Exemplo: "EHsink1, myjsonsink" . Para obter mais informações, veja sinksConfig . |
tipo | Identifica o provedor real da métrica. |
classe | Juntamente com "counter" , identifica a métrica específica dentro do namespace do provedor. |
counter | Juntamente com "class" , identifica a métrica específica dentro do namespace do provedor. |
contadorEspecificador | Identifica a métrica específica dentro do namespace Azure Monitor Metrics. |
condição | (Opcional) Seleciona uma instância específica do objeto ao qual a métrica se aplica. Ou seleciona a agregação em todas as instâncias desse objeto. |
sampleRate | O intervalo IS 8601 que define a taxa na qual as amostras brutas para essa métrica são coletadas. Se o valor não estiver definido, o intervalo de coleta será definido pelo valor de sampleRateInSeconds . A menor taxa de amostragem suportada é de 15 segundos (PT15S). |
unit | Define a unidade para a métrica. Deve ser uma destas strings: "Count" , "Bytes" , "Seconds" , "Percent" , "CountPerSecond" , "BytesPerSecond" , "Millisecond" . Os consumidores dos dados recolhidos esperam que os valores dos dados recolhidos correspondam a esta unidade. A LAD ignora este campo. |
displayName | O rótulo a ser anexado aos dados no Azure Monitor Metrics. Esse rótulo está no idioma especificado pela configuração de localidade associada. A LAD ignora este campo. |
O counterSpecifier
é um identificador arbitrário. Os consumidores de métricas, como o recurso de gráficos e alertas do portal do Azure, usam counterSpecifier
como a "chave" que identifica uma métrica ou uma instância de uma métrica.
Para builtin
métricas, recomendamos counterSpecifier
valores que comecem com /builtin/
. Se você estiver coletando uma instância específica de uma métrica, recomendamos anexar o identificador da instância ao counterSpecifier
valor.
Seguem-se alguns exemplos:
/builtin/Processor/PercentIdleTime
- Tempo ocioso médio em todas as vCPUs/builtin/Disk/FreeSpace(/mnt)
- Espaço livre para o/mnt
sistema de arquivos/builtin/Disk/FreeSpace
- Espaço livre médio em todos os sistemas de arquivos montados
O LAD e o portal do Azure não esperam que o counterSpecifier
valor corresponda a nenhum padrão. Seja consistente na forma como constrói counterSpecifier
valores.
Quando você especifica performanceCounters
, o LAD sempre grava dados em uma tabela no Armazenamento do Azure. Os mesmos dados podem ser gravados em blobs JSON ou Hubs de Eventos ou ambos. Mas não é possível desativar o armazenamento de dados em uma tabela.
Todas as instâncias de LAD que usam o mesmo nome de conta de armazenamento e ponto de extremidade adicionam suas métricas e logs à mesma tabela. Se muitas VMs gravarem na mesma partição de tabela, o Azure poderá limitar as gravações nessa partição.
A eventVolume
configuração faz com que as entradas sejam distribuídas em 1 (pequena), 10 (média) ou 100 (grande) partições. Normalmente, as partições médias são suficientes para evitar a limitação do tráfego.
O recurso Azure Monitor Metrics do portal do Azure usa os dados nesta tabela para produzir gráficos ou disparar alertas. O nome da tabela é a concatenação destas cadeias de caracteres:
WADMetrics
- O
"scheduledTransferPeriod"
para os valores agregados armazenados na tabela P10DV2S
- Uma data, sob a forma de "AAAAMMDD", que muda de 10 em 10 dias
Os exemplos incluem WADMetricsPT1HP10DV2S20170410
e WADMetricsPT1MP10DV2S20170609
.
syslogEventos
"syslogEvents": {
"sinks": "",
"syslogEventConfiguration": {
"facilityName1": "minSeverity",
"facilityName2": "minSeverity",
...
}
}
A syslogEvents
seção opcional controla a coleção de eventos de log do syslog. Se a seção for omitida, os eventos syslog não serão capturados.
A syslogEventConfiguration
coleção tem uma entrada para cada recurso syslog de interesse. Se minSeverity
for "NONE"
para uma instalação específica, ou se essa instalação não aparecer no elemento , nenhum evento dessa instalação será capturado.
Elemento | Value |
---|---|
Pias | Uma lista separada por vírgulas de nomes de coletores nos quais eventos de log individuais são publicados. Todos os eventos de log que correspondem às restrições são publicados em syslogEventConfiguration cada coletor listado. Exemplo: "EHforsyslog" |
Nome da instalação | Um nome de recurso syslog, como "LOG_USER" ou "LOG\LOCAL0" . Para obter mais informações, consulte a seção "Facilidade" da página do manual syslog. |
minSeveridade | Um nível de severidade syslog, como "LOG_ERR" ou "LOG_INFO" . Para obter mais informações, consulte a seção "Nível" da página do manual syslog. A extensão captura eventos enviados para a instalação no nível especificado ou acima dele. |
Quando você especifica syslogEvents
, o LAD sempre grava dados em uma tabela chamada LinuxSyslogVer2v0 no Armazenamento do Azure. Os mesmos dados podem ser gravados em blobs JSON ou Hubs de Eventos ou ambos. Mas não é possível desativar o armazenamento de dados em uma tabela.
perfCfg
A perfCfg
secção é opcional. Ele controla a execução de consultas arbitrárias de Infraestrutura de Gerenciamento Aberto (OMI).
"perfCfg": [
{
"namespace": "root/scx",
"query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
"table": "LinuxOldMemory",
"frequency": 300,
"sinks": ""
}
]
Elemento | Value |
---|---|
espaço de nomes | (Opcional) O namespace OMI no qual a consulta deve ser executada. Se não for especificado, o valor padrão será "root/scx" . Ele é implementado pelos provedores de plataforma cruzada do System Center. |
query | A consulta OMI a ser executada. |
tabela | (Opcional) A tabela de Armazenamento do Azure, na conta de armazenamento designada. Para obter mais informações, consulte Configurações protegidas. |
frequency | (Opcional) O número de segundos entre as execuções da consulta. O valor padrão é 300 (5 minutos). O valor mínimo é de 15 segundos. |
Pias | (Opcional) Uma lista separada por vírgulas dos nomes de mais sumidouros nos quais os resultados brutos da métrica da amostra devem ser publicados. Nenhuma agregação dessas amostras brutas é calculada pela extensão ou pelo Azure Monitor Metrics. |
Um ou "table"
"sinks"
ambos devem ser especificados.
fileLogs
A fileLogs
seção controla a captura de arquivos de log. O LAD captura novas linhas de texto à medida que são gravadas no arquivo. Ele os grava em linhas de tabela e/ou quaisquer coletores especificados (JsonBlob
ou EventHub
).
Nota
Os fileLogs
são capturados por um subcomponente do LAD chamado omsagent
. Para coletar fileLogs
o , verifique se o omsagent
usuário tem permissões de leitura nos arquivos especificados. O usuário também deve ter permissões de execução em todos os diretórios no caminho para esse arquivo. Depois que o LAD for instalado, você poderá verificar as permissões executando sudo su omsagent -c 'cat /path/to/file'
.
"fileLogs": [
{
"file": "/var/log/mydaemonlog",
"table": "MyDaemonEvents",
"sinks": ""
}
]
Elemento | Value |
---|---|
ficheiro | O nome completo do caminho do arquivo de log a ser observado e capturado. O nome do caminho deve nomear um único arquivo. Ele não pode nomear um diretório ou conter caracteres curinga. A omsagent conta de usuário deve ter acesso de leitura ao caminho do arquivo. |
tabela | (Opcional) A tabela de Armazenamento do Azure na qual novas linhas da "cauda" do arquivo são gravadas. A tabela deve estar na conta de armazenamento designada, conforme especificado na configuração protegida. |
Pias | (Opcional) Uma lista separada por vírgulas de nomes de mais coletores para os quais as linhas de log são enviadas. |
Deve especificar-se uma ou "table"
outra, ou "sinks"
ambas.
Métricas suportadas pelo provedor integrado
O builtin
provedor de métricas é uma fonte de métricas que são as mais interessantes para um amplo conjunto de usuários. Essas métricas se dividem em cinco classes amplas:
- Processador
- Memória
- Rede
- Sistema de ficheiros
- Disco
métricas internas para a classe Processor
A classe de métricas Processor fornece informações sobre o uso do processador na VM. Quando as porcentagens são agregadas, o resultado é a média em todas as CPUs.
Em uma VM de duas vCPU, se uma vCPU estiver 100% ocupada e a outra estiver 100% ociosa, o relatório PercentIdleTime
será 50. Se cada vCPU estiver 50% ocupada no mesmo período, o resultado relatado também será 50. Em uma VM de quatro vCPU, quando uma vCPU está 100% ocupada e as outras estão ociosas, o relatório PercentIdleTime
é 75.
Contador | Significado |
---|---|
PercentIdleTime | Porcentagem de tempo durante a janela de agregação em que os processadores executaram o loop ocioso do kernel |
PercentProcessorTime | Porcentagem de tempo executando um thread não ocioso |
PercentIOWaitTime | Percentagem de tempo a aguardar a conclusão das operações de E/S |
PercentInterruptTime | Porcentagem de tempo executando interrupções de hardware ou software e DPCs (chamadas de procedimento adiadas) |
PercentUserTime | De tempo não ocioso durante a janela de agregação, a porcentagem de tempo gasto no modo de usuário com prioridade normal |
PercentNiceTime | Do tempo não ocioso, a percentagem gasta na prioridade reduzida (agradável) |
PercentPrivilegedTime | De tempo não ocioso, a porcentagem gasta no modo privilegiado (kernel) |
Os quatro primeiros contadores devem somar 100%. Os três últimos contadores também somam 100%. Estes três contadores subdividem a soma de PercentProcessorTime
, PercentIOWaitTime
e PercentInterruptTime
.
Para agregar uma única métrica em todos os processadores, defina "condition": "IsAggregate=TRUE"
. Para obter uma métrica para um processador específico, como o segundo processador lógico de uma VM de quatro vCPU, defina "condition": "Name=\\"1\\""
. Os números do processador lógico estão no intervalo [0..n-1]
.
métricas internas para a classe Memory
A classe Memory de métricas fornece informações sobre o uso de memória, paginação e troca.
Contador | Significado |
---|---|
Memória disponível | Memória física disponível em MiB |
PercentAvailableMemory | Memória física disponível como uma percentagem da memória total |
Memória Usada | Memória física em uso (MiB) |
PercentUsedMemory | Memória física em uso como uma porcentagem da memória total |
PáginasPerSec | Paginação total (leitura/gravação) |
PáginasReadPerSec | Páginas lidas do armazenamento de backup, como arquivo de permuta, arquivo de programa e arquivo mapeado |
PáginasEscritaPerSec | Páginas gravadas no armazenamento de backup, como arquivo de permuta e arquivo mapeado |
AvailableSwap | Espaço de permuta não utilizado (MiB) |
PercentAvailableSwap | Espaço de swap não utilizado em percentagem do swap total |
UsedSwap | Espaço de permuta em uso (MiB) |
PercentUsedSwap | Espaço de swap em utilização em percentagem do swap total |
Essa classe de métricas tem apenas uma instância. O "condition"
atributo não tem configurações úteis e deve ser omitido.
métricas internas para a classe Network
A classe de métricas Network fornece informações sobre a atividade da rede em uma interface de rede individual desde a inicialização.
O LAD não expõe métricas de largura de banda. Você pode obter essas métricas a partir de métricas de host.
Contador | Significado |
---|---|
BytesTransmitidos | Total de bytes enviados desde a inicialização |
BytesRecebidos | Total de bytes recebidos desde o arranque |
BytesTotal | Total de bytes enviados ou recebidos desde a inicialização |
PacotesTransmitidos | Total de pacotes enviados desde o arranque |
PacotesRecebidos | Total de pacotes recebidos desde o arranque |
TotalRxErrors | Número de erros de recebimento desde a inicialização |
TotalTxErrors | Número de erros de transmissão desde o arranque |
TotalCollisions | Número de colisões relatadas pelas portas de rede desde a inicialização |
Embora a classe Network seja instância, o LAD não suporta a captura de métricas de Rede agregadas em todos os dispositivos de rede. Para obter as métricas de uma interface específica, como eth0, defina "condition": "InstanceID=\\"eth0\\""
.
métricas internas para a classe File system
A classe de métricas do sistema de arquivos fornece informações sobre o uso do sistema de arquivos. Os valores absolutos e percentuais são relatados como seriam exibidos para um usuário comum (não root).
Contador | Significado |
---|---|
Espaço Livre | Espaço disponível em disco em bytes |
Espaço Usado | Espaço em disco usado em bytes |
PercentFreeSpace | Percentagem de espaço livre |
PercentUsedSpace | Percentagem de espaço utilizado |
PercentFreeInodes | Percentagem de nós de índice não utilizados (inodes) |
PercentUsedInodes | Porcentagem de inodos alocados (em uso) somados em todos os sistemas de arquivos |
BytesReadPerSecond | Bytes lidos por segundo |
BytesWrittenPerSecond | Bytes gravados por segundo |
BytesPerSecond | Bytes lidos ou gravados por segundo |
ReadsPerSecond | Ler operações por segundo |
WritesPerSecond | Operações de gravação por segundo |
TransferênciasPerSecond | Operações de leitura ou gravação por segundo |
Você pode obter valores agregados em todos os sistemas de arquivos definindo "condition": "IsAggregate=True"
. Obtenha valores para um sistema de arquivos montado específico, como "/mnt"
, definindo "condition": 'Name="/mnt"'
.
Nota
Se você estiver trabalhando no portal do Azure em vez de JSON, o formulário de campo de condição será Name='/mnt'
.
métricas internas para a classe Disk
A classe de métricas Disk fornece informações sobre o uso do dispositivo de disco. Estas estatísticas aplicam-se a toda a unidade.
Quando um dispositivo tem vários sistemas de arquivos, os contadores desse dispositivo são, efetivamente, agregados em todos os sistemas de arquivos.
Contador | Significado |
---|---|
ReadsPerSecond | Ler operações por segundo |
WritesPerSecond | Operações de gravação por segundo |
TransferênciasPerSecond | Total de operações por segundo |
AverageReadTime | Média de segundos por operação de leitura |
AverageWriteTime | Média de segundos por operação de gravação |
MédiaTempo de Transferência | Média de segundos por operação |
AverageDiskQueueLength | Número médio de operações de disco em fila |
ReadBytesPerSecond | Número de bytes lidos por segundo |
WriteBytesPerSecond | Número de bytes gravados por segundo |
BytesPerSecond | Número de bytes lidos ou gravados por segundo |
Você pode obter valores agregados em todos os discos definindo "condition": "IsAggregate=True"
. Para obter informações sobre um dispositivo específico (por exemplo, /dev/sdf1
), defina "condition": "Name=\\"/dev/sdf1\\""
.
Instalar e configurar o LAD 3.0
CLI do Azure
Se as configurações protegidas estiverem no ProtectedSettings.json de arquivos e as informações de configuração pública estiverem no PublicSettings.json, execute o seguinte comando.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group <resource_group_name> --vm-name <vm_name> --protected-settings ProtectedSettings.json --settings PublicSettings.json
O comando pressupõe que você esteja usando o modo Azure Resource Manager da CLI do Azure. Para configurar o LAD para VMs de modelo de implantação clássicas, alterne para o modo "asm" (azure config mode asm
) e omita o nome do grupo de recursos no comando.
Para obter mais informações, consulte a documentação da CLI entre plataformas.
PowerShell
Se as configurações protegidas estiverem na $protectedSettings
variável e as $publicSettings
informações de configuração pública estiverem na variável, execute este comando:
Set-AzVMExtension -ResourceGroupName <resource_group_name> -VMName <vm_name> -Location <vm_location> -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0
Exemplo de configuração do LAD 3.0
Com base nas definições anteriores, esta seção fornece um exemplo de configuração de extensão LAD 3.0 e algumas explicações. Para aplicar este exemplo ao seu caso, use seu próprio nome de conta de armazenamento, token SAS de conta e tokens SAS de Hubs de Eventos.
Nota
Dependendo se você usa a CLI do Azure ou o PowerShell para instalar o LAD, o método para fornecer configurações públicas e protegidas é diferente:
- Se você estiver usando a CLI do Azure, salve as seguintes configurações para ProtectedSettings.json e PublicSettings.json usar o comando de exemplo anterior.
- Se você estiver usando o PowerShell, salve as seguintes configurações em
$protectedSettings
e$publicSettings
executando$protectedSettings = '{ ... }'
.
Configurações protegidas
As configurações protegidas configuram:
- Uma conta de armazenamento.
- Um token SAS de conta correspondente.
- Vários coletores (
JsonBlob
EventHub
ou com tokens SAS).
{
"storageAccountName": "yourdiagstgacct",
"storageAccountSasToken": "sv=xxxx-xx-xx&ss=bt&srt=co&sp=wlacu&st=yyyy-yy-yyT21%3A22%3A00Z&se=zzzz-zz-zzT21%3A22%3A00Z&sig=fake_signature",
"sinksConfig": {
"sink": [
{
"name": "SyslogJsonBlob",
"type": "JsonBlob"
},
{
"name": "FilelogJsonBlob",
"type": "JsonBlob"
},
{
"name": "LinuxCpuJsonBlob",
"type": "JsonBlob"
},
{
"name": "MyJsonMetricsBlob",
"type": "JsonBlob"
},
{
"name": "LinuxCpuEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
},
{
"name": "MyMetricEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
},
{
"name": "LoggingEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
}
]
}
}
Configurações públicas
As configurações públicas fazem com que o LAD:
- Carregue métricas de tempo de processador por porcentagem e métricas de espaço em disco usado para a
WADMetrics*
tabela. - Carregue mensagens do recurso
"user"
syslog e severidade"info"
para aLinuxSyslog*
tabela. - Carregue os resultados brutos da consulta OMI (
PercentProcessorTime
ePercentIdleTime
) para a tabela nomeadaLinuxCPU
. - Carregue linhas anexadas no arquivo
/var/log/myladtestlog
para aMyLadTestLog
tabela.
Em cada caso, os dados também são carregados para:
- Armazenamento de Blobs do Azure. O nome do contêiner é o
JsonBlob
definido no coletor. - O ponto de extremidade dos Hubs de Eventos, conforme especificado no
EventHub
coletor.
{
"StorageAccount": "yourdiagstgacct",
"ladCfg": {
"sampleRateInSeconds": 15,
"diagnosticMonitorConfiguration": {
"performanceCounters": {
"sinks": "MyMetricEventHub,MyJsonMetricsBlob",
"performanceCounterConfiguration": [
{
"unit": "Percent",
"type": "builtin",
"counter": "PercentProcessorTime",
"counterSpecifier": "/builtin/Processor/PercentProcessorTime",
"annotation": [
{
"locale": "en-us",
"displayName": "Aggregate CPU %utilization"
}
],
"condition": "IsAggregate=TRUE",
"class": "Processor"
},
{
"unit": "Bytes",
"type": "builtin",
"counter": "UsedSpace",
"counterSpecifier": "/builtin/FileSystem/UsedSpace",
"annotation": [
{
"locale": "en-us",
"displayName": "Used disk space on /"
}
],
"condition": "Name=\"/\"",
"class": "Filesystem"
}
]
},
"metrics": {
"metricAggregation": [
{
"scheduledTransferPeriod": "PT1H"
},
{
"scheduledTransferPeriod": "PT1M"
}
],
"resourceId": "/subscriptions/your_azure_subscription_id/resourceGroups/your_resource_group_name/providers/Microsoft.Compute/virtualMachines/your_vm_name"
},
"eventVolume": "Large",
"syslogEvents": {
"sinks": "SyslogJsonBlob,LoggingEventHub",
"syslogEventConfiguration": {
"LOG_USER": "LOG_INFO"
}
}
}
},
"perfCfg": [
{
"query": "SELECT PercentProcessorTime, PercentIdleTime FROM SCX_ProcessorStatisticalInformation WHERE Name='_TOTAL'",
"table": "LinuxCpu",
"frequency": 60,
"sinks": "LinuxCpuJsonBlob,LinuxCpuEventHub"
}
],
"fileLogs": [
{
"file": "/var/log/myladtestlog",
"table": "MyLadTestLog",
"sinks": "FilelogJsonBlob,LoggingEventHub"
}
]
}
O resourceId
na configuração deve corresponder ao da VM ou do conjunto de escala da máquina virtual.
- O gráfico e os alertas de métricas da plataforma Azure sabem o
resourceId
da VM em que você está trabalhando. Ele espera encontrar os dados para sua VM usando aresourceId
chave de pesquisa. - Se você usar o Azure Autoscale, a
resourceId
configuração de escala automática deverá corresponder à que oresourceId
LAD usa. - O
resourceId
é incorporado aos nomes dos blobs JSON escritos por LAD.
Ver os dados
Use o portal do Azure para exibir dados de desempenho ou definir alertas:
Os performanceCounters
dados são sempre armazenados em uma tabela de Armazenamento do Azure. As APIs de Armazenamento do Azure estão disponíveis para muitos idiomas e plataformas.
Os dados enviados para JsonBlob
coletores são armazenados em blobs na conta de armazenamento nomeada nas configurações protegidas. Você pode consumir os dados de blob usando qualquer API de Armazenamento de Blob do Azure.
Você também pode usar estas ferramentas de interface do usuário para acessar os dados no Armazenamento do Azure:
- Explorador de Servidores do Visual Studio
- Explorador do Storage do Azure
A captura de tela a seguir de uma sessão do Gerenciador de Armazenamento do Azure mostra as tabelas e contêineres gerados do Armazenamento do Azure a partir de uma extensão LAD 3.0 configurada corretamente em uma VM de teste. A imagem não corresponde exatamente à configuração de exemplo do LAD 3.0.
Para obter mais informações sobre como consumir mensagens publicadas em um ponto de extremidade de Hubs de Eventos, consulte a documentação relevante dos Hubs de Eventos.
Próximos passos
- No Azure Monitor, crie alertas para as métricas coletadas.
- Crie gráficos de monitoramento para suas métricas.
- Crie um conjunto de dimensionamento de máquina virtual usando suas métricas para controlar o dimensionamento automático.