Monitorar máquinas virtuais com o Azure Monitor: Alertas

Este artigo faz parte do guia Monitorar máquinas virtuais e suas cargas de trabalho no Azure Monitor. Os Alertas no Azure Monitor notificam você proativamente a respeito de dados e padrões interessantes em seus dados de monitoramento. Não há regras de alerta pré-configuradas para máquinas virtuais, mas você pode criar sua própria com base em dados coletados do Agente do Azure Monitor. Este artigo apresenta conceitos de alerta específicos para máquinas virtuais e regras de alerta comuns usadas por outros clientes do Azure Monitor.

Este cenário descreve como implementar o monitoramento completo do ambiente de máquina virtual híbrida e do Azure:

Importante

A maioria das regras de alerta tem um custo que depende do tipo de regra, quantas dimensões inclui e com que frequência é executada. Antes de criar regras de alerta, confira a seção Regras de alerta nos Preços do Azure Monitor.

Coleta de dados

As regras de alerta inspecionam os dados que já foram coletados no Azure Monitor. Você precisa fazer com que os dados sejam coletados para determinado cenário antes de criar uma regra de alerta. Confira Monitorar máquinas virtuais com o Azure Monitor: coletar dados para obter diretrizes sobre como configurar a coleta de dados para vários cenários, incluindo todas as regras de alerta neste artigo.

O Azure Monitor fornece um conjunto de regras de alerta recomendadas que você pode habilitar rapidamente para qualquer máquina virtual do Azure. Essas regras são um ótimo ponto de partida para o monitoramento básico. No entanto, sozinhas, não fornecerão alertas suficientes para a maioria das implementações corporativas pelos seguintes motivos:

  • Os alertas recomendados se aplicam apenas a máquinas virtuais do Azure e não a máquinas híbridas.
  • Os alertas recomendados incluem apenas métricas de host e não métricas ou logs de convidado. Essas métricas são úteis para monitorar a integridade do próprio computador. Contudo, oferecem uma visibilidade mínima das cargas de trabalho e dos aplicativos em execução no computador.
  • Os alertas recomendados são associados a computadores individuais que criam um número excessivo de regras de alerta. Em vez de depender desse método para cada computador, confira Dimensionando regras de alerta para estratégias sobre como usar um número mínimo de regras de alerta para vários computadores.

Tipos de alerta

Os tipos mais comuns de regras de alerta no Azure Monitor são alertas de métrica e alertas de pesquisa de logs. O tipo de regra de alerta que você cria para um cenário específico depende de onde os dados sobre os quais você está alertando estão localizados.

Pode haver casos em que os dados de um cenário de alerta específico estão disponíveis em métricas e logs. Nesse caso, você precisa determinar qual tipo de regra usar. Você também pode ter flexibilidade na forma como coleta determinados dados e permite que a decisão da regra de alerta digite sua decisão sobre o método de coleta de dados.

Alertas de métricas

Usos comuns para alertas de métrica:

  • Alerta quando uma métrica específica excede um limite. Um exemplo é quando a CPU de um computador está em execução de alta utilização.

Fontes de dados para alertas de métrica:

  • Métricas de host para máquinas virtuais do Azure, que são coletadas automaticamente
  • Métricas coletadas pelo Agente do Azure Monitor do sistema operacional convidado

Alertas de pesquisa de logs

Usos comuns dos alertas de pesquisa de logs:

  • Alerta quando determinado evento ou padrão de eventos do log de eventos ou Syslog do Windows é encontrado. Geralmente, essas regras de alerta medem as linhas da tabela retornadas pela consulta.
  • Alerta com base em um cálculo de dados numéricos em vários computadores. Normalmente, essas regras de alerta medem o cálculo de uma coluna numérica nos resultados da consulta.

Fontes de dados dos alertas de pesquisa de logs:

  • Todos os dados coletados em um workspace do Log Analytics

Regras de alerta de dimensionamento

