Supervisión de máquinas virtuales con Azure Monitor: recopilación de datos
Este artículo forma parte de la guía Supervisión de máquinas virtuales y sus cargas de trabajo en Azure Monitor. Se describe cómo configurar la recopilación de datos una vez que haya implementado el agente de Azure Monitor en las máquinas virtuales híbridas y de Azure en Azure Monitor.
En este artículo se proporcionan instrucciones sobre cómo recopilar los tipos de telemetría más comunes de las máquinas virtuales. La configuración exacta que elija depende de las cargas de trabajo que ejecute en las máquinas. En cada sección se incluyen alertas de búsqueda de registros de ejemplo que puede usar con esos datos.
- Para obtener más información sobre el análisis de la telemetría recopilada de las máquinas virtuales, consulte Supervisión de máquinas virtuales con Azure Monitor: análisis de los datos de supervisión.
- Para obtener más información sobre el uso de la telemetría recopilada de las máquinas virtuales para crear alertas en Azure Monitor, consulte Supervisión de máquinas virtuales con Azure Monitor: alertas.
Nota
En este escenario se describe cómo implementar una supervisión completa del entorno de máquina virtual híbrida y de Azure. Para empezar a supervisar la primera máquina virtual de Azure, consulte Supervisión de máquinas virtuales de Azure.
Reglas de recopilación de datos
La recopilación de datos del agente de Azure Monitor se define mediante una o varias reglas de recopilación de datos (DCR) almacenadas en la suscripción de Azure y asociadas a las máquinas virtuales.
En el caso de las máquinas virtuales, las DCR definen datos como eventos y contadores de rendimiento para recopilar y especificar las áreas de trabajo de Log Analytics a las que se deben enviar los datos. La DCR también puede usar transformaciones para filtrar los datos no deseados y para agregar columnas calculadas. Una sola máquina se puede asociar a varias DCR y una sola DCR se puede asociar a varias máquinas. Las DCR se entregan a las máquinas a las que están asociadas donde se procesan mediante el agente de Azure Monitor.
Visualización de reglas de recopilación de datos
Puede ver las DCR en la suscripción de Azure en Reglas de recopilación de datos en el menú Supervisión de Azure Portal. Las DCR admiten otros escenarios de recopilación de datos en Azure Monitor, por lo que todas las DCR no necesariamente serán para las máquinas virtuales.
Creación de reglas de recopilación de datos
Hay varios métodos para crear DCR en función del escenario de recopilación de datos. En algunos casos, Azure Portal le guía por la configuración. Otros escenarios requieren que edite una DCR directamente. Al configurar VM Insights, se crea automáticamente una DCR preconfigurada. En las secciones siguientes se identifican los datos comunes para recopilar y cómo configurar la recopilación de datos.
En algunos casos, es posible que tenga que editar una DCR existente para agregar funcionalidad. Por ejemplo, puede usar Azure Portal para crear una DCR que recopile eventos de Windows o Syslog. A continuación, quiere agregar una transformación a esa DCR para filtrar las columnas de los eventos que no desea recopilar.
A medida que el entorno madura y crece en complejidad, debe implementar una estrategia para organizar sus DCR para ayudar en su administración. Para obtener instrucciones sobre las distintas estrategias, consulte Procedimientos recomendados para la creación y administración de reglas de recopilación de datos en Azure Monitor.
Control de costos
Dado que el coste de Azure Monitor depende de la cantidad de datos que recopile, debe asegurarse de que no va a recopilar más datos de los que necesita para cumplir los requisitos de supervisión. La configuración es un equilibrio entre el presupuesto y la cantidad de información que desee en el funcionamiento de las máquinas virtuales.
Sugerencia
Para descubrir estrategias que le ayudarán a reducir los costes de Azure Monitor, consulte Optimización de costes y Azure Monitor.
Una máquina virtual típica genera entre 1 GB y 3 GB de datos por mes. Este tamaño de datos depende de la configuración de la máquina, de las cargas de trabajo que se ejecutan en ella y de la configuración de las DCR. Antes de configurar la recopilación de datos en todo el entorno de la máquina virtual, comience la recopilación en algunas máquinas representativas para predecir mejor los costes esperados cuando se implementan en todo el entorno. Use Información sobre el área de trabajo de Log Analytics o consultas de registro en Volumen de datos por equipo para determinar la cantidad de datos facturables recopilados para cada máquina y ajustarlos en consecuencia.
Evalúe los datos recopilados y filtre los que cumplan los siguientes criterios para reducir los costes. Cada origen de datos que recopile puede tener un método diferente para filtrar los datos no deseados. Consulte las secciones siguientes para obtener los detalles de cada uno de los orígenes de datos comunes.
- No se usa para alertas.
- No se conoce ningún valor forense o de diagnóstico.
- No es necesario para los reguladores.
- No se usa en ningún panel o libro.
También puede usar transformaciones para implementar un filtrado más granular y también para filtrar los datos de las columnas que proporcionan poco valor. Por ejemplo, puede tener un evento de Windows que sea valioso para las alertas, pero que incluya columnas con datos redundantes o excesivos. Puede crear una transformación que permita recopilar el evento pero que elimine estos datos excesivos.
Filtre los datos tanto como sea posible antes de enviarlos a Azure Monitor para evitar un posible cargo por filtrar demasiados datos mediante transformaciones. Use las transformaciones para filtrar registros usando lógicas complejas y para filtrar columnas con datos que no necesita.
Recopilación de datos predeterminada
Azure Monitor realiza automáticamente la siguiente recopilación de datos sin necesidad de ninguna configuración adicional.
Métricas de la plataforma
Las métricas de la plataforma para máquinas virtuales de Azure incluyen métricas de host importantes, como el uso de CPU, red y disco. Pueden ser:
- Se visualiza en la Página de información general.
- Se analiza con el explorador de métricas para la máquina en Azure Portal.
- Se usa par las alertas de métrica.
Registro de actividades
El registro de actividad se recopila automáticamente. Incluye la actividad reciente de la máquina, como los cambios de configuración y cuándo se detuvo e inició. Puede ver las métricas de la plataforma y el registro de actividad recopilados para cada host de máquina virtual en Azure Portal.
Puede ver el registro de actividad de una máquina individual o para todos los recursos de una suscripción. Cree una configuración de diagnóstico para enviar estos datos a la misma área de trabajo de Log Analytics que usa el agente de Azure Monitor para analizarlos con los demás datos de supervisión recopilados para la máquina virtual. No hay ningún coste por la ingesta o retención de datos del registro de actividad.
Información de disponibilidad de máquinas virtuales en Azure Resource Graph
Con Azure Resource Graph, puede usar el mismo lenguaje de consulta Kusto que se usa en las consultas de registro para consultar los recursos de Azure a gran escala con filtrado, agrupación y ordenación complejos por propiedades de recursos. Puede usar anotaciones de estado de máquina virtual en Resource Graph para el análisis detallado del tiempo de inactividad y la atribución de errores.
Para obtener más información sobre qué datos se recopilan y cómo verlos, consulte Supervisión de máquinas virtuales con Azure Monitor: análisis de datos de supervisión.
VM Insights
Al habilitar VM Insights, se crea una DCR con el prefijo MSVMI- que recopila la siguiente información. Puede usar esta misma DCR con otras máquinas en lugar de crear una nueva para cada máquina virtual.
Los contadores de rendimiento comunes para el sistema operativo cliente se envían a la tabla InsightsMetrics del área de trabajo de Log Analytics. Los nombres de contador se normalizan para usar el mismo nombre común, independientemente del tipo de sistema operativo.
Si ha especificado procesos y dependencias que se van a recopilar, se rellenan las tablas siguientes:
- VMBoundPort: tráfico para los puertos de servidor abiertos en la máquina
- VMComputer: datos de inventario de la máquina
- VMConnection: tráfico para conexiones entrantes y salientes hacia la máquina y desde esta
- VMProcess: procesos que se ejecutan en la máquina
De manera predeterminada, VM Insights no habilitará la recopilación de procesos y dependencias para ahorrar costes de ingesta de datos. Estos datos son necesarios para la característica de asignación y también implementa el agente de dependencia en la máquina. Habilite esta colección si desea usar esta característica.
Recopilación de eventos de Windows y Syslog
El sistema operativo y las aplicaciones de las máquinas virtuales suelen escribir en el registro de eventos de Windows o Syslog. Puede crear una alerta en cuanto se encuentre un único evento o esperar una serie de eventos coincidentes dentro de un período de tiempo determinado. También puede recopilar eventos para análisis posteriores, como identificar tendencias concretas a lo largo del tiempo o para realizar la solución de problemas después de que se produzca un problema.
Para obtener instrucciones sobre cómo crear una DCR para recopilar eventos de Windows y Syslog, veaRecopilación de datos con el agente de Azure Monitor. Puede crear rápidamente una DCR mediante los registros de eventos de Windows más comunes y los filtros de instalaciones de Syslog por nivel de evento.
Para un filtrado más detallado por criterios, como el identificador de evento, puede crear un filtro personalizado mediante consultas XPath. Para filtrar aún más los datos recopilados, edite la DCR para agregar una transformación.
Use las instrucciones siguientes como punto de partida recomendado para la recopilación de eventos. Modifique la configuración de la DCR para filtrar los eventos innecesarios y agregue otros eventos en función de sus requisitos.
Source | Estrategia |
---|---|
Eventos de Windows | Recopile al menos eventos críticos, de error y de advertencia para que los registros del sistema y de la aplicación admitan alertas. Agregue eventos de información para analizar tendencias y admitir la solución de problemas. Los eventos detallados rara vez son útiles y normalmente no se deben recopilar. |
Eventos Syslog | Recopile al menos eventos LOG_WARNING para cada instalación para admitir las alertas. Agregue eventos de información para analizar tendencias y admitir la solución de problemas. Los eventos LOG_DEBUG rara vez son útiles y normalmente no se deben recopilar. |
Consultas de registros de ejemplo: eventos de Windows
Consultar | Descripción |
---|---|
Event |
Todos los eventos de Windows |
Event | where EventLevelName == "Error" |
Todos los eventos de Windows con gravedad de error |
Event | summarize count() by Source |
Contador de eventos de Windows por origen |
Event | where EventLevelName == "Error" | summarize count() by Source |
Contador de eventos de error de Windows por origen |
Consultas de registros de ejemplo: eventos de Syslog
Consultar | Descripción |
---|---|
Syslog |
Todos los registros de Syslog |
Syslog | where SeverityLevel == "error" |
Todos los registros de Syslog con gravedad de error |
Syslog | summarize AggregatedValue = count() by Computer |
Número de registros de Syslog por equipo |
Syslog | summarize AggregatedValue = count() by Facility |
Número de registros de Syslog por recurso |
Recopilación de contadores de rendimiento
Los datos de rendimiento del cliente se pueden enviar a métricas de Azure Monitor o a los registros de Azure Monitor, y normalmente los enviará a ambos destinos. Si ha habilitado VM Insights, se recopila un conjunto común de contadores de rendimiento en Registros para admitir sus gráficos de rendimiento. No puede modificar este conjunto de contadores, pero puede crear otras DCR para recopilar contadores adicionales y enviarlos a diferentes destinos.
Hay varias razones por las que desea crear una DCR para recopilar el rendimiento de los invitados:
- No está usando VM Insights, por lo que los datos de rendimiento del cliente aún no se recopilan.
- Recopile otros contadores de rendimiento que VM Insights no recopila.
- Recopile contadores de rendimiento de otras cargas de trabajo que se ejecutan en el cliente.
- Envíe datos de rendimiento a las métricas de Azure Monitor, donde puede usarlos con el explorador de métricas y las alertas de métricas.
Para obtener instrucciones sobre cómo crear una DCR para recopilar contadores de rendimiento, consulte Recopilación de eventos y contadores de rendimiento de máquinas virtuales con el agente de Azure Monitor. Puede crear rápidamente una DCR mediante los contadores más comunes. Para un filtrado más detallado por criterios, como el identificador de evento, puede crear un filtro personalizado mediante consultas XPath.
Nota
Puede optar por combinar el rendimiento y la recopilación de eventos en la misma DCR.
Destination | Descripción |
---|---|
Métricas | Las métricas de host se envían automáticamente a las métricas de Azure Monitor. Puede usar una DCR para recopilar métricas de cliente para que se puedan analizar junto con el explorador de métricas o usarse con alertas de métricas. Estos datos se almacenan durante 93 días. |
Registros | Los datos de rendimiento almacenados en los registros de Azure Monitor se pueden almacenar durante períodos prolongados. Los datos se pueden analizar junto con los datos de eventos mediante consultas de registro con log Analytics o alertas de búsqueda de registros. También puede correlacionar los datos mediante una lógica compleja entre varias máquinas, regiones y suscripciones. Los datos de rendimiento se envían a las tablas siguientes: - VM Insights: InsightsMetrics - Otros datos de rendimiento: Perf |
Consultas de registros de ejemplo
En los ejemplos siguientes se usa la tabla Perf
con datos de rendimiento personalizados.
Consultar | Descripción |
---|---|
Perf |
Todos los datos de rendimiento |
Perf | where Computer == "MyComputer" |
Todos los datos de rendimiento de un equipo concreto |
Perf | where CounterName == "Current Disk Queue Length" |
Todos los datos de rendimiento de un contador concreto |
Perf | where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AVGCPU = avg(CounterValue) by Computer |
Uso medio de CPU en todos los equipos |
Perf | where CounterName == "% Processor Time" | summarize AggregatedValue = max(CounterValue) by Computer |
Uso máximo de CPU en todos los equipos |
Perf | where ObjectName == "LogicalDisk" and CounterName == "Current Disk Queue Length" and Computer == "MyComputerName" | summarize AggregatedValue = avg(CounterValue) by InstanceName |
Longitud media de cola de disco actual en todas las instancias de un equipo dado |
Perf | where CounterName == "Disk Transfers/sec" | summarize AggregatedValue = percentile(CounterValue, 95) by Computer |
Percentil 95 de transferencias de disco por segundo en todos los equipos |
Perf | where CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 1h), Computer |
Promedio por hora de uso de CPU en todos los equipos |
Perf | where Computer == "MyComputer" and CounterName startswith_cs "%" and InstanceName == "_Total" | summarize AggregatedValue = percentile(CounterValue, 70) by bin(TimeGenerated, 1h), CounterName |
Percentil 70 por hora de cada contador de porcentaje % para un equipo concreto |
Perf | where CounterName == "% Processor Time" and InstanceName == "_Total" and Computer == "MyComputer" | summarize ["min(CounterValue)"] = min(CounterValue), ["avg(CounterValue)"] = avg(CounterValue), ["percentile75(CounterValue)"] = percentile(CounterValue, 75), ["max(CounterValue)"] = max(CounterValue) by bin(TimeGenerated, 1h), Computer |
Promedio, mínimo, máximo y percentil 75 por hora de uso de CPU de un equipo específico |
Perf | where ObjectName == "MSSQL$INST2:Databases" and InstanceName == "master" |
Todos los datos de rendimiento del objeto de rendimiento de la base de datos para la base de datos maestra (master) de la instancia de SQL Server con nombre INST2. |
Perf | where TimeGenerated >ago(5m) | where ObjectName == "Process" and InstanceName != "_Total" and InstanceName != "Idle" | where CounterName == "% Processor Time" | summarize cpuVal=avg(CounterValue) by Computer,InstanceName | join (Perf| where TimeGenerated >ago(5m)| where ObjectName == "Process" and CounterName == "ID Process" | summarize arg_max(TimeGenerated,*) by ProcID=CounterValue ) on Computer,InstanceName | sort by TimeGenerated desc | summarize AvgCPU = avg(cpuVal) by InstanceName,ProcID |
Promedio de CPU durante los últimos 5 minutos para cada identificador de proceso. |
Recopilación de registros de texto
Algunas aplicaciones escriben eventos en un registro de texto almacenado en la máquina virtual. Cree una tabla personalizada y DCR para recopilar estos datos. Defina la ubicación del registro de texto, su configuración detallada y el esquema de la tabla personalizada. La ingesta y retención de estos datos en el área de trabajo tiene un coste.
Consultas de registros de ejemplo
Los nombres de columna que se usan aquí son solo ejemplos. Lo más probable es que los nombres de columna del registro sean diferentes.
Consultar | Descripción |
---|---|
MyApp_CL | summarize count() by code |
Contar el número de eventos por código. |
MyApp_CL | where status == "Error" | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m) |
Crear una regla de alerta en cualquier evento de error. |
Recopilación de registros de IIS
IIS que se ejecuta en máquinas Windows escribe registros en un archivo de texto. Configure la recopilación de registros de IIS mediante la Recopilación de registros de IIS con el agente de Azure Monitor. La ingesta y retención de estos datos en el área de trabajo tiene un coste.
Los registros del registro de IIS se almacenan en la tabla W3CIISLog del área de trabajo de Log Analytics. La ingesta y retención de estos datos en el área de trabajo tiene un coste.
Consultas de registros de ejemplo
Consultar | Descripción |
---|---|
W3CIISLog | where csHost=="www.contoso.com" | summarize count() by csUriStem |
Cuente las entradas de registro de IIS por dirección URL para el host www.contoso.com. |
W3CIISLog | summarize sum(csBytes) by Computer |
Revisar el total de bytes recibidos por cada máquina IIS. |
Supervisión de un servicio o demonio
Para supervisar el estado de un servicio Windows o demonio de Linux, habilite la solución Seguimiento de cambios e inventario en Azure Automation.
Azure Monitor no tiene capacidad para supervisar el estado de un servicio o demonio. Hay algunos métodos posibles que se pueden usar, como buscar eventos en el registro de eventos de Windows, pero este método no es confiable. También puede buscar el proceso asociado al servicio que se ejecuta en la máquina en la tabla VMProcess que ha rellenado VM Insights. Esta tabla solo se actualiza cada hora, lo que normalmente no es suficiente si desea usar estos datos para alertas.
Nota
La solución Change Tracking and Analysis es diferente de la característica Change Analysis en la información de máquinas virtuales. Esta característica está en versión preliminar pública y aún no se incluye en este escenario.
Para las diferentes opciones para habilitar la solución Change Tracking en las máquinas virtuales, consulte Habilitar Seguimiento de cambios e inventario. Esta solución incluye métodos para configurar máquinas virtuales a escala. Tiene que crear una cuenta de Azure Automation para admitir la solución.
Al habilitar el Seguimiento de cambios e inventario, se crean dos tablas nuevas en el área de trabajo de Log Analytics. Use estas tablas para las consultas de registros y las reglas de alertas de búsqueda de registros.
Tabla | Descripción |
---|---|
ConfigurationChange | Cambios en los datos de configuración de invitado |
ConfigurationData | Último estado notificado para los datos de configuración de invitado |
Consultas de registros de ejemplo
Enumerar todos los servicios y demonios que se han iniciado recientemente.
ConfigurationChange | where ConfigChangeType == "Daemons" or ConfigChangeType == "WindowsServices" | where SvcState == "Running" | sort by Computer, SvcName
Alerta cuando se detiene un servicio específico. Use esta consulta en una regla de alertas de búsqueda de registros.
ConfigurationData | where SvcName == "W3SVC" | where SvcState == "Stopped" | where ConfigDataType == "WindowsServices" | where SvcStartupType == "Auto" | summarize AggregatedValue = count() by Computer, SvcName, SvcDisplayName, SvcState, bin(TimeGenerated, 15m)
Alerta cuando se detiene uno de un conjunto de servicios. Use esta consulta en una regla de alertas de búsqueda de registros.
let services = dynamic(["omskd","cshost","schedule","wuauserv","heathservice","efs","wsusservice","SrmSvc","CertSvc","wmsvc","vpxd","winmgmt","netman","smsexec","w3svc","sms_site_vss_writer","ccmexe","spooler","eventsystem","netlogon","kdc","ntds","lsmserv","gpsvc","dns","dfsr","dfs","dhcp","DNSCache","dmserver","messenger","w32time","plugplay","rpcss","lanmanserver","lmhosts","eventlog","lanmanworkstation","wnirm","mpssvc","dhcpserver","VSS","ClusSvc","MSExchangeTransport","MSExchangeIS"]); ConfigurationData | where ConfigDataType == "WindowsServices" | where SvcStartupType == "Auto" | where SvcName in (services) | where SvcState == "Stopped" | project TimeGenerated, Computer, SvcName, SvcDisplayName, SvcState | summarize AggregatedValue = count() by Computer, SvcName, SvcDisplayName, SvcState, bin(TimeGenerated, 15m)
Supervisión de un puerto
La supervisión de puertos comprueba que una máquina está escuchando en un puerto determinado. Aquí se describen dos estrategias posibles para la supervisión de puertos.
Tablas de agentes de dependencias
Si usa VM Insights con la opción Recopilación de procesos y dependencias habilitada, puede usar VMConnection y VMBoundPort para analizar las conexiones y los puertos de la máquina. La tabla VMBoundPort
se actualiza cada minuto con cada proceso que se ejecuta en el equipo y el puerto en el que escucha. Puede crear una alerta de búsqueda de registros similar a la alerta de latido que falta para buscar procesos que se han detenido o para alertar cuando la máquina no escucha en un puerto determinado.
Revise el recuento de los puertos abiertos en las máquinas virtuales para evaluar qué máquinas virtuales tienen vulnerabilidades de configuración y seguridad.
VMBoundPort | where Ip != "127.0.0.1" | summarize by Computer, Machine, Port, Protocol | summarize OpenPorts=count() by Computer, Machine | order by OpenPorts desc
Enumere los puertos vinculados en las máquinas virtuales para evaluar qué máquinas virtuales tienen vulnerabilidades de configuración y seguridad.
VMBoundPort | distinct Computer, Port, ProcessName
Analizar la actividad de red por puerto para determinar cómo se configura la aplicación o el servicio.
VMBoundPort | where Ip != "127.0.0.1" | summarize BytesSent=sum(BytesSent), BytesReceived=sum(BytesReceived), LinksEstablished=sum(LinksEstablished), LinksTerminated=sum(LinksTerminated), arg_max(TimeGenerated, LinksLive) by Machine, Computer, ProcessName, Ip, Port, IsWildcardBind | project-away TimeGenerated | order by Machine, Computer, Port, Ip, ProcessName
Revisar las tendencias de bytes enviados y recibidos para las máquinas virtuales.
VMConnection | summarize sum(BytesSent), sum(BytesReceived) by bin(TimeGenerated,1hr), Computer | order by Computer desc | render timechart
Usar errores de conexión a lo largo del tiempo para determinar si la tasa de errores es estable o está cambiando.
VMConnection | where Computer == <replace this with a computer name, e.g. 'acme-demo'> | extend bythehour = datetime_part("hour", TimeGenerated) | project bythehour, LinksFailed | summarize failCount = count() by bythehour | sort by bythehour asc | render timechart
Vincular tendencias de estado para analizar el comportamiento y el estado de conexión de una máquina.
VMConnection | where Computer == <replace this with a computer name, e.g. 'acme-demo'> | summarize dcount(LinksEstablished), dcount(LinksLive), dcount(LinksFailed), dcount(LinksTerminated) by bin(TimeGenerated, 1h) | render timechart
Administrador de conexiones
La característica Connection Monitor de Network Watcher se usa para probar las conexiones a un puerto en una máquina virtual. Una prueba comprueba que la máquina está escuchando en el puerto y que es accesible en la red.
Connection Manager requiere la extensión Network Watcher en la máquina cliente que inicia la prueba. No es necesario instalarla en la máquina que se está probando. Para obtener más información, consulte Tutorial: Supervisión de la comunicación de red mediante Azure Portal.
Hay un coste adicional por Connection Manager. Para más información, consulte Precios de Network Watcher.
Ejecución de un proceso en una máquina local
La supervisión de algunas cargas de trabajo requiere un proceso local. Un ejemplo es un script de PowerShell que se ejecuta en la máquina local para conectarse a una aplicación y recopilar o procesar datos. Puede usar Hybrid Runbook Worker, que forma parte de Azure Automation, para ejecutar un script de PowerShell local. No hay ningún cargo directo por Hybrid Runbook Worker, pero hay un coste por cada runbook que use.
El runbook puede acceder a cualquier recurso de la máquina local para recopilar los datos necesarios. No puede enviar datos directamente a Azure Monitor ni crear una alerta. Para crear una alerta, haga que el runbook escriba una entrada en un registro personalizado. Después, configure ese registro que Azure Monitor recopilará. Cree una regla de alertas de búsqueda de registros que se active en esa entrada de registro.