Cómo consultar registros desde Azure Monitor para contenedoresHow to query logs from Azure Monitor for containers

Azure Monitor para contenedores recopila métricas de rendimiento, datos de inventario e información de estado de mantenimiento de los contenedores y los hosts de contenedor.Azure Monitor for containers collects performance metrics, inventory data, and health state information from container hosts and containers. Los datos se recopilan cada tres minutos y se reenvían al área de trabajo de Log Analytics en Azure Monitor.The data is collected every three minutes and forwarded to the Log Analytics workspace in Azure Monitor. Estos datos están disponibles para consulta en Azure Monitor.This data is available for query in Azure Monitor. Estos datos se pueden aplicar a escenarios que incluyen la planeación de la migración, el análisis de la capacidad, la detección y la solución de problemas de rendimiento a petición.You can apply this data to scenarios that include migration planning, capacity analysis, discovery, and on-demand performance troubleshooting.

Registros de contenedorContainer records

En la tabla siguiente, se proporcionan detalles de los registros recopilados por Azure Monitor para contenedores.In the following table, details of the records collected by Azure Monitor for containers are provided.

dataData Origen de datosData source Tipo de datosData type FieldsFields
Inventario de contenedorContainer inventory KubeletKubelet ContainerInventory TimeGenerated, Computer, container name, ContainerHostname, Image, ImageTag, ContainerState, ExitCode, EnvironmentVar, Command, CreatedTime, StartedTime, FinishedTime, SourceSystem, ContainerID, ImageIDTimeGenerated, Computer, container name, ContainerHostname, Image, ImageTag, ContainerState, ExitCode, EnvironmentVar, Command, CreatedTime, StartedTime, FinishedTime, SourceSystem, ContainerID, ImageID
Registro de contenedorContainer log DockerDocker ContainerLog TimeGenerated, Computer, image ID, container name, LogEntrySource, LogEntry, SourceSystem, ContainerIDTimeGenerated, Computer, image ID, container name, LogEntrySource, LogEntry, SourceSystem, ContainerID
Inventario de nodo de contenedorContainer node inventory API de KubeKube API ContainerNodeInventory TimeGenerated, Computer, ClassName_s, DockerVersion_s, OperatingSystem_s, Volume_s, Network_s, NodeRole_s, OrchestratorType_s, InstanceID_g, SourceSystemTimeGenerated, Computer, ClassName_s, DockerVersion_s, OperatingSystem_s, Volume_s, Network_s, NodeRole_s, OrchestratorType_s, InstanceID_g, SourceSystem
Inventario de pods en un clúster de KubernetesInventory of pods in a Kubernetes cluster API de KubeKube API KubePodInventory TimeGenerated, Computer, ClusterId, ContainerCreationTimeStamp, PodUid, PodCreationTimeStamp, ContainerRestartCount, PodRestartCount, PodStartTime, ContainerStartTime, ServiceName, ControllerKind, ControllerName, ContainerStatus, ContainerStatusReason, ContainerID, ContainerName, Name, PodLabel, Namespace, PodStatus, ClusterName, PodIp, SourceSystemTimeGenerated, Computer, ClusterId, ContainerCreationTimeStamp, PodUid, PodCreationTimeStamp, ContainerRestartCount, PodRestartCount, PodStartTime, ContainerStartTime, ServiceName, ControllerKind, ControllerName, ContainerStatus, ContainerStatusReason, ContainerID, ContainerName, Name, PodLabel, Namespace, PodStatus, ClusterName, PodIp, SourceSystem
Inventario de la parte de nodos de un clúster de KubernetesInventory of nodes part of a Kubernetes cluster API de KubeKube API KubeNodeInventory TimeGenerated, Computer, ClusterName, ClusterId, LastTransitionTimeReady, Labels, Status, KubeletVersion, KubeProxyVersion, CreationTimeStamp, SourceSystemTimeGenerated, Computer, ClusterName, ClusterId, LastTransitionTimeReady, Labels, Status, KubeletVersion, KubeProxyVersion, CreationTimeStamp, SourceSystem
Eventos de KubernetesKubernetes Events API de KubeKube API KubeEvents TimeGenerated, Computer, ClusterId_s, FirstSeen_t, LastSeen_t, Count_d, ObjectKind_s, Namespace_s, Name_s, Reason_s, Type_s, TimeGenerated_s, SourceComponent_s, ClusterName_s, Message, SourceSystemTimeGenerated, Computer, ClusterId_s, FirstSeen_t, LastSeen_t, Count_d, ObjectKind_s, Namespace_s, Name_s, Reason_s, Type_s, TimeGenerated_s, SourceComponent_s, ClusterName_s, Message, SourceSystem
Servicios en el clúster de KubernetesServices in the Kubernetes cluster API de KubeKube API KubeServices TimeGenerated, ServiceName_s, Namespace_s, SelectorLabels_s, ClusterId_s, ClusterName_s, ClusterIP_s, ServiceType_s, SourceSystemTimeGenerated, ServiceName_s, Namespace_s, SelectorLabels_s, ClusterId_s, ClusterName_s, ClusterIP_s, ServiceType_s, SourceSystem
Métricas de rendimiento de la parte de nodos del clúster de KubernetesPerformance metrics for nodes part of the Kubernetes cluster Las métricas de uso se obtienen de cAdvisor y los límites de la API de Kube.Usage metrics are obtained from cAdvisor and limits from Kube api Perf | donde ObjectName == "K8SNode"Perf | where ObjectName == "K8SNode" Computer, ObjectName, CounterName (cpuAllocatableNanoCores, memoryAllocatableBytes, cpuCapacityNanoCores, memoryCapacityBytes, memoryRssBytes, cpuUsageNanoCores, memoryWorkingsetBytes, restartTimeEpoch), CounterValue, TimeGenerated, CounterPath, SourceSystemComputer, ObjectName, CounterName (cpuAllocatableNanoCores, memoryAllocatableBytes, cpuCapacityNanoCores, memoryCapacityBytes, memoryRssBytes, cpuUsageNanoCores, memoryWorkingsetBytes, restartTimeEpoch), CounterValue, TimeGenerated, CounterPath, SourceSystem
Métricas de rendimiento de la parte de contenedores del clúster de KubernetesPerformance metrics for containers part of the Kubernetes cluster Las métricas de uso se obtienen de cAdvisor y los límites de la API de Kube.Usage metrics are obtained from cAdvisor and limits from Kube api Perf | donde ObjectName == "K8SContainer"Perf | where ObjectName == "K8SContainer" CounterName ( cpuRequestNanoCores, memoryRequestBytes, cpuLimitNanoCores, memoryWorkingSetBytes, restartTimeEpoch, cpuUsageNanoCores, memoryRssBytes), CounterValue, TimeGenerated, CounterPath, SourceSystemCounterName ( cpuRequestNanoCores, memoryRequestBytes, cpuLimitNanoCores, memoryWorkingSetBytes, restartTimeEpoch, cpuUsageNanoCores, memoryRssBytes), CounterValue, TimeGenerated, CounterPath, SourceSystem
Métricas personalizadasCustom Metrics InsightsMetrics Computer, Name, Namespace, Origin, SourceSystem, Tags1, TimeGenerated, Type, Va, _ResourceIdComputer, Name, Namespace, Origin, SourceSystem, Tags1, TimeGenerated, Type, Va, _ResourceId