Como você pode ter muitas máquinas virtuais que exigem o mesmo monitoramento, não é necessário criar regras de alerta individuais para cada uma delas. Você também deseja garantir que há estratégias diferentes para limitar o número de regras de alerta que você precisa gerenciar, dependendo do tipo de regra. Cada uma dessas estratégias depende da compreensão do recurso de destino da regra de alerta.

Regras de alerta de métrica

As máquinas virtuais dão suporte a várias regras de alerta de métrica de recurso, conforme descrito em Monitorar vários recursos. Essa funcionalidade permite que você crie uma única regra de alerta de métrica que se aplique a todas as máquinas virtuais em um grupo de recursos ou assinatura na mesma região.

Comece com os alertas recomendados e crie uma regra correspondente para cada um usando sua assinatura ou um grupo de recursos como o recurso de destino. Você precisa criar regras duplicadas para cada região se tiver computadores em várias regiões.

À medida que você identifica os requisitos para mais regras de alerta de métrica, siga essa mesma estratégia usando uma assinatura ou um grupo de recursos como o recurso de destino para:

  • Minimize o número de regras de alerta que você precisa gerenciar.
  • Verifique se elas são aplicadas automaticamente a novos computadores.

Regras de alerta de pesquisa de logs

Se você definir o recurso de destino de uma regra de alerta de pesquisa de logs para um computador específico, as consultas serão limitadas a dados associados a esse computador, o que fornecerá alertas individuais para ela. Esse arranjo requer uma regra de alerta separada para cada computador.

Se você definir o recurso de destino de uma regra de alerta de pesquisa de logs para um workspace do Log Analytics, terá acesso a todos os dados desse workspace. Por esse motivo, você pode alertar sobre os dados de todos os computadores no grupo de trabalho com uma única regra. Esse arranjo oferece a opção de criar um único alerta para todos os computadores. Em seguida, você poderá usar dimensões a fim de criar um alerta separado para cada computador.

Por exemplo, talvez você queira alertar quando um evento de erro for criado no log de eventos do Windows por algum computador. Primeiro, você precisa criar uma regra de coleta de dados conforme descrito em Coletar eventos e contadores de desempenho de máquinas virtuais com o Agente do Azure Monitor a fim de enviar esses eventos para a tabela Event no workspace do Log Analytics. Em seguida, você pode criar uma regra de alerta que consulta essa tabela usando o workspace como o recurso de destino e a condição mostrada na imagem a seguir.

A consulta retorna um registro para qualquer mensagem de erro em qualquer computador. Use a opção Dividir por dimensões e especifique _ResourceId para instruir a regra a criar um alerta para cada computador se vários computadores forem retornados nos resultados.

Screenshot that shows a new log search alert rule with split by dimensions.

Dimensões

Dependendo das informações que você deseja incluir no alerta, talvez seja necessário dividir usando dimensões diferentes. Nesse caso, verifique se as dimensões necessárias estão projetadas na consulta usando o operador project ou extend. Defina o campo Coluna ID do recurso como Não dividir e inclua todas as dimensões relevantes na lista. Verifique se a opção Incluir todos os valores futuros está selecionada para que todos os valores retornados da consulta sejam incluídos.

Screenshot that shows a new log search alert rule with split by multiple dimensions.

Limites dinâmicos

Outro benefício do uso de regras de alerta de pesquisa de logs é a capacidade de incluir uma lógica complexa na consulta para determinar o valor limite. Você pode codificar o limite, aplicá-lo a todos os recursos ou calculá-lo dinamicamente com base em algum campo ou valor calculado. O limite é aplicado aos recursos somente de acordo com condições específicas. Por exemplo, você pode criar um alerta com base na memória disponível, mas apenas para computadores com uma quantidade específica de memória total.

Regras de alerta comuns

