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:
Execute o comando a seguir para remover todos os aliases existentes.
sudo update-alternatives --remove-all python
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.
- Em VMs do modelo de implantação clássica, especifique a versão
- 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étricasbuiltin
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:
- Selecione a conta de armazenamento para uso geral na qual deseja que a extensão grave.
- No menu à esquerda, em Configurações, selecione Assinatura de acesso compartilhado.
- Faça as seleções conforme descrito anteriormente.
- Selecione 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
ouEventHub
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 tabelaLinuxSyslog*
. - Carregar resultados brutos da consulta OMI (
PercentProcessorTime
ePercentIdleTime
) na tabela nomeadaLinuxCPU
. - Carregar as linhas acrescentadas no arquivo
/var/log/myladtestlog
para a tabelaMyLadTestLog
.
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 doresourceId
. - Se você usa o Dimensionamento Automático do Azure, o
resourceId
na configuração de dimensionamento automático deverá corresponder aoresourceId
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:
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:
- Gerenciador de Servidores do Visual Studio
- Gerenciador de 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.
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
- No Azure Monitor, crie alertas para as métricas coletadas.
- Criar gráficos de monitoramento para suas métricas.
- Crie um conjunto de dimensionamento de máquinas virtuais usando suas métricas para controlar o dimensionamento automático.