1 La propiedad Tags representa varias dimensiones para la métrica correspondiente.1 The Tags property represents multiple dimensions for the corresponding metric. Para más información sobre las métricas recopiladas y almacenadas en la tabla InsightsMetrics y una descripción de las propiedades de registro, consulte Información general de InsightsMetrics.For more information about the metrics collected and stored in the InsightsMetrics table and a description of the record properties, see InsightsMetrics overview.

Búsqueda de registros para analizar datosSearch logs to analyze data

Los registros de Azure Monitor pueden ayudarle a buscar tendencias, diagnosticar cuellos de botellas, realizar previsiones o correlacionar datos, que pueden servirle para determinar si la configuración actual del clúster funciona óptimamente.Azure Monitor Logs can help you look for trends, diagnose bottlenecks, forecast, or correlate data that can help you determine whether the current cluster configuration is performing optimally. Las búsquedas de registros predefinidas se proporcionan para que comience a usarlas inmediatamente o para que las personalice con el fin de devolver la información de la forma deseada.Pre-defined log searches are provided for you to immediately start using or to customize to return the information the way you want.

Puede realizar un análisis interactivo de los datos en el área de trabajo mediante la selección de la opción Ver registros de eventos de Kubernetes o Ver registros del contenedor en el panel de vista previa de la lista desplegable Ver en Analytics.You can perform interactive analysis of data in the workspace by selecting the View Kubernetes event logs or View container logs option in the preview pane from the View in analytics drop-down list. La página Búsqueda de registros aparece a la derecha de la página de Azure Portal en que se encontraba.The Log Search page appears to the right of the Azure portal page that you were on.

Análisis de los datos en Log Analytics

Los registros de contenedor generador que se reenvían al área de trabajo son STDOUT y STDERR.The container logs output that's forwarded to your workspace are STDOUT and STDERR. Dado que Azure Monitor supervisa Kubernetes administrado por Azure (AKS), el sistema de Kubernetes no se recopila hoy debido al gran volumen de datos generados.Because Azure Monitor is monitoring Azure-managed Kubernetes (AKS), Kube-system is not collected today because of the large volume of generated data.

Ejemplos de consultas de búsqueda de registrosExample log search queries

A menudo resulta útil crear consultas que comiencen con un ejemplo o dos y luego modificarlas para ajustarlas a sus requisitos.It's often useful to build queries that start with an example or two and then modify them to fit your requirements. Para ayudarle a crear consultas más avanzadas, puede experimentar con las siguientes consultas de ejemplo:To help build more advanced queries, you can experiment with the following sample queries:

