Usar a Extensão de Diagnóstico do Linux 3.0 para monitorar métricas e logs

Cuidado

Este artigo faz referência ao CentOS, uma distribuição Linux que está em status de fim do serviço (EOL). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

Este documento descreve a versão 3.0 e mais recentes da LAD (Extensão de Diagnóstico do Linux).

Importante

Para obter informações sobre a versão 2.3 e anteriores, confira Monitorar dados de desempenho e diagnóstico de uma VM Linux.

Introdução

A Extensão de Diagnóstico do Linux ajuda o usuário a monitorar a integridade de uma VM do Linux em execução no Microsoft Azure. Ela oferece os seguintes recursos:

  • Coleta métricas de desempenho do sistema da VM e as armazena em uma tabela específica em uma conta de armazenamento designada.
  • Recupera os 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 que são coletadas e carregadas.
  • Permite que os usuários personalizem as instalações de syslog e os níveis de severidade dos eventos que são coletados e carregados.
  • Permite que os usuários carreguem arquivos de log especificados em uma tabela de armazenamento designada.
  • Oferece suporte ao envio de métricas e eventos de log para pontos de extremidade arbitrários do Hubs de Eventos do Azure e blobs formatados pelo JSON na conta de armazenamento designada.

Essa extensão funciona com os dois modelos de implantação do Azure.

Instalar a extensão em uma VM

Você pode habilitar essa extensão usando cmdlets do Azure PowerShell, scripts da CLI do Azure, modelos do ARM (modelos do Azure Resource Manager) ou o portal do Azure. Para saber mais, confira Recursos de extensões.

Observação

Determinados componentes da extensão de VM LAD também são fornecidos na Extensão de VM do Log Analytics. Devido a essa arquitetura, poderão surgir conflitos se as duas extensões forem instanciadas no mesmo modelo do ARM.

Para evitar esses 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:

  • Capturar e armazenar as mesmas métricas fornecidas pelo LAD 2.3.
  • Capturar um conjunto útil de métricas do sistema de arquivos. Essa funcionalidade é nova no LAD 3.0.
  • Capturar a coleção de syslog padrão habilitada pelo LAD 2.3.
  • Habilitar a experiência do portal do Azure para gráficos e criação de alertas em métricas da VM.

A configuração para download é apenas um exemplo. Modifique-a para atender às suas necessidades.

Pré-requisitos

  • Agente Linux do Azure versão 2.2.0 ou posterior. A maioria das imagens de galeria da VM Linux 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.
  • O CLI do Azure. Se necessário, configure o ambiente da CLI do Azure em seu computador.
  • O comando wget. Se você ainda não o possui, instale-o usando o gerenciador de pacotes correspondente.
  • Uma assinatura do Azure existente.
  • Uma conta de armazenamento de uso geral existente para armazenar os dados. As contas de armazenamento de uso geral devem ser compatíveis com o armazenamento de tabelas. Uma conta de armazenamento de blobs não funcionará.
  • Python 2.

Requisito do Python

A extensão de diagnóstico Linux requer o Python 2. Se a máquina virtual usa uma distribuição que não inclui o Python 2 por padrão, instale-o. Os seguintes comandos de exemplo instalam o Python 2 em diversas distribuições:

  • Red Hat, CentOS, Oracle: yum install -y python2
  • Ubuntu, Debian: apt-get install -y python2
  • SUSE: zypper install -y python2

O arquivo executável python2 deve ter um alias para python. Veja um método para configurar esse alias:

  1. Execute o comando a seguir para remover todos os aliases existentes.

    sudo update-alternatives --remove-all python
    
  2. Execute o comando a seguir para criar o alias.

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
    

Instalação de exemplo

A configuração de exemplo baixada nestes exemplos coleta um conjunto de dados padrão e os envia para o armazenamento de tabelas. A URL para a configuração de exemplo e o respectivo conteúdo estão sujeitos a alterações.

Na maioria dos casos, você precisa baixar uma cópia do arquivo JSON de configurações do portal e personalizá-la de acordo com as suas necessidades. Em seguida, use modelos ou sua automação para usar uma versão personalizada do arquivo de configuração em vez de baixar da URL toda vez.

Observação

Para os exemplos a seguir, preencha os valores corretos para as variáveis na primeira seção antes da execução do 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 da CLI do Azure para instalar o LAD 3.0 na instância do conjunto de dimensionamento de máquinas virtuais

