Compartilhar via


Usar a extensão de diagnóstico Linux 4.0 para monitorar métricas e logs

Cuidado

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

Este documento descreve as versões mais recentes da extensão de diagnóstico do Linux (LAD).

Importante

Para obter informações sobre a versão 3.x, confira Usar a extensão de diagnóstico Linux 3.0 para monitorar métricas e logs. Para obter informações sobre a versão 2.3 e anteriores, confira Monitorar dados de desempenho e diagnóstico de uma VM Linux.

A extensão de diagnóstico do Linux ajuda você a monitorar a integridade de uma VM Linux no Microsoft Azure. Ela oferece os seguintes recursos:

Fonte de dados Opções de personalização Destinos necessários Destinos opcionais
Métricas Contador, agregação, taxa de amostragem, especificadores Armazenamento de Tabelas do Azure Hub de eventos, Armazenamento de Blobs do Azure (formato JSON), Azure Monitor (novo no LAD 4.0)
syslog Recurso, nível de severidade Armazenamento de Tabelas do Azure Hub de eventos, armazenamento de blobs do Azure (formato JSON)
Arquivos Caminho de log, tabela de destino Armazenamento de Tabelas do Azure Hub de eventos, armazenamento de blobs do Azure (formato JSON)

Esta extensão funciona com os dois modelos de implantação do Azure (Azure Resource Manager e clássico).

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 do agente convidado, atualize o agente Linux.
  • CLI do Azure. Configurar 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 e uma conta de armazenamento de uso geral para armazenar os dados. As contas de armazenamento de uso geral dão suporte ao armazenamento de tabelas que é necessário. Uma conta de armazenamento de blobs não funciona.
  • Python 2.

Distribuições Linux compatíveis

Confira Sistemas operacionais do agente com suporte.

Requisito do Python

A extensão de diagnóstico Linux requer o Python 2. Se sua máquina virtual usa uma distribuição que não inclui o Python 2 por, instale-o.

Observação

No momento, estamos planejando convergir todas as versões do LAD (Extensões de Diagnóstico do Linux) com o novo Agente de Monitoramento do Azure, que já dá suporte ao Python 3. O LAD será agendado para substituição pendente de anúncio e aprovação.

Para instalar o Python 2, execute um dos seguintes comandos de exemplo:

  • 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.

  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 novo alias.

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

Instalar a extensão

É possível habilitar essa extensão para sua VM e conjunto de dimensionamento de máquinas virtuais usando os cmdlets do Azure PowerShell, os scripts da CLI do Azure, os modelos do ARM (Azure Resource Manager) ou o portal do Azure. Para obter mais informações, consulte Recursos e extensões da máquina virtual para Linux.

Observação

Determinados componentes da extensão de VM de diagnóstico Linux também são fornecidos na Extensão de VM do Log Analytics. Pode haver conflitos se as duas extensões forem instanciadas no mesmo modelo do ARM.

Para evitar conflitos de tempo de instalação, use a dependsOn diretiva para instalar as extensões sequencialmente. As extensões podem ser instaladas em qualquer ordem.

Use as instruções de instalação e uma configuração de exemplo para download para configurar o LAD 4.0 para:

  • Capturar e armazenar as mesmas métricas que as versões 2.3 e 3.x do LAD forneciam.
  • Enviar métricas para o coletor do Azure Monitor, junto com o coletor usual, para o Armazenamento do Azure. Essa funcionalidade é nova no LAD 4.0.
  • Capturar um conjunto útil de métricas do sistema de arquivos, assim como 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.

Instalação

Você pode instalar e configurar o LAD 4.0 na CLI do Azure ou no Azure PowerShell.

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

