Exercício - Listar máquinas virtuais ativas recentemente que pararam de enviar logs
Aqui, você escreverá consultas KQL para recuperar e transformar dados da Heartbeat
tabela para obter informações sobre o status das máquinas em seu ambiente.
1. Estabeleça metas
Sua primeira meta de análise de log é garantir que você esteja recebendo dados sobre todas as máquinas virtuais ativas em sua rede. Você deseja identificar máquinas que param de enviar dados para garantir que você tenha visibilidade total de todas as máquinas virtuais ativas.
Para determinar quais máquinas pararam de enviar dados, você precisa de informações sobre:
- Todas as máquinas que registraram dados recentemente, mas não registraram dados como esperado nos últimos minutos.
- Para uma análise mais profunda, é útil saber qual agente de máquina virtual está sendo executado em cada máquina.
2. Avalie os logs
O Azure Monitor usa o Agente do Azure Monitor para coletar dados sobre atividades e processos do sistema operacional em execução dentro de máquinas virtuais.
Nota
Algumas das máquinas mais antigas em seu ambiente ainda usam os agentes herdados do Log Analytics Windows e Linux, que o Azure Monitor está preterindo.
O Azure Monitor Agent e o Log Analytics Agent enviam dados de integridade da máquina virtual para a Heartbeat
tabela uma vez por minuto.
Vamos executar uma consulta simples take 10
na Heartbeat
tabela para ver o tipo de dados que cada uma de suas colunas contém:
Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat
| take 10
As TimeGenerated
colunas , , Computer
Category
e OSType
têm dados relevantes para a nossa análise.
Agora vamos avaliar como podemos usar esses dados e quais operações KQL podem ajudar a extrair e transformar os dados:
Column | Description | Objetivo da análise | Operações KQL relacionadas |
---|---|---|---|
TimeGenerated |
Indica quando a máquina virtual gerou cada log. |
|
|
Computer |
Identificador único da máquina. |
|
|
Category |
O tipo de agente:
|
Identifique o agente em execução na máquina. | Para simplificar os resultados e facilitar análises adicionais, como a filtragem:
|
OSType |
O tipo de sistema operacional em execução na máquina virtual. | Identifique o tipo de agente para agentes do Log Analytics, que são diferentes para Windows e Linux. | summarize by... OSType Para obter mais informações, consulte operador de resumo. |
Version |
O número da versão do agente que monitora a máquina virtual. | Identifique a versão do agente em cada máquina. | Renomeie a coluna para AgentVersion (AgentVersion=Version ). |
3. Escreva a sua consulta
Escreva uma consulta que liste as máquinas que estiveram ativas nas últimas 48 horas, mas não registraram dados na Heartbeat
tabela nos últimos cinco minutos.
Recupere todos os logs das últimas 48 horas:
Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat // The table you’re querying | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
O conjunto de resultados dessa consulta inclui logs de todas as máquinas que enviaram dados de log nas últimas 48 horas. Esses resultados provavelmente incluem vários logs para cada máquina ativa.
Para entender quais máquinas não enviaram logs recentemente, você só precisa do último log que cada máquina enviou.
Encontre o último log gerado por cada máquina e resuma por computador, tipo de agente e sistema operacional:
Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat // The table you’re querying | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours | summarize max(TimeGenerated) by Computer, AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
Agora você tem um log de cada máquina que registrou dados nas últimas 48 horas - o último log que cada máquina enviou.
summarize
Na linha, você renomeou aCategory
coluna paraAgentType
, que descreve melhor as informações que você está vendo na coluna como parte desta análise.Para ver quais máquinas não enviaram logs nos últimos cinco minutos, filtre todos os logs gerados nos últimos cinco minutos:
Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat // The table you’re querying | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours | summarize max(TimeGenerated) by Computer, AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system | where max_TimeGenerated < ago(5m) // Filters away all records generated in the last five minutes
O conjunto de resultados dessa consulta inclui o último log gerado por todas as máquinas que registraram dados nas últimas 48 horas, mas não inclui logs gerados nos últimos cinco minutos. Em outras palavras, qualquer máquina que registrou dados nos últimos cinco minutos não está incluída no conjunto de resultados.
Agora você tem os dados que está procurando: uma lista de todas as máquinas que registraram dados nas últimas 48 horas, mas não registraram dados como esperado nos últimos cinco minutos. O conjunto de resultados consiste no conjunto de computadores que você deseja investigar mais a fundo.
Manipule os resultados da consulta para apresentar as informações com mais clareza.
Por exemplo, você pode organizar os logs por tempo gerado - do mais antigo para o mais recente - para ver quais computadores ficaram mais tempo sem registrar dados.
O
Direct Agent
valor na coluna AgentType informa que o Agente do Log Analytics está em execução na máquina. Como o Log Analytics Agent para Windows também é chamado de OMS e para Linux o agente também é chamado de MMS, renomear oDirect Agent
valor para máquinas Windows e paraMMA
máquinas Linux simplifica os resultados eOMS
facilita análises adicionais, como a filtragem.Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat // The table you’re querying | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system | where max_TimeGenerated < ago(5m) // Filters away all records generated in the last five minutes | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines | order by max_TimeGenerated asc // Sorts results by max_TimeGenerated from oldest to newest | project-reorder max_TimeGenerated,Computer,AgentType,OSType // Reorganizes the order of columns in the result set
Gorjeta
Use
max_TimeGenerated
para correlacionar a última pulsação da máquina que parou de relatar com logs da máquina ou outros eventos ambientais que ocorreram na mesma época. Correlacionar logs dessa maneira pode ajudar a encontrar a causa raiz do problema que você está investigando.
Desafio: Agrupar máquinas por agente de monitoramento e versão do agente
Compreender quais agentes e versões de agente estão em execução em suas máquinas pode ajudá-lo a analisar a causa raiz dos problemas e identificar quais máquinas você precisa atualizar para um novo agente ou nova versão do agente.
Você pode pensar em alguns ajustes rápidos que você pode fazer na consulta que você desenvolveu acima para obter essas informações?
Considere o seguinte:
- Que informações adicionais precisa de extrair dos seus registos?
- Qual operação do KQL você pode usar para agrupar máquinas pela versão do agente que elas estão executando?
Solução:
Copie as cinco primeiras linhas da consulta e adicione a
Version
summarize
coluna à linha da consulta para extrair informações de versão do agente:Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat // The table you’re querying | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType, Version // Retrieves the last record generated by each computer and provides information about computer, agent type, operating system, and agent version | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
Renomeie a coluna para para maior clareza, adicione outra
summarize
linha para encontrar combinações exclusivas de tipo de agente, versão do agente e tipo de sistema operacional e use a função de agregação KQLmake_set()
paraAgentVersion
listar todos os computadores que executam cada combinação de tipo de agente e versão do agenteVersion
:Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat // The table you’re querying | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType, Version // Retrieves the last record generated by each computer and provides information about computer, agent type, operating system, and agent version | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines | summarize ComputersList=make_set(Computer) by AgentVersion=Version, AgentType, OSType // Summarizes the result set by unique combination of agent type, agent version, and operating system, and lists the set of all machines running the specific agent version
Agora você tem os dados que está procurando: uma lista de combinações exclusivas de tipo de agente e versão do agente e o conjunto de todas as máquinas ativas recentemente que estão executando uma versão específica de cada agente.