#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 de extensão

Depois que tiver alterado as configurações públicas ou protegidas, 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 é reiniciado.

Migrar de versões anteriores da extensão

A versão mais recente da extensão é a 4.0.

Importante

Essa extensão introduz alterações interruptivas na configuração. Uma dessas alterações melhorou a segurança da extensão, portanto, não foi possível manter a compatibilidade com a versão 2.x. Além disso, o editor de extensões dessa extensão é diferente do editor das versões 2.x.

Para migrar de 2.x para a nova versão, primeiro desinstale a extensão antiga (com o nome do editor antigo). Em seguida, instale a versão 3.

Recomendações:

  • Instale a extensão com a atualização de versão secundária automática habilitada.
    • Em VMs do modelo de implantação clássica, especifique a versão 3.* se você estiver instalando a extensão por meio da CLI do Azure XPLAT ou do PowerShell.
    • Nas VMs do modelo de implantação do Azure Resource Manager, inclua "autoUpgradeMinorVersion": true no modelo de implantação da VM.
  • Use uma conta de armazenamento nova/diferente para o LAD 3.0. Há várias pequenas incompatibilidades entre o LAD 2.3 e o LAD 3.0 que dificultam o compartilhamento de uma conta:
    • O LAD 3.0 armazena os eventos de syslog em uma tabela com um nome diferente.
    • As cadeias de caracteres counterSpecifier para métricas builtin são diferentes do LAD 3.0.

Configurações protegidas

Esse conjunto de informações de configuração contém informações confidenciais que devem ser protegidas da visualização pública. Ele contém, por exemplo, credenciais de armazenamento. Essas configurações são transmitidas para 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 LAD utiliza como padrão a nuvem pública do Azure, https://core.windows.net. Para usar uma conta de armazenamento no Azure Alemanha, Azure Governamental ou Azure operado pela 21Vianet, defina este valor conforme for necessário.
storageAccountSasToken Um Token SAS de conta para serviços de blob e tabela (ss='bt'). Esse token se aplica a contêineres e objetos (srt='co'). Ele concede permissões de adição, criação, lista, atualização e gravação (sp='acluw'). Não inclua o ponto de interrogação (?) no início.
mdsdHttpProxy (Opcional) As informações de proxy HTTP de que a extensão precisa para se conectar ao ponto de extremidade e à conta de armazenamento especificados.
sinksConfig (Opcional) Detalhes de destinos alternativos para os quais as métricas e os eventos podem ser entregues. As seções a seguir abordam detalhes sobre cada coletor de dados compatível com a extensão.

Para obter um token SAS dentro de um modelo do ARM, use a função listAccountSas. Para obter um modelo de exemplo, confira Exemplo da função de lista.

Você pode construir o token SAS necessário por meio do portal do Azure:

  1. Selecione a conta de armazenamento para uso geral na qual deseja que a extensão grave.
  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.

Captura de tela que mostra a página da assinatura de acesso compartilhado com o botão Gerar SAS.

Copie a SAS gerada no storageAccountSasToken campo. Remova o ponto de interrogação (?) à esquerda.

sinksConfig

"sinksConfig": {
    "sink": [
        {
            "name": "sinkname",
            "type": "sinktype",
            ...
        },
        ...
    ]
},

A seção opcional sinksConfig define mais destinos para os quais a extensão envia informações coletadas. A matriz sink contém um objeto para cada coletor de dados adicional. O atributo type determina os outros atributos no objeto.

Elemento Valor
name Uma cadeia de caracteres que faz referência a esse coletor em outro lugar na configuração da extensão.
type O tipo de coletor que está sendo definido. Determina os outros valores (se houver) em instâncias desse tipo.

O LAD versão 3.0 é compatível com dois tipos de coletor: EventHub e JsonBlob.

Coletor EventHub

"sink": [
    {
        "name": "sinkname",
        "type": "EventHub",
        "sasURL": "https SAS URL"
    },
    ...
]

A entrada "sasURL" contém a URL completa, incluindo o token SAS para o hub de eventos para o qual os dados devem ser publicados. O LAD exige uma SAS para nomear uma política que permita a declaração de envio.