az vm extension set --publisher Microsoft.Azure.Diagnostics \
  --name LinuxDiagnostic --version 4.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 de Gerenciamento de Recursos do Azure da CLI do Azure. Para configurar o LAD para VMs do modelo de implantação clássico, alterne para o modo de gerenciamento de serviço (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.

Habilitar a atualização automática

Para habilitar a atualização automática, recomendamos a habilitação do recurso Atualização automática de extensão:

az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic \
  --version 4.0 --resource-group <resource_group_name> --vm-name <vm_name> \
  --protected-settings ProtectedSettings.json --settings PublicSettings.json \
  --enable-auto-upgrade true

Instalação de exemplo

Nesses exemplos, a configuração de exemplo 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.

Observação

Para os exemplos a seguir, preencha os valores corretos para as variáveis na primeira seção antes de executar o código.

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. 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.

Quando você habilita o novo coletor de Azure Monitor, as VMs precisam ter a identidade atribuída pelo sistema habilitada para gerar tokens de autenticação de MSI (Identidade de Serviço Gerenciada). Você pode adicionar essas configurações durante ou após a criação da VM. Para obter instruções relacionadas ao portal do Azure, a CLI do Azure, o PowerShell e o Azure Resource Manager, confira Configurar identidades gerenciadas.

Exemplo de instalação – CLI do Azure

# Set your Azure VM diagnostic variables.
my_subscription_id=<your_azure_subscription_id>
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 $my_subscription_id

# Enable system-assigned identity on the existing VM.
az vm identity assign --resource-group $my_resource_group --name $my_linux_vm

# Download the sample public settings. You could instead 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 --resource-group $my_resource_group \
  --name $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 4.0 --resource-group $my_resource_group --vm-name $my_linux_vm \
  --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

Exemplo de instalação para Conjuntos de Dimensionamento de Máquinas Virtuais - CLI do Azure

# Set your Azure virtual machine scale set diagnostic variables.
my_subscription_id=<your_azure_subscription_id>
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 $my_subscription_id

# Enable system-assigned identity on the existing virtual machine scale set.
az vmss identity assign --resource-group $my_resource_group --name $my_linux_vmss

# 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 --resource-group $my_resource_group \
  --name $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 4.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss \
  --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

Atualizar as configurações de extensão

Depois de alterar as configurações públicas ou protegidas, execute o mesmo comando para implantá-las na VM. Se qualquer configuração for alterada, 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, que está atualmente em versão prévia pública. Ainda há suporte para versões mais antigas do 3.x. As versões 2.x foram preteridas desde 31 de julho de 2018.

Importante

Para migrar da 3.x para a última versão da extensão, desinstale a extensão antiga. Em seguida, instale a versão 4, que inclui a configuração atualizada da identidade atribuída pelo sistema e de coletores para enviar métricas para o coletor do Azure Monitor.

Ao instalar a nova extensão, habilite atualizações automáticas da versão secundária:

  • Nas VMs do modelo de implantação do Azure Resource Manager, inclua "autoUpgradeMinorVersion": true no modelo de implantação da VM.
  • Em VMs do modelo de implantação clássico, especifique a versão 4.* se você estiver instalando a extensão por meio da CLI do Azure ou do PowerShell.

Você pode usar a mesma conta de armazenamento usada para o LAD 3.x.

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. As configurações são transmitidas para a extensão e armazenadas por ela de maneira 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 a extensão grava dados.
storageAccountEndPoint (opcional) O ponto de extremidade que identifica a nuvem na qual a conta de armazenamento existe. Se essa configuração estiver ausente, por padrão, o LAD usará 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 fornecem detalhes sobre cada coletor de dados a que a extensão dá suporte.

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 de Assinatura de Acesso Compartilhado 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 da esquerda, em Segurança + rede, selecione Assinatura de acesso compartilhado.
  3. Faça as seleções conforme descrito anteriormente.
  4. Selecione Gerar SAS e cadeia de conexão.

Captura de tela que mostra a página da assinatura de acesso compartilhado com o botão Gerar Assinatura de Acesso Compartilhado e cadeia de conexão.

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

sinksConfig

Observação

As configurações pública e protegida têm uma seção sinksConfig opcional. A seção sinksConfig nas configurações protegidas só contém as configurações de coletor EventHub e JsonBlob, devido à inclusão de segredos como sasURLs. As configurações de coletor AzMonSinknão podem ser incluídas nas configurações protegidas.

"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 usada para se referir 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.

A versão 4.0 da extensão de diagnóstico Linux fornece suporte a dois tipos de coletores protegidos: 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 de Assinatura de Acesso Compartilhado para o hub de eventos para o qual os dados devem ser publicados. O LAD exige uma Assinatura de Acesso Compartilhado para nomear uma política que permita a declaração de envio. Aqui está um exemplo:

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

Se você criou uma SAS que é válida até meia-noite UTC em 1º de janeiro de 2018, o valor sasURL pode ser semelhante ao exemplo a seguir.

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. Os nomes devem 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, exceto ladCfg, é opcional. Se você especificar a coleção de métrica ou de syslog em ladCfg, também precisará especificar StorageAccount. Você deve especificar o elemento sinksConfig para habilitar o coletor do Azure Monitor para métricas do LAD 4.0.

{
    "ladCfg":  { ... },
    "fileLogs": { ... },
    "StorageAccount": "the storage account to receive data",
    "sinksConfig": { ... },
    "mdsdHttpProxy" : ""
}
Elemento Valor
StorageAccount O nome da conta de armazenamento na qual a extensão grava dados. Deve ser o nome especificado nas configurações protegidas.
mdsdHttpProxy (Opcional) O proxy especificado nas configurações protegidas. Se o valor privado for definido, ele substituirá o valor público. 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 sobre os elementos restantes.

ladCfg

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

A estrutura ladCfg controla a reunião de métricas e logs para entrega ao serviço de Métricas do Azure Monitor e outros coletores de dados. Você deve especificar performanceCounters ou syslogEvents, ou ambos. Especifique também a estrutura metrics.

Para não habilitar o syslog ou a coleta de métricas, especifique uma estrutura vazia para o elemento ladCfg:

"ladCfg": {
    "diagnosticMonitorConfiguration": {}
}
Elemento Valor
eventVolume (Opcional) Controla o número de partições criadas dentro da tabela de armazenamento. O valor deve ser "Large", "Medium" ou "Small". O valor padrão é "Medium".
sampleRateInSeconds (Opcional) O intervalo padrão entre a coleta de métricas brutas, ou seja, não agregadas. A menor taxa de amostra com suporte é de 15 segundos. O padrão é 15.

Métricas

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
Elemento Valor
resourceId A ID de recurso do Azure Resource Manager da VM ou conjunto de dimensionamento de máquinas virtuais à qual pertence a VM. Especifique também essa configuração se a configuração usar qualquer coletor JsonBlob.
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" : "cpu idle time",
                    "locale" : "en-us"
                }
            ]
        }
    ]
}

