Ejercicio: Enumeración de máquinas virtuales activas recientemente que dejaron de enviar registros
Aquí, escribirá consultas KQL para recuperar y transformar datos de la tabla Heartbeat
con el fin de obtener información sobre el estado de las máquinas de su entorno.
1. Establecimiento de objetivos
El primer objetivo del análisis de registros es asegurarse de que obtiene datos sobre todas las máquinas virtuales activas de la red. Quiere identificar las máquinas que dejan de enviar datos para asegurarse de que tiene plena visibilidad para todas las máquinas virtuales activas.
Para determinar qué máquinas han dejado de enviar datos, necesita información sobre:
- Todas las máquinas que han registrado datos recientemente, pero que no han registrado datos según lo previsto en los últimos minutos.
- Para hacer un análisis más profundo, es útil saber qué agente de máquina virtual se ejecuta en cada máquina.
2. Evaluación de los registros
Azure Monitor utiliza el agente de Azure Monitor para recopilar datos sobre la actividad y los procesos del sistema operativo que se ejecutan en máquinas virtuales.
Nota:
Algunas de las máquinas más antiguas de su entorno siguen utilizando los agentes heredados de Log Analytics para Windows y Linux, que están en desuso en Azure Monitor.
El agente de Azure Monitor y el agente de Log Analytics envían datos de estado de las máquinas virtuales a la tabla Heartbeat
una vez por minuto.
Vamos a ejecutar una sencilla consulta take 10
en la tabla Heartbeat
para ver el tipo de datos que contiene cada una de sus columnas:
Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Heartbeat
| take 10
Las columnas TimeGenerated
, Computer
, Category
y OSType
tienen datos pertinentes para nuestro análisis.
Ahora vamos a evaluar cómo podemos usar estos datos y qué operaciones de KQL pueden ayudar a extraer y transformar los datos:
Columna | Descripción | Objetivo del análisis | Operaciones de KQL relacionadas |
---|---|---|---|
TimeGenerated |
Indica cuándo generó la máquina virtual cada registro. |
|
|
Computer |
Identificador único de la máquina. |
|
|
Category |
Tipo de agente:
|
Identificar el agente que se ejecuta en la máquina. | Para simplificar los resultados y facilitar el análisis posterior, como el filtrado, haga lo siguiente:
|
OSType |
Tipo de sistema operativo que se ejecuta en la máquina virtual. | Identificar el tipo de agentes de Log Analytics, que son diferentes para Windows y Linux. | summarize by... OSType Para obtener más información, vea Operador summarize. |
Version |
Número de versión del agente que supervisa la máquina virtual. | Identificar la versión del agente de cada máquina. | Cambie el nombre de la columna a AgentVersion (AgentVersion=Version ). |
3. Escritura de la consulta
Escriba una consulta que muestre una lista de las máquinas que han estado activas en las últimas 48 horas, pero que no han registrado datos en la tabla Heartbeat
en los últimos cinco minutos.
Recupere todos los registros de las últimas 48 horas:
Haga clic para ejecutar la consulta en el entorno de demostración de 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
El conjunto de resultados de esta consulta incluye registros de todas las máquinas que enviaron datos de registro en las últimas 48 horas. Es probable que estos resultados incluyan numerosos registros por cada máquina activa.
Para saber qué máquinas no han enviado registros recientemente, solo necesita el último registro enviado por cada máquina.
Busque el último registro generado por cada máquina y haga un resumen por equipo, tipo de agente y sistema operativo:
Haga clic para ejecutar la consulta en el entorno de demostración de 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
Ahora tiene un registro de cada máquina que registró datos en las últimas 48 horas: el último registro que envió cada máquina.
En la línea
summarize
, ha cambiado el nombre de la columnaCategory
aAgentType
, que describe mejor la información que está examinando en la columna para este análisis.Para ver qué máquinas no han enviado registros en los últimos cinco minutos, aplique un filtro para quitar todos los registros generados en los últimos cinco minutos:
Haga clic para ejecutar la consulta en el entorno de demostración de 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
El conjunto de resultados de esta consulta incluye el último registro generado por todas las máquinas que registraron datos en las últimas 48 horas, pero no incluye los registros generados en los últimos cinco minutos. Dicho de otro modo, cualquier máquina que haya registrado datos en los últimos cinco minutos no está incluida en el conjunto de resultados.
Ahora tiene los datos que está buscando: una lista de todas las máquinas que han registrado datos en las últimas 48 horas, pero no han registrado datos según lo previsto en los últimos cinco minutos. El conjunto de resultados está formado por el conjunto de equipos que desea investigar más.
Modifique los resultados de la consulta para presentar la información con más claridad.
Por ejemplo, puede organizar los registros por la hora a la que se generaron (del más antiguo al más reciente) para ver qué equipos han pasado más tiempo sin registrar datos.
El valor
Direct Agent
en la columna AgentType indica que el agente de Log Analytics se está ejecutando en la máquina. Dado que el agente de Log Analytics para Windows también se denomina MMA y el agente para Linux también se denomina OMS, cambiar el valorDirect Agent
aMMA
para las máquinas Windows y aOMS
para las máquinas Linux simplifica los resultados y facilita un análisis posterior, como el filtrado.Haga clic para ejecutar la consulta en el entorno de demostración de 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
Sugerencia
Use
max_TimeGenerated
para poner en correlación el último latido de la máquina que dejó de generar informes con los registros de máquina u otros eventos del entorno que hayan tenido lugar más o menos a la vez. La correlación de los registros de esta manera puede ayudar a encontrar la causa principal del problema que está investigando.
Desafío: Agrupar máquinas supervisando el agente y la versión del agente
Saber qué agentes y qué versiones de los agentes se ejecutan en las máquinas puede ayudarle a analizar la causa principal de los problemas e identificar las máquinas que es necesario actualizar a un nuevo agente o a una nueva versión del agente.
¿Se le ocurren un par de ajustes rápidos que puede hacerle a la consulta que ha desarrollado en la sección anterior para obtener esta información?
Considere lo siguiente:
- ¿Qué otra información necesita extraer de los registros?
- ¿Qué operación de KQL puede usar para agrupar las máquinas por la versión del agente que están ejecutando?
Solución:
Copie las cinco primeras líneas de la consulta y agregue la columna
Version
a la líneasummarize
de la consulta para extraer información de la versión del agente:Haga clic para ejecutar la consulta en el entorno de demostración de 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
Cambie el nombre de la columna
Version
aAgentVersion
para mayor claridad, agregue otra líneasummarize
para buscar combinaciones únicas del tipo de agente, la versión del agente y el tipo de sistema operativo, y use la función de agregadomake_set()
de KQL para mostrar una lista de todos los equipos que ejecutan cada combinación de tipo de agente y versión del agente:Haga clic para ejecutar la consulta en el entorno de demostración de 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
Ahora tiene los datos que busca: una lista de combinaciones únicas de tipo de agente y versión del agente, y el conjunto de todas las máquinas activas recientemente que ejecutan una versión específica de cada agente.