Por exemplo:

  • Criar um namespace de Hubs de Eventos do Azure chamado contosohub.
  • Crie um hub de eventos no namespace chamado syslogmsgs.
  • Criar uma política de acesso compartilhado no hub de eventos que habilite a declaração de envio. Nomeie a política como writer.

Se a sua SAS estiver boa até a meia-noite (UTC) de 1º de janeiro de 2018, o valor de sasURL poderá ser semelhante a este exemplo:

https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer

Para saber mais sobre como gerar e recuperar informações sobre tokens SAS para os Hubs de Eventos, confira Gerar um token SAS.

Coletor JsonBlob

"sink": [
    {
        "name": "sinkname",
        "type": "JsonBlob"
    },
    ...
]

Dados direcionados a um coletor JsonBlob são armazenados em blobs no Armazenamento do Azure. Cada instância de LAD cria um blob a cada hora para cada nome de coletor. Cada blob sempre contém uma matriz JSON de objetos sintaticamente válida. Novas entradas são adicionadas atomicamente à matriz.

Os blobs são armazenados em um contêiner com o mesmo nome que o coletor. As regras do Armazenamento do Azure para nomes de contêiner de blob se aplicam aos nomes dos coletores JsonBlob. O nome deve ter entre 3 e 63 caracteres ASCII alfanuméricos em letras minúsculas 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 coletadas pela extensão. 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 Valor
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 particular, se tiver sido definido. Coloque as configurações de proxy que contêm um segredo, como uma senha, nas configurações protegidas.

Veja detalhes sobre os elementos restantes nas seções a seguir.

ladCfg

"ladCfg": {
    "diagnosticMonitorConfiguration": {
        "eventVolume": "Medium",
        "metrics": { ... },
        "performanceCounters": { ... },
        "syslogEvents": { ... }
    },
    "sampleRateInSeconds": 15
}

A estrutura ladCfg é opcional e controla a coleta de métricas e logs para entrega ao serviço de Métricas do Azure Monitor e outros coletores de dados. É preciso especificar:

  • performanceCounters, syslogEvents ou ambos.
  • A estrutura metrics.
Elemento Valor
eventVolume (Opcional) Controla o número de partições criadas dentro da tabela de armazenamento. Precisa ser "Large", "Medium" ou "Small". Se o valor não for especificado, o padrão será "Medium".
sampleRateInSeconds (Opcional) O intervalo padrão entre a coleta de métricas brutas (não agregadas). A menor taxa de amostra com suporte é de 15 segundos. Se o valor não for especificado, o padrão será 15.

Métricas

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
Elemento Valor
resourceId A ID do recurso do Azure Resource Manager da VM ou do conjunto de dimensionamento à qual pertence a VM. Essa configuração também deverá ser especificada se algum coletor JsonBlob for usado na configuração.
scheduledTransferPeriod A frequência com a qual as métricas agregadas são computadas e transferidas para as Métricas do Azure Monitor. A frequência é expressa como um intervalo de tempo IS 8601. O menor período de transferência é 60 segundos, ou seja, PT1M. Especifique pelo menos um scheduledTransferPeriod.

Os exemplos de métricas especificados na seção performanceCounters são coletados a cada 15 segundos ou na taxa de amostra explicitamente definidas para o contador. Se várias frequências scheduledTransferPeriod aparecerem (como no exemplo), cada agregação será calculada independentemente.

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 seção opcional performanceCounters controla a coleta de métricas. Amostras brutas são agregadas para cada scheduledTransferPeriod para produzir esses valores:

  • Média
  • Mínimo
  • Máximo
  • Valor coletado por último
  • Contagem de amostras brutas usadas para computar a agregação