A seção a seguir lista regras de alerta comuns para máquinas virtuais no Azure Monitor. Os detalhes dos alertas de métrica e dos alertas de pesquisa de logs são fornecidos para cada um. Para obter diretrizes sobre o tipo de alerta a ser usado, confira Tipos de alerta. Se você não estiver familiarizado com o processo de criação de regras de alerta no Azure Monitor, confira as instruções para criar uma regra de alerta.

Observação

Os detalhes dos alertas de pesquisa de logs fornecidos aqui estão usando dados coletados por meio dos Insights da VM, que fornece um conjunto de contadores de desempenho comuns para o sistema operacional cliente. Esse nome independe do tipo de sistema operacional.

Computador não disponível

Um dos requisitos de monitoramento mais comuns para uma máquina virtual é criar um alerta se ele parar de ser executado. O melhor método é criar uma regra de alerta de métrica no Azure Monitor usando a métrica de disponibilidade da VM que está atualmente em versão prévia pública. Para ver um passo a passo completo sobre essa métrica, confira Criar regra de alerta de disponibilidade para a máquina virtual do Azure.

Conforme descrito em Colocando regras de alerta em escala, crie uma regra de alerta de disponibilidade usando uma assinatura ou grupo de recursos como o recurso de destino. A regra se aplica a várias máquinas virtuais, incluindo novas máquinas criadas após a regra de alerta.

Pulsação do agente

A pulsação do agente é ligeiramente diferente do alerta de indisponibilidade do computador porque depende da pulsação enviada pelo Agente do Azure Monitor. A pulsação do agente pode alertar você se o computador estiver em execução, mas o agente não responder.

Regras de alerta de métrica

Uma métrica chamada Pulsação é incluída em cada workspace do Log Analytics. Cada máquina virtual conectada a esse workspace envia um valor de métrica de pulsação a cada minuto. Como o computador é uma dimensão na métrica, você pode acionar um alerta quando qualquer computador falhar ao enviar uma pulsação. Defina o Tipo de agregação como Contagem e o valor do Limite para corresponder à Granularidade de avaliação.

Regras de alerta de pesquisa de logs

Os alertas de pesquisa de logs usam a tabela de pulsação, que deve ter um registro de pulsação a cada minuto de cada computador.

Use a regra com a seguinte consulta:

Heartbeat
| summarize TimeGenerated=max(TimeGenerated) by Computer, _ResourceId
| extend Duration = datetime_diff('minute',now(),TimeGenerated)
| summarize MinutesSinceLastHeartbeat = min(Duration) by Computer, bin(TimeGenerated,5m), _ResourceId

Alertas de CPU

Esta seção descreve alertas de CPU.

Regras de alerta de métrica

Destino Métrica
Host Percentual de CPU (incluído em alertas recomendados)
Convidado do Windows \Processor Information(_Total)% Tempo do processador
Convidado do Linux cpu/usage_active

Regras de alerta de pesquisa de logs

Utilização da CPU

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Processor" and Name == "UtilizationPercentage"
| summarize CPUPercentageAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId

Alertas de memória

Esta seção descreve alertas de memória.

Regras de alerta de métrica

Destino Métrica
Host Bytes de memória disponíveis (versão prévia) (incluídos nos alertas recomendados)
Convidado do Windows \Memory% Bytes confirmados em uso
\Memória\Bytes Disponíveis
Convidado do Linux mem/available
mem/available_percent

Regras de alerta de pesquisa de logs

Memória disponível em MB

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Memory" and Name == "AvailableMB"
| summarize AvailableMemoryInMBAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId

Memória disponível em porcentagem

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Memory" and Name == "AvailableMB"
| extend TotalMemory = toreal(todynamic(Tags)["vm.azm.ms/memorySizeMB"]) | extend AvailableMemoryPercentage = (toreal(Val) / TotalMemory) * 100.0
| summarize AvailableMemoryInPercentageAverage = avg(AvailableMemoryPercentage) by bin(TimeGenerated, 15m), Computer, _ResourceId  

