Partilhar via


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:

  1. Execute o seguinte comando para remover quaisquer aliases existentes.

    sudo update-alternatives --remove-all python
    
  2. 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.
  • 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 para builtin 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:

  1. Selecione a conta de armazenamento de uso geral na qual você deseja que a extensão seja gravada.
  2. No menu à esquerda, em Configurações, selecione Assinatura de acesso compartilhado.
  3. Faça as seleções conforme descrito anteriormente.
  4. Selecione Gerar SAS.

A captura de tela mostra a página de assinatura de acesso compartilhado com o botão Gerar S A S.

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 ou syslogEvents 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 scheduledTransferPeriodarquivo .

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 fileLogso , 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, PercentIOWaitTimee 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 a LinuxSyslog* tabela.
  • Carregue os resultados brutos da consulta OMI (PercentProcessorTime e PercentIdleTime) para a tabela nomeada LinuxCPU .
  • Carregue linhas anexadas no arquivo /var/log/myladtestlog para a MyLadTestLog 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 a resourceId chave de pesquisa.
  • Se você usar o Azure Autoscale, a resourceId configuração de escala automática deverá corresponder à que o resourceId 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:

A captura de tela mostra o portal do Azure. A métrica Espaço em disco usado na métrica está selecionada. O gráfico resultante é mostrado.

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:

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.

A captura de tela mostra o Gerenciador de Armazenamento do Azure.

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.