Elemento Valor
coletores (Opcional) Uma lista separada por vírgulas de nomes de coletores para os quais o LAD envia resultados de métricas agregadas. Todas as métricas agregadas são publicadas em cada coletor listado. Exemplo: "EHsink1, myjsonsink". Para obter mais informações, consulte sinksConfig.
type Identifica o provedor real da métrica.
class Junto com "counter", identifica a métrica específica dentro do namespace do provedor.
contador Junto com "class", identifica a métrica específica dentro do namespace do provedor.
counterSpecifier Identifica a métrica específica dentro do namespace de Métricas do Azure Monitor.
condition (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 esta métrica são coletados. Se o valor não for definido, o intervalo de coleta será definido pelo valor de sampleRateInSeconds. A menor taxa de amostra com suporte é de 15 segundos (PT15S).
unit Define a unidade para a métrica. Deve ser uma destas cadeias de caracteres: "Count", "Bytes", "Seconds", "Percent", "CountPerSecond", "BytesPerSecond", "Millisecond". Os consumidores dos dados coletados esperam que os valores de dados coletados correspondam a essa unidade. O LAD ignora esse campo.
displayName O rótulo a ser anexado aos dados nas Métricas do Azure Monitor. Esse rótulo está no idioma especificado pela configuração de localidade associada. O LAD ignora esse campo.

O counterSpecifier é um identificador arbitrário. Os consumidores de métricas, como o gráfico do Portal do Azure e o recurso de alerta, usam counterSpecifier como a "chave" que identifica uma métrica ou instância de uma métrica.

Para métricas builtin, recomendamos valores de counterSpecifier iniciados por /builtin/. Se você estiver coletando a instância específica de uma métrica, anexe o identificador da instância ao valor de counterSpecifier.

Estes são alguns exemplos:

  • /builtin/Processor/PercentIdleTime – tempo ocioso médio de todas as vCPUs
  • /builtin/Disk/FreeSpace(/mnt) – espaço livre para o sistema de arquivos /mnt
  • /builtin/Disk/FreeSpace – espaço livre com a média de todos os sistemas de arquivos montados

O LAD e o portal do Azure não esperam que o valor de counterSpecifier corresponda a nenhum padrão. Seja consistente na maneira como você constrói valores de counterSpecifier.

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 nos Hubs de Eventos ou em ambos. Mas você não pode desabilitar o armazenamento de dados em uma tabela.

Todas as instâncias do LAD que usam o mesmo nome de conta de armazenamento e ponto de extremidade adicionam suas métricas e seus logs à mesma tabela. Se muitas VMs gravarem na mesma partição de tabela, o Azure poderá restringir as gravações nessa partição.

A configuração eventVolume faz as entradas serem distribuídas entre 1 (pequeno), 10 (médio) ou 100 (grande) partições. Normalmente, partições médias são suficientes para evitar a limitação do tráfego.

O recurso de Métricas do Azure Monitor do portal do Azure usa os dados nesta tabela para gerar grafos ou disparar alertas. O nome da tabela é a concatenação dessas cadeias de caracteres:

  • WADMetrics
  • O "scheduledTransferPeriod" para os valores agregados armazenados na tabela
  • P10DV2S
  • Uma data, na forma "AAAAMMDD", que é alterada a cada 10 dias

Os exemplos incluem WADMetricsPT1HP10DV2S20170410 e WADMetricsPT1MP10DV2S20170609.

syslogEvents

"syslogEvents": {
    "sinks": "",
    "syslogEventConfiguration": {
        "facilityName1": "minSeverity",
        "facilityName2": "minSeverity",
        ...
    }
}

A seção opcional syslogEvents controla a coleta de eventos de log do syslog. Se a seção for omitida, eventos de syslog não serão capturados.

A coleção syslogEventConfiguration tem uma entrada para cada instalação de syslog de interesse. Se minSeverity for "NONE" para uma instalação específica, ou se a instalação não aparecer no elemento, nenhum evento dessa instalação será capturado.

Elemento Valor
coletores Uma lista separada por vírgulas de nomes de coletores nos quais os eventos de log individuais são publicados. Todos os eventos de log correspondentes às restrições em syslogEventConfiguration são publicados em cada coletor listado. Exemplo: "EHforsyslog"
facilityName Um nome de instalação de syslog, como "LOG_USER" ou "LOG\LOCAL0". Para saber mais, confira a seção "Instalações" da página de manual do syslog.
minSeverity Um nível de severidade de syslog, como "LOG_ERR" ou "LOG_INFO". Para saber mais, confira a seção "Nível" da página de manual do syslog. A extensão de captura eventos enviados para o recurso em ou acima do nível especificado.

Quando você especifica syslogEvents, o LAD sempre grava dados em uma tabela chamada LinuxSyslogVer2v0 no Armazenamento do Microsoft Azure. Os mesmos dados podem ser gravados em blobs JSON ou nos Hubs de Eventos ou em ambos. Mas você não pode desabilitar o armazenamento de dados em uma tabela.

perfCfg

A seção perfCfg é opcional. Ele controla a execução de consultas OMI (Infraestrutura de Gerenciamento Aberta) arbitrárias.

"perfCfg": [
    {
        "namespace": "root/scx",
        "query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
        "table": "LinuxOldMemory",
        "frequency": 300,
        "sinks": ""
    }
]
Elemento Valor
namespace (Opcional) O namespace OMI dentro do qual a consulta deve ser executada. Se não for especificado, o valor padrão será "root/scx". É implementado pelos provedores de plataforma cruzada do System Center.
Consulta A consulta OMI a ser executada.
tabela (Opcional) A tabela do Armazenamento do Azure, na conta de armazenamento designada. Para saber mais, confira Configurações protegidas.
frequência (Opcional) O número de segundos entre as execuções de consulta. O valor padrão é 300 (5 minutos). O valor mínimo é 15 segundos.
coletores (Opcional) Uma lista separada por vírgulas de nomes de coletores adicionais para os quais os resultados brutos de métricas de amostras devem ser publicados. Nenhuma agregação desses exemplos brutos é calculada pela extensão ou pelas Métricas do Azure Monitor.

"table" ou "sinks", ou ambos, devem ser especificados.

fileLogs

A seção fileLogs controla a captura de arquivos de log. O LAD captura novas linhas de texto conforme elas são gravadas no arquivo. Ele as grava em linhas de tabela e/ou em qualquer coletor especificado, como JsonBlob ou EventHub.

Observação

Os fileLogs são capturados por um subcomponente do LAD chamado omsagent. Para coletar fileLogs, verifique se o usuário omsagent tem permissões de leitura nos arquivos que você especificar. Ele também deve ter permissões de execução em todos os diretórios no caminho para esse arquivo. Após a instalação do LAD, você pode verificar as permissões executando sudo su omsagent -c 'cat /path/to/file'.

"fileLogs": [
    {
        "file": "/var/log/mydaemonlog",
        "table": "MyDaemonEvents",
        "sinks": ""
    }
]
Elemento Valor
file O nome do caminho completo do arquivo de log a ser inspecionado e capturado. O nome do caminho deve nomear um único arquivo. Ele não pode nomear um diretório nem conter caracteres curinga. A conta de usuário omsagent precisa ter acesso de leitura ao caminho do arquivo.
tabela (Opcional) A tabela do Armazenamento do Azure na qual novas linhas da "cauda" do arquivo são gravadas. A tabela precisa estar na conta de armazenamento designada, conforme especificado na configuração protegida.
coletores (Opcional) Uma lista separada por vírgulas de nomes de coletores adicionais para os quais as linhas de log são enviadas.

"table", "sinks" ou ambos, e devem ser especificados.

Métricas com suporte do provedor interno

O provedor de métricas builtin é uma fonte de métricas mais interessantes para um amplo conjunto de usuários. Essas métricas enquadram-se em cinco classes amplas:

  • Processador
  • Memória
  • Rede
  • Sistema de arquivos
  • Disco

métricas internas para a classe Processor

A classe de métricas Processor fornece informações sobre o uso do processador na VM. Ao agregar porcentagens, o resultado é a média em todas as CPUs.

Em uma VM de duas vCPUs, se uma vCPU estiver 100% ocupada e a outra estiver 100% ociosa, o PercentIdleTime relatado será 50. Se cada vCPU estiver 50% ocupada no mesmo período, o resultado relatado também será de 50. Em uma VM de quatro vCPUs, quando uma vCPU estiver 100% ocupada e as outras estiverem ociosas, o PercentIdleTime relatado será 75.

Contador Significado
PercentIdleTime Percentual de tempo durante a janela de agregação que os processadores executaram o loop ocioso do kernel
PercentProcessorTime Percentual de tempo executando um thread não ocioso
PercentIOWaitTime Percentual de tempo esperando a conclusão das operações de E/S
PercentInterruptTime Percentual de tempo executando interrupções de hardware/software e DPCs (chamadas de procedimento deferidas)
PercentUserTime Do tempo não ocioso durante a janela de agregação, o percentual de tempo no modo de usuário em prioridade normal
PercentNiceTime De tempo não ocioso, a porcentagem gasta em prioridade diminuída (boa)
PercentPrivilegedTime De tempo não ocioso, a porcentagem gasta em modo privilegiado (kernel)

Os primeiros quatro contadores devem somar 100%. Os últimos três contadores também somam 100 %. Esses três contadores subdividem a soma de PercentProcessorTime, PercentIOWaitTime e PercentInterruptTime.

Para agregar uma única métrica a 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 vCPUs, defina "condition": "Name=\\"1\\"". Os números de processadores lógicos estão no intervalo [0..n-1].

métricas internas para a classe Memory

A classe de métricas Memory fornece informações sobre o uso de memória, paginação e troca.

Contador Significado
AvailableMemory Memória física disponível em MiB
PercentAvailableMemory Memória física disponível como um percentual da memória total
UsedMemory Memória física em uso (MiB)
PercentUsedMemory Memória física em uso como um percentual da memória total
PagesPerSec Paginação total (leitura/gravação)
PagesReadPerSec Páginas lidas no repositório de backup, como arquivo de permuta, arquivo de programa e arquivo mapeado
PagesWrittenPerSec Páginas gravadas no repositório de backup, como arquivo de permuta e arquivo mapeado
AvailableSwap Espaço de permuta não utilizado (MiB)
PercentAvailableSwap Espaço de troca não usado como um percentual da troca total
UsedSwap Espaço de troca em uso (MiB)
PercentUsedSwap Espaço de troca em uso como um percentual da troca total

Essa classe de métricas tem apenas uma instância. O atributo "condition" 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 de rede em um adaptador 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 do host.

Contador Significado
BytesTransmitted Total de bytes enviados desde a inicialização
BytesReceived Total de bytes recebidos desde a inicialização
BytesTotal Total de bytes enviados ou recebidos desde a inicialização
PacketsTransmitted Total de pacotes enviados desde a inicialização
PacketsReceived Total de pacotes recebidos desde a inicialização
TotalRxErrors Número de erros de recebimento desde a inicialização
TotalTxErrors Número de erros de transmissão desde a inicialização
TotalCollisions Número de colisões relatadas pelas portas de rede desde a inicialização

Embora a classe Network seja instanciada, o LAD não é compatível com a captura de métricas Network agregadas em todos os dispositivos de rede. Para obter a métrica para uma interface específica, como eth0, defina "condition": "InstanceID=\\"eth0\\"".

Métricas internas para a classe de sistema de arquivos

A classe de métricas de sistema de arquivos fornece informações sobre o uso do sistema de arquivos. Valores absolutos e percentuais são relatados como seriam exibidos para um usuário comum (não raiz).

Contador Significado
FreeSpace Espaço em disco disponível em bytes
UsedSpace Espaço em disco usado em bytes
PercentFreeSpace Porcentagem de espaço livre
PercentUsedSpace Porcentagem de espaço usado
PercentFreeInodes Percentual de nós de índice (inodes) não usados
PercentUsedInodes Percentual de inodes alocados (em uso) somados em todos os sistemas de arquivos
BytesReadPerSecond Bytes lidos por segundo
BytesWrittenPerSecond Bytes gravados por segundo
BytesPerSecond Bytes lido ou gravados por segundo
ReadsPerSecond Operações de leitura por segundo
WritesPerSecond Operações de gravação por segundo
TransfersPerSecond Operações de leitura ou gravação por segundo

Os valores agregados em todos os sistemas de arquivo podem ser obtidos pela configuração "condition": "IsAggregate=True". Os valores para um sistema de arquivos montado específico, como "/mnt", podem ser obtidos pela configuração "condition": 'Name="/mnt"'.

Observação

Se você estiver trabalhando no portal do Azure em vez de no 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. Essas estatísticas aplicam-se a toda a unidade.

Quando um dispositivo tem vários sistemas de arquivos, os contadores do dispositivo serão, na verdade, agregados em todos eles.

Contador Significado
ReadsPerSecond Operações de leitura por segundo
WritesPerSecond Operações de gravação por segundo
TransfersPerSecond Operações totais por segundo
AverageReadTime Média de segundos por operação de leitura
AverageWriteTime Média de segundos por operação de gravação
AverageTransferTime Média de segundos por operação
AverageDiskQueueLength Número médio de operações de disco enfileiradas
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

Os valores agregados em todos os discos podem ser obtidos pela configuração "condition": "IsAggregate=True". Para saber mais sobre um dispositivo específico, por exemplo /dev/sdf1, configure "condition": "Name=\\"/dev/sdf1\\"".

Instalar e configurar o LAD 3.0

CLI do Azure

Se suas configurações protegidas estiverem no arquivo ProtectedSettings.json e suas informações de configuração pública estiverem em PublicSettings.json, execute o comando a seguir.

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 supõe que você esteja usando o modo Azure Resource Manager da CLI do Azure. Para configurar o LAD para as VMs do modelo de implantação clássico, alterne para o modo "asm" (azure config mode asm) e omita o nome do grupo de recursos no comando.

Para saber mais, confira a documentação da CLI entre plataformas.

PowerShell

Se as configurações protegidas estiverem na variável $protectedSettings e suas informações de configuração pública estiverem na variável $publicSettings, 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

Configuração de exemplo do LAD 3.0

Com base nas definições anteriores, esta seção fornece uma configuração de exemplo da extensão do LAD 3.0 e algumas explicações. Para aplicar o exemplo ao seu caso, use o nome de sua conta de armazenamento, o token SAS de sua conta e os tokens SAS dos Hubs de Eventos.

Observação

Dependendo de você usar a CLI do Azure ou o PowerShell para instalar o LAD, o método para fornecer configurações públicas e protegidas será diferente:

  • Se estiver usando a CLI do Azure, salve as configurações a seguir em ProtectedSettings.json e PublicSettings.json a fim de usar com o comando de exemplo anterior.
  • Se estiver usando o PowerShell, salve as configurações a seguir em $protectedSettings e $publicSettings executando $protectedSettings = '{ ... }'.

Configurações protegidas

As configurações protegidas definem:

  • Uma conta de armazenamento.
  • Um token SAS de conta correspondente.
  • Vários coletores (JsonBlob ou EventHub 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 o LAD:

  • Carregar as métricas de porcentagem de tempo de processador e espaço em disco usado para a tabela WADMetrics*.
  • Carregar as mensagens da instalação "user" do syslog e "info" de gravidade para a tabela LinuxSyslog*.
  • Carregar resultados brutos da consulta OMI (PercentProcessorTime e PercentIdleTime) na tabela nomeada LinuxCPU.
  • Carregar as linhas acrescentadas no arquivo /var/log/myladtestlog para a tabela MyLadTestLog.

Em cada caso, os dados também são carregados para:

  • Armazenamento de Blobs do Azure. O nome do contêiner é conforme definido no coletor JsonBlob.
  • O ponto de extremidade dos Hubs de Eventos, conforme especificado no coletor EventHub.
{
  "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 à da máquina virtual ou conjunto de dimensionamento de máquinas virtuais.

  • Os gráficos e os alertas das métricas da plataforma Azure conhecem o resourceId da VM em que você está trabalhando. Ele espera localizar os dados de sua VM usando a chave de pesquisa do resourceId.
  • Se você usa o Dimensionamento Automático do Azure, o resourceId na configuração de dimensionamento automático deverá corresponder ao resourceId usado pelo LAD.
  • O resourceId é incorporado aos nomes de blobs JSON gravados pelo LAD.

Ver seus dados

Use o portal do Azure para exibir dados de desempenho ou definir alertas:

Captura de tela do portal do Azure. A métrica de Espaço em disco usado está selecionada. O gráfico resultante é exibido.

Os dados de performanceCounters sempre são armazenados em uma tabela de Armazenamento do Azure. As APIs do Armazenamento do Azure estão disponíveis em várias linguagens e plataformas.

Os dados enviados para coletores JsonBlob são armazenados nos blobs na conta de armazenamento nomeada nas Configurações protegidas. Você pode consumir os dados do blob usando qualquer API de Armazenamento de Blobs do Azure.

Você também pode usar essas ferramentas de interface do usuário para acessar os dados no Armazenamento do Azure:

A captura de tela a seguir do Gerenciador de Armazenamento do Azure mostra as tabelas do Armazenamento do Azure geradas e os contêineres de uma extensão de LAD 3.0 configurada corretamente em uma VM de teste. A imagem não corresponde exatamente à configuração de exemplo do LAD 3.0.

Captura de tela que mostra o Gerenciador de Armazenamento do Azure.

Para obter mais informações sobre como consumir mensagens publicadas em um ponto de extremidade dos Hubs de Eventos, confira a Documentação dos Hubs de Eventos relevante.

Próximas etapas