Alertas de disco

Esta seção descreve alertas de disco.

Regras de alerta de métrica

Destino Métrica
Convidado do Windows \Logical Disk_Total) Espaço livre
\Logical Disk_Total)\Megabytes livres
Convidado do Linux disk/free
disk/free_percent

Regras de alerta de pesquisa de logs

Disco lógico usado – todos os discos em cada computador

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "LogicalDisk" and Name == "FreeSpacePercentage"
| summarize LogicalDiskSpacePercentageFreeAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId 

Disco lógico usado – discos individuais

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "LogicalDisk" and Name == "FreeSpacePercentage"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize LogicalDiskSpacePercentageFreeAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, Disk 

IOPS de disco lógico

InsightsMetrics
| where Origin == "vm.azm.ms" 
| where Namespace == "LogicalDisk" and Name == "TransfersPerSecond"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize DiskIOPSAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, Disk 

Taxa de dados de disco lógico

InsightsMetrics
| where Origin == "vm.azm.ms" 
| where Namespace == "LogicalDisk" and Name == "BytesPerSecond"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize DiskBytesPerSecondAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, Disk 

Alertas de rede

Regras de alerta de métrica

Destino Métrica
Host Rede no Total, Total de Saída de Rede (incluído nos alertas recomendados)
Convidado do Windows \Network Interface\Bytes Sent/sec
\Logical Disk_Total)\Megabytes livres
Convidado do Linux disk/free
disk/free_percent

Regras de alerta de pesquisa de logs

Bytes de adaptadores de rede recebidos – todas as interfaces

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "ReadBytesPerSecond"
| summarize BytesReceivedAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId  

Bytes de adaptadores de rede recebidos – interfaces individuais

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "ReadBytesPerSecond"
| extend NetworkInterface=tostring(todynamic(Tags)["vm.azm.ms/networkDeviceId"])
| summarize BytesReceievedAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, NetworkInterface 

Bytes de adaptadores de rede enviados – todas as interfaces

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "WriteBytesPerSecond"
| summarize BytesSentAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId 

Bytes de adaptadores de rede enviados – interfaces individuais

InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Network" and Name == "WriteBytesPerSecond"
| extend NetworkInterface=tostring(todynamic(Tags)["vm.azm.ms/networkDeviceId"])
| summarize BytesSentAverage = avg(Val) by bin(TimeGenerated, 15m), Computer, _ResourceId, NetworkInterface 

Eventos do Windows e do Linux

A amostra a seguir cria um alerta quando um evento específico do Windows é criado. Ele usa uma regra de alerta de medição de métrica para criar um alerta separado para cada computador.

  • Crie uma regra de alerta em um evento do Windows específico. Este exemplo mostra um evento no log do aplicativo. Especifique um limite de 0 e violações consecutivas maiores que 0.

    Event 
    | where EventLog == "Application"
    | where EventID == 123 
    | summarize NumberOfEvents = count() by Computer, bin(TimeGenerated, 15m)
    
  • Crie uma regra de alerta em eventos do Syslog com uma severidade específica. O exemplo a seguir mostra eventos de autorização de erro. Especifique um limite de 0 e violações consecutivas maiores que 0.

    Syslog
    | where Facility == "auth"
    | where SeverityLevel == "err"
    | summarize NumberOfEvents = count() by Computer, bin(TimeGenerated, 15m)
    

Contadores de desempenho personalizados

  • Crie um alerta no valor máximo de um contador.

    Perf 
    | where CounterName == "My Counter" 
    | summarize AggregatedValue = max(CounterValue) by Computer
    
  • Crie um alerta no valor médio de um contador.

    Perf 
    | where CounterName == "My Counter" 
    | summarize AggregatedValue = avg(CounterValue) by Computer
    

Próximas etapas

Analisar dados de monitoramento coletados para máquinas virtuais