A seção opcional performanceCounters controla a coleta de métricas. As 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. Por exemplo, "MyEventHubSink, MyJsonSink, MyAzMonSink". Para obter mais informações, consulte sinksConfig (configurações protegidas) e sinksConfig (configurações públicas).
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. Veja uma lista de contadores disponíveis.
counterSpecifier Identifica a métrica dentro do namespace de Métricas do Azure Monitor.
condition (Opcional) Seleciona uma instância 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 estiver definido, o valor de definirá o intervalo de coleção 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 durante a exibição no namespace de métricas Guest (classic). Esse rótulo está no idioma especificado pela configuração de localidade associada. O LAD ignora esse campo. Observação: Se visualizar a mesma métrica no namespace de métricas azure.vm.linux.guestmetrics disponível se AzMonSink estiver configurado, o nome de exibição depende totalmente do contador. Para localizar o mapeamento entre contadores e nomes, consulte Métricas compatíveis com o provedor interno.

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/. Para coletar 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. 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 obter mais informações, consulte Valores para instalação na página de manual do syslog.
minSeverity Um nível de severidade de syslog, como "LOG_ERR" ou "LOG_INFO". Para obter mais informações, consulte Valores para nível na 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 no Armazenamento do Azure. Os mesmos dados podem ser gravados em blobs JSON ou nos Hubs de Eventos ou em ambos. Você não pode desabilitar o armazenamento de dados em uma tabela.

O comportamento de particionamento para essa tabela é o mesmo descrito para performanceCounters. O nome da tabela é a concatenação dessas cadeias de caracteres:

  • LinuxSyslog
  • Uma data, na forma AAAAMMDD, que é alterada a cada 10 dias

Os exemplos incluem LinuxSyslog20170410 e LinuxSyslog20170609.

sinksConfig

