Exercício: Listar as máquinas virtuais ativas recentemente que pararam de enviar logs
Aqui, você escreverá consultas KQL para recuperar e transformar dados da tabela Heartbeat
a fim de saber mais sobre o status das máquinas em seu ambiente.
1. Definir metas
Seu primeiro objetivo de análise de log é garantir a obtenção dos dados de todas as máquinas virtuais ativas em sua rede. Você deseja identificar as máquinas virtuais ativas que pararam de enviar dados para garantir visibilidade total de todas elas.
A fim de determinar quais máquinas pararam de enviar dados, você precisa de informações sobre o seguinte:
- Todas as máquinas que registraram dados recentemente, mas não conforme o esperado nos últimos minutos.
- Para uma análise mais detalhada, é útil saber qual agente de máquina virtual está sendo executado em cada máquina.
2. Avaliar logs
O Azure Monitor usa o agente do Azure Monitor para coletar dados sobre atividades e processos do sistema operacional executados nas máquinas virtuais.
Observação
Algumas máquinas mais antigas no ambiente ainda usam os agentes herdados para Windows e Linux do Log Analytics, que o Azure Monitor está substituindo.
Os agentes do Azure Monitor e do Log Analytics enviam dados de integridade de máquina virtual para a tabela Heartbeat
uma vez por minuto.
Execute uma consulta take 10
simples na tabela Heartbeat
para ver o tipo de dados que cada uma das colunas contém:
Clique para executar a consulta no ambiente de demonstração do Log Analytics
Heartbeat
| take 10
As colunas TimeGenerated
, Computer
, Category
e OSType
têm dados relevantes para a análise.
Agora, avalie como usar esses dados e quais operações de KQL podem ajudar na extração e transformação deles:
Coluna | Descrição | Meta de análise | Operações de KQL relacionadas |
---|---|---|---|
TimeGenerated |
Indica quando a máquina virtual gerou cada log. |
|
|
Computer |
Identificador exclusivo da máquina. |
|
|
Category |
O tipo do agente:
|
Identifique o agente em execução na máquina. | Para simplificar os resultados e facilitar análises adicionais, como a filtragem, faça o seguinte:
|
OSType |
O tipo de sistema operacional em execução na máquina virtual. | Identifique o tipo no caso dos agentes do Log Analytics, que são diferentes para Windows e Linux. | summarize by... OSType Para obter mais informações, vejaoperador summarize. |
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 sua consulta
Escreva uma consulta que liste as máquinas que estiveram ativas nas últimas 48 horas, mas não registraram dados na tabela Heartbeat
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 incluirão diversos logs de cada máquina ativa.
Para entender quais máquinas não enviaram logs recentemente, você só precisa do último log enviado por cada máquina.
Encontre o último log gerado por cada máquina e faça o resumo 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 enviado por cada uma delas.
Na linha
summarize
, você renomeou a colunaCategory
paraAgentType
, que descreve melhor as informações que você está vendo nessa coluna como parte da 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 os logs gerados nos últimos cinco minutos. Em outras palavras, qualquer máquina que registrou dados nos últimos cinco minutos não é incluída no conjunto de resultados.
Agora você tem os dados que precisa: uma lista de todas as máquinas que registraram dados nas últimas 48 horas, mas que não registraram dados conforme o esperado nos últimos cinco minutos. O conjunto de resultados consiste no conjunto de computadores que você deseja investigar mais detalhadamente.
Manipule os resultados da consulta para apresentar as informações com mais clareza.
Por exemplo, é possível organizar os logs por tempo de geração, do mais antigo para o mais recente, a fim de ver quais computadores ficaram mais tempo sem registrar dados.
O valor
Direct Agent
na coluna AgentType informa que o agente do Log Analytics está sendo executado na máquina. Como o agente do Log Analytics para Windows também é chamado de OMS e, no Linux, ele é chamado de MMS, renomear o valorDirect Agent
paraMMA
, no caso dos computadores Windows, e paraOMS
, no caso dos computadores Linux, simplifica os resultados e facilita a análise posterior, 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
Dica
Use
max_TimeGenerated
para correlacionar a última pulsação da máquina que parou de enviar relatórios com os logs da máquina ou outros eventos ambientais que ocorreram no mesmo período. Correlacionar os logs dessa maneira pode ajudar a encontrar a causa raiz do problema que você está investigando.
Desafio: agrupar máquinas monitorando o agente e a versão dele
Compreender quais agentes e versões de agente estão sendo executados em suas máquinas pode ajudar na análise da causa raiz dos problemas e na identificação das máquinas que precisam ser atualizadas para um novo agente ou versão de agente.
Você consegue pensar em alguns ajustes rápidos que pode fazer na consulta desenvolvida acima para obter essas informações?
Considere o seguinte:
- Quais informações adicionais você precisa extrair dos logs?
- Qual operação de KQL pode ser usada para agrupar máquinas pela versão de agente executada?
Solução:
Copie as primeiras cinco linhas da consulta e adicione a coluna
Version
à linhasummarize
da consulta para extrair as informações da 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
Version
paraAgentVersion
a fim de obter maior clareza, adicione outra linhasummarize
a fim de encontrar combinações exclusivas de tipo de agente, versão de agente e tipo de sistema operacional e use a função agregada KQLmake_set()
para listar todos os computadores que executam cada combinação de tipo de agente e versão de 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 | 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 precisa: 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.