ConsultarQuery DescripciónDescription
ContainerInventoryContainerInventory
| project Computer, Name, Image, ImageTag, ContainerState, CreatedTime, StartedTime, FinishedTime| project Computer, Name, Image, ImageTag, ContainerState, CreatedTime, StartedTime, FinishedTime
| render table| render table
Se muestra toda la información del ciclo de vida de un contenedorList all of a container's lifecycle information
KubeEvents_CLKubeEvents_CL
| where not(isempty(Namespace_s))| where not(isempty(Namespace_s))
| sort by TimeGenerated desc| sort by TimeGenerated desc
| render table| render table
Eventos de KubernetesKubernetes events
ContainerImageInventoryContainerImageInventory
| summarize AggregatedValue = count() by Image, ImageTag, Running| summarize AggregatedValue = count() by Image, ImageTag, Running
Inventario de imágenesImage inventory
Seleccione la opción de visualización del gráfico de líneas:Select the Line chart display option:
PerfPerf
| where ObjectName == "K8SContainer" and CounterName == "cpuUsageNanoCores" | summarize AvgCPUUsageNanoCores = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName| where ObjectName == "K8SContainer" and CounterName == "cpuUsageNanoCores" | summarize AvgCPUUsageNanoCores = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName
CPU de contenedorContainer CPU
Seleccione la opción de visualización del gráfico de líneas:Select the Line chart display option:
PerfPerf
| where ObjectName == "K8SContainer" and CounterName == "memoryRssBytes" | summarize AvgUsedRssMemoryBytes = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName| where ObjectName == "K8SContainer" and CounterName == "memoryRssBytes" | summarize AvgUsedRssMemoryBytes = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName
Memoria de contenedorContainer memory
InsightsMetricsInsightsMetrics
| where Name == "requests_count"| where Name == "requests_count"
| summarize Val=any(Val) by TimeGenerated=bin(TimeGenerated, 1m)| summarize Val=any(Val) by TimeGenerated=bin(TimeGenerated, 1m)
| sort by TimeGenerated asc| sort by TimeGenerated asc
| project RequestsPerMinute = Val - prev(Val), TimeGenerated| project RequestsPerMinute = Val - prev(Val), TimeGenerated
| render barchart| render barchart
Solicitudes por minuto con métricas personalizadasRequests Per Minute with Custom Metrics

Consulta de los datos de las métricas de PrometheusQuery Prometheus metrics data

El ejemplo siguiente es una consulta de métricas de Prometheus que muestra lecturas de disco por segundo por disco y por nodo.The following example is a Prometheus metrics query showing disk reads per second per disk per node.

InsightsMetrics
| where Namespace == 'container.azm.ms/diskio'
| where TimeGenerated > ago(1h)
| where Name == 'reads'
| extend Tags = todynamic(Tags)
| extend HostName = tostring(Tags.hostName), Device = Tags.name
| extend NodeDisk = strcat(Device, "/", HostName)
| order by NodeDisk asc, TimeGenerated asc
| serialize
| extend PrevVal = iif(prev(NodeDisk) != NodeDisk, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeDisk) != NodeDisk, datetime(null), prev(TimeGenerated))
| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated
| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))
| where isnotnull(Rate)
| project TimeGenerated, NodeDisk, Rate
| render timechart

Para ver las métricas de Prometheus que ha extraído Azure Monitor filtradas por espacio de nombres, especifique "prometheus".To view Prometheus metrics scraped by Azure Monitor filtered by Namespace, specify "prometheus". A continuación, se muestra una consulta de ejemplo para ver las métricas de Prometheus desde el espacio de nombres default de Kubernetes.Here is a sample query to view Prometheus metrics from the default kubernetes namespace.

InsightsMetrics 
| where Namespace == "prometheus"
| extend tags=parse_json(Tags)
| summarize count() by Name

Los datos de Prometheus también se pueden consultar directamente en función del nombre.Prometheus data can also be directly queried by name.

InsightsMetrics 
| where Namespace == "prometheus"
| where Name contains "some_prometheus_metric"

Consulta de errores de configuración o extracciónQuery config or scraping errors

Para investigar los errores de configuración o extracción, la consulta de ejemplo siguiente devuelve los eventos informativos de la tabla KubeMonAgentEvents.To investigate any configuration or scraping errors, the following example query returns informational events from the KubeMonAgentEvents table.

KubeMonAgentEvents | where Level != "Info" 

La salida muestra unos resultados similares al ejemplo siguiente:The output shows results similar to the following example:

Registro de los resultados de la consulta de eventos informativos del agente

Pasos siguientesNext steps

Azure Monitor para contenedores no incluye un conjunto de alertas predefinido.Azure Monitor for containers does not include a predefined set of alerts. Consulte Creación de alertas de rendimiento con Azure Monitor para contenedores para aprender a crear alertas recomendadas en caso de uso elevado de CPU y memoria a fin de permitir sus operaciones de desarrollo o sus procesos y procedimientos operativos.Review the Create performance alerts with Azure Monitor for containers to learn how to create recommended alerts for high CPU and memory utilization to support your DevOps or operational processes and procedures.