A seção pública opcional sinksConfig permite o envio de métricas ao coletor do Azure Monitor, além da conta de armazenamento e da exibição Métricas de convidado padrão.

Observação

As configurações pública e protegida têm uma seção sinksConfig opcional. A seção sinksConfig nas configurações públicas contém somente a configuração de coletor AzMonSink. As configurações de coletor EventHub e JsonBlobnão podem ser incluídas nas configurações públicas.

Observação

A seção sinksConfig requer que a identidade atribuída pelo sistema esteja habilitada no conjunto de dimensionamento de máquinas virtuais ou nas VMS. Você pode habilitar a identidade atribuída pelo sistema por meio do portal do Azure, da CLI, do PowerShell ou do Azure Resource Manager. Siga as instruções detalhadas ou veja os exemplos de instalações anteriores neste artigo.

  "sinksConfig": {
    "sink": [
      {
        "name": "AzMonSink",
        "type": "AzMonSink",
        "AzureMonitor": {}
      }
    ]
  },

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 em qualquer coletor especificado, como JsonBlob e 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. Depois que o LAD for instalado, para marcar permissões, execute sudo su omsagent -c 'cat /path/to/file'.

"fileLogs": [
    {
        "file": "/var/log/mydaemonlog",
        "table": "MyDaemonEvents",
        "sinks": ""
    }
]
Elemento Valor
file O caminho completo do arquivo de log a ser inspecionado e capturado. O caminho não pode especificar um diretório ou 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 Microsoft 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" ou "sinks", ou ambos, devem ser especificados.

Métricas com suporte do provedor interno

As métricas padrão a que o LAD dá suporte são agregadas em todos os sistemas de arquivos, discos ou nomes. Para métricas não agregadas, confira o suporte de métricas de coletor do Azure Monitor mais recentes.

Observação

Os nomes de exibição de cada métrica são diferentes dependendo do namespace de métricas ao qual ela pertence:

  • Guest (classic) (preenchido com sua conta de armazenamento): o displayNameespecificado na seção performanceCounters ou o nome de exibição padrão, conforme visto no portal do Azure. Para a VM, em Monitoramento>de Configurações de diagnóstico, selecione a guia Métricas.
  • azure.vm.linux.guestmetrics (preenchido com AzMonSink, quando configurado): o "Nome de exibição de azure.vm.linux.guestmetrics" especificado nas seguintes tabelas.

Os valores de métrica entre as Guest (classic) versões e azure.vm.linux.guestmetrics diferem. Embora as métricas clássicas apliquem determinadas agregações no agente, as novas são contadores não agregados, o que oferece aos clientes a flexibilidade de agregar conforme desejado no tempo de exibição/alerta.

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 Nome de exibição azure.vm.linux.guestmetrics Significado
PercentIdleTime cpu idle time Percentual de tempo durante a janela de agregação que os processadores executaram o loop ocioso do kernel
PercentProcessorTime cpu percentage guest os Percentual de tempo executando um thread não ocioso
PercentIOWaitTime cpu io wait time Percentual de tempo esperando a conclusão das operações de E/S
PercentInterruptTime cpu interrupt time Percentual de tempo executando interrupções de hardware/software e DPCs (chamadas de procedimento deferidas)
PercentUserTime cpu user time Do tempo não ocioso durante a janela de agregação, o percentual de tempo no modo de usuário em prioridade normal
PercentNiceTime cpu nice time De tempo não ocioso, a porcentagem gasta em prioridade diminuída (boa)
PercentPrivilegedTime cpu privileged time 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.

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 Nome de exibição azure.vm.linux.guestmetrics Significado
AvailableMemory memory available Memória física disponível em MiB
PercentAvailableMemory mem. percent available Memória física disponível como um percentual da memória total
UsedMemory memory used Memória física em uso (MiB)
PercentUsedMemory memory percentage Memória física em uso como um percentual da memória total
PagesPerSec pages Paginação total (leitura/gravação)
PagesReadPerSec page reads Páginas lidas no repositório de backup, como arquivo de permuta, arquivo de programa e arquivo mapeado
PagesWrittenPerSec page writes Páginas gravadas no repositório de backup, como arquivo de permuta e arquivo mapeado
AvailableSwap swap available Espaço de permuta não utilizado (MiB)
PercentAvailableSwap swap percent available Espaço de troca não usado como um percentual da troca total
UsedSwap swap used Espaço de troca em uso (MiB)
PercentUsedSwap swap percent used 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 Nome de exibição azure.vm.linux.guestmetrics Significado
BytesTransmitted network out guest os Total de bytes enviados desde a inicialização
BytesReceived network in guest os Total de bytes recebidos desde a inicialização
BytesTotal network total bytes Total de bytes enviados ou recebidos desde a inicialização
PacketsTransmitted packets sent Total de pacotes enviados desde a inicialização
PacketsReceived packets received Total de pacotes recebidos desde a inicialização
TotalRxErrors packets received errors Número de erros de recebimento desde a inicialização
TotalTxErrors packets sent errors Número de erros de transmissão desde a inicialização
TotalCollisions network collisions Número de colisões relatadas pelas portas de rede desde a inicialização

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 Nome de exibição azure.vm.linux.guestmetrics Significado
FreeSpace filesystem free space Espaço em disco disponível em bytes
UsedSpace filesystem used space Espaço em disco usado em bytes
PercentFreeSpace filesystem % free space Percentual de espaço livre
PercentUsedSpace filesystem % used space Percentual de espaço usado
PercentFreeInodes filesystem % free inodes Percentual de nós de índice (inodes) não usados
PercentUsedInodes filesystem % used inodes Percentual de inodes alocados (em uso) somados em todos os sistemas de arquivos
BytesReadPerSecond filesystem read bytes/sec Bytes lidos por segundo
BytesWrittenPerSecond filesystem write bytes/sec Bytes gravados por segundo
BytesPerSecond filesystem bytes/sec Bytes lido ou gravados por segundo
ReadsPerSecond filesystem reads/sec Operações de leitura por segundo
WritesPerSecond filesystem writes/sec Operações de gravação por segundo
TransfersPerSecond filesystem transfers/sec Operações de leitura ou gravação por segundo

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 Nome de exibição azure.vm.linux.guestmetrics Significado
ReadsPerSecond disk reads Operações de leitura por segundo
WritesPerSecond disk writes Operações de gravação por segundo
TransfersPerSecond disk transfers Operações totais por segundo
AverageReadTime disk read time Média de segundos por operação de leitura
AverageWriteTime disk write time Média de segundos por operação de gravação
AverageTransferTime disk transfer time Média de segundos por operação
AverageDiskQueueLength disk queue length Número médio de operações de disco enfileiradas
ReadBytesPerSecond disk read guest os Número de bytes lidos por segundo
WriteBytesPerSecond disk write guest os Número de bytes gravados por segundo
BytesPerSecond disk total bytes Número de bytes lidos ou gravados por segundo

Configuração de exemplo do LAD 4.0

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

Observação

Dependendo de você usar a CLI do Azure ou o Azure 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, execute $protectedSettings = '{ ... }' e $publicSettings = '{ ... }' para salvar as configurações para $protectedSettings e $publicSettings.

Configuração de configurações protegidas

As configurações protegidas definem:

  • Uma conta de armazenamento.
  • Um token de assinatura de acesso compartilhado da 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ção de 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 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.
  • Um 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": "cpu percentage guest os"
              }
            ],
            "condition": "IsAggregate=TRUE",
            "class": "Processor"
          },
          {
            "unit": "Bytes",
            "type": "builtin",
            "counter": "UsedSpace",
            "counterSpecifier": "/builtin/FileSystem/UsedSpace",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "Used disfilesystem used space"
              }
            ],
            "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"
        }
      }
    }
  },
  "sinksConfig": {
    "sink": [
      {
        "name": "AzMonSink",
        "type": "AzMonSink",
        "AzureMonitor": {}
      }
    ]
  },
  "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 resourceId como a chave de pesquisa.
  • 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:

A captura de tela mostra a página Métricas no portal do Azure e a Disponibilidade selecionada.

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 do 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 4.0 configurada corretamente em uma VM de teste. A imagem não corresponde exatamente à configuração de exemplo do LAD 4.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