Consultas utilizadas en la solución de Kubernetes
Las consultas se utilizan para extraer los datos de métricas, eventos, topología y análisis para mostrarlos en varios paneles disponibles en la solución de Kubernetes. Algunas de las consultas basadas en logs, como las del sistema de Kubernetes, el estado del sistema operativo, los eventos, el resumen de cargas de trabajo, el resumen de nodos y el resumen de pod, se deben ejecutar en el Explorador de logs y las otras consultas son métricas basadas que se deben ejecutar en el Explorador de métricas.
Temas:
Consultas para los widgets del panel derecho en la solución de Kubernetes
Temas:
- Sistema de Kubernetes
- Estado del SO
- núcleos de CPU (utilizados/asignables)
- Memoria (utilizada/asignable)
- núcleos de CPU usados
- Memoria utilizada
- Red: recepción de bytes
- Red: transmisión de bytes
- Velocidad de recepción de paquetes de red
- Red: frecuencia de transmisión de paquetes
- Red: frecuencia borrada de recepción de paquetes
- Red: frecuencia borrada de transacción de paquetes
- Duración de solicitud de servidor de API
- Duración de solicitud etcd
- Total de solicitudes de servidor de API
- Tamaño de respuesta de API
- Duración de ejecución de solicitud de API
Sistema de Kubernetes
Muestra las métricas generales de estado o rendimiento de los componentes críticos del sistema Kubernetes (como kube-apiserver, gestor de controladores o programador). Este widget ayuda a garantizar que los servicios esenciales del plano de control funcionen sin problemas.
Separadores: Cluster
Filtros: Ninguno
Ámbito: explorador de logs
Consulta:
'Component Type' in ('Kubernetes System', 'Kubernetes Control Plane') and Component != null
| link Time, Component, cluster()
| rename 'Cluster Sample' as 'Error Sample'
| eval Error = if(length('Error Sample') > 50, substr('Error Sample', 0, 50) || ' ...', substr('Error Sample', 0, 50))
| classify correlate = -*, Error Component as Trend
| timestats name = 'All Issues' sum(Count) as 'Issue Trend'
| timestats name = 'Potential Issues' sum(Count) as Issues by Component, Error
| fields -'Potential Issue', -ErrorEstado del SO
Proporciona estadísticas sobre el estado del sistema operativo en los nodos de Kubernetes, a menudo agregando métricas como los estados de CPU, memoria, disco y proceso del sistema. Esto garantiza que el sistema operativo subyacente no se convierta en un cuello de botella para las cargas de trabajo.
Separadores: Cluster, Nodo
Filtros: Ninguno
Ámbito: explorador de logs
Consulta:
'Component Type' = 'Linux System' and Component != null and (Label = null or (Label != null and 'Problem Priority' != null))
| link includenulls = true Time, Node, Component, Label, cluster()
| stats max('Problem Priority') as 'Problem Priority'
| where 'Problem Priority' != null or 'Potential Issue' = '1'
| eval Error = if(length('Cluster Sample') > 30, substr('Cluster Sample', 0, 30) || ' ...', substr('Cluster Sample', 0, 30))
| classify correlate = -*, Error, Label Component as Trend
| timestats name = 'All Issues' sum(Count) as 'Issue Trend'
| timestats name = 'Issues Trend' sum(Count) as Issues by Component, Error, Label, Node
| fields -'Potential Issue', -Errornúcleos de CPU (utilizados/asignables)
Este widget muestra el porcentaje de núcleos de CPU actualmente en uso en comparación con el total de núcleos asignables en el entorno de Kubernetes. Ofrece una indicación visual rápida de la eficiencia general de utilización de la CPU en todo el cluster.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta:
clusterCPUUtilization[1m]{clusterName = "k8s_solution_development"}.mean()Para ver un ejemplo de consulta con filtros, consulte la consulta del widget Ancho de banda de red.
Memoria (utilizada/asignable)
Muestra el porcentaje de memoria que se está utilizando en comparación con el total de memoria asignable en el cluster. Ayuda a evaluar la presión de memoria y a garantizar que las cargas de trabajo tengan suficientes recursos de memoria.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta:
clusterMemoryUtilization[1m]{clusterName = "k8s_solution_development"}.mean()Para ver un ejemplo de consulta con filtros, consulte la consulta del widget Ancho de banda de red.
núcleos de CPU usados
Muestra el número absoluto de núcleos de CPU que consumen actualmente las cargas de trabajo del cluster. La supervisión ayuda a identificar las tendencias de consumo de CPU y los posibles puntos críticos.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta:
podCpuUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()Memoria utilizada
Indica la cantidad total de memoria (en unidades KB, MB, GB) que se está utilizando actualmente en los recursos del cluster. Esto le ayuda a supervisar las tendencias de memoria para la planificación de la capacidad y la resolución de problemas.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta:
podMemoryUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()Red: recepción de bytes
Muestra el ratio acumulativo o actual de bytes de red recibidos por el cluster o un nodo/pod específico. Esta métrica ayuda a supervisar el volumen de tráfico de red entrante. Ejecute la consulta en el espacio de nombres mgmtagent_kubernetes_metrics.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta de ejemplo:
container_network_receive_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Red: transmisión de bytes
Muestra el ratio acumulativo o actual de bytes de red transmitidos desde el cluster o un nodo/pod específico. Ayuda a rastrear el tráfico saliente y los posibles problemas de salida. Ejecute la consulta en el espacio de nombres mgmtagent_kubernetes_metrics.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta de ejemplo:
container_network_transmit_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Velocidad de recepción de paquetes de red
Indica la velocidad a la que se reciben los paquetes de red. Esto ayuda a identificar tendencias y picos en el volumen de paquetes entrantes que pueden afectar el rendimiento de la red. Ejecute la consulta en el espacio de nombres mgmtagent_kubernetes_metrics.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta de ejemplo:
container_network_receive_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Red: frecuencia de transmisión de paquetes
Mide el ratio de paquetes de red que se envían desde los nodos o pods. Ayuda a diagnosticar la actividad de la red saliente y la posible saturación. Ejecute la consulta en el espacio de nombres mgmtagent_kubernetes_metrics.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta de ejemplo:
container_network_receive_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Red: frecuencia borrada de recepción de paquetes
Muestra el ratio de paquetes de red entrantes borrados debido a problemas como congestión de red o desbordamiento de buffer. Una alta tasa de caída indica posibles problemas de red que requieren atención. Ejecute la consulta en el espacio de nombres mgmtagent_kubernetes_metrics.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta de ejemplo:
“container_network_transmit_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Red: frecuencia borrada de transacción de paquetes
Muestra la velocidad a la que se están descartando los paquetes de red salientes. Los valores altos persistentes pueden sugerir problemas de memoria intermedia de red, configuraciones erróneas o limitaciones de hardware. Ejecute la consulta en el espacio de nombres mgmtagent_kubernetes_metrics.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de métricas
Consulta de ejemplo:
container_network_transmit_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Duración de solicitud de servidor de API
Muestra datos estadísticos (promedio, percentil, etc.) sobre el tiempo que tardan en completarse las solicitudes del servidor de API. Las duraciones más largas pueden indicar cuellos de botella en el servidor de API o problemas de servicio de backend.
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Ninguno
Ámbito: explorador de métricas
Consulta:
apiserver_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll",verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum() / apiserver_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll",verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum()Duración de solicitud etcd
Muestra la latencia implicada en el procesamiento de solicitudes a etcd, el almacén de clave-valor distribuido que respalda a Kubernetes. Las duraciones más altas aquí pueden afectar la capacidad de respuesta general del plano de control.
Separadores: Cluster
Filtros: Ninguno
Ámbito: explorador de métricas
Consulta:
etcd_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(le).sum()/etcd_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll"}.groupBy(le).sum()Total de solicitudes de servidor de API
Muestra el número total de solicitudes recibidas por el servidor de API de Kubernetes durante un período especificado. Los números altos o puntiagudos podrían indicar un aumento de la actividad de gestión del cluster o posibles problemas como sobrecargas de scripts automatizadas.
Separadores: Cluster
Filtros: Ninguno
Ámbito: explorador de métricas
Consulta:
apiserver_request_total[5m]{clusterName = "oke-cw22-ll"}.groupBy(code).rate().filter(x=>x>=0)Tamaño de respuesta de API
Mide el tamaño de las respuestas (en bytes) devueltas por el servidor de API de Kubernetes. Los grandes tamaños de respuesta pueden afectar el uso de la red y el rendimiento del cliente.
Separadores: Cluster
Filtros: Ninguno
Ámbito: explorador de métricas
Consulta:
apiserver_response_sizes_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(verb).sum() / apiserver_response_sizes_count[5m]{clusterName= "oke-cw22-ll"}.groupBy(verb).sum()Duración de ejecución de solicitud de API
Se centra en el tiempo que necesita el servidor de API para procesar y ejecutar las solicitudes entrantes. La supervisión ayuda a detectar la degradación del rendimiento o los servidores de API sobrecargados.
Separadores: Cluster
Filtros: Ninguno
Ámbito: explorador de métricas
Consulta:
apiserver_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll", verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum() / apiserver_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll", verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum()Consultas para la tabla Events de la solución de Kubernetes
Separadores: Cluster, Carga de trabajo, Nodo, Pod
Filtros: Espacio de nombres
Ámbito: explorador de logs
Consulta:
'Log Source' = 'Kubernetes Event Object Logs' and 'Kubernetes Event Action' != deleted
| eval Object = 'Involved Object Kind' || ' - ' || 'Involved Object Name'
| link includenulls = true Object, 'Event Source Component', Event
| rename 'Event Source Component' as Component
| stats latest('Kubernetes Event Action') as Status, unique(Namespace) as Namespace, latest(Reason) as Reason, latest('Event Description') as Message, unique('Event Type') as Type, earliest('First Event Time') as 'First Event Time', latest('Last Event Time') as 'Last Event Time', latest('Event Count') as 'Event Count'
| eventstats count(Namespace) as Records by Namespace
| eval Age = 'Last Event Time' - 'First Event Time'
| createtable name = 'Namespace Summary' select Namespace, Records
| createtable name = 'Namespace Details' select Namespace, Type, Reason, 'Last Event Time', Age, Message, Object, Component
| sort Namespace, -'Last Event Time'
| fields -Event, -'Start Time', -'End Time', -'First Event Time', -CountConsultas para las tablas de detalles y topología de cluster en la solución Kubernetes
Resumen Cargas Trabajo
Separadores: Workload
Filtros: Espacio de nombres, Carga de trabajo
Ámbito: explorador de logs
Consulta:
'Log Source' in ('Kubernetes DaemonSet Object Logs', 'Kubernetes Deployment Object Logs', 'Kubernetes CronJob Object Logs', 'Kubernetes Job Object Logs', 'Kubernetes StatefulSet Object Logs')
| eval Name = if('Log Source' = 'Kubernetes Deployment Object Logs', Deployment, 'Log Source' = 'Kubernetes DaemonSet Object Logs', DaemonSet, 'Log Source' = 'Kubernetes CronJob Object Logs', CronJob, 'Log Source' = 'Kubernetes Job Object Logs', Job, 'Log Source' = 'Kubernetes StatefulSet Object Logs', StatefulSet, null)
| link Namespace, 'Log Source', Name
| eval Type = if('Log Source' = 'Kubernetes Deployment Object Logs', literal(Deployment), 'Log Source' = 'Kubernetes DaemonSet Object Logs', literal(DaemonSet), 'Log Source' = 'Kubernetes CronJob Object Logs', literal(CronJob), 'Log Source' = 'Kubernetes Job Object Logs', literal(Job), 'Log Source' = 'Kubernetes StatefulSet Object Logs', literal(StatefulSet), null)
| addfields [ 'Log Source' = 'Kubernetes Deployment Object Logs'
| eventstats latest('Available Status') as 'DP Available', latest(Replicas) as 'DP Desired', latest('Ready Replicas') as 'DP Ready', latest('Updated Replicas') as 'DP Updated', latest('Available Replicas') as 'DP Available R', latest('Object Creation Time') as 'DP OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes DaemonSet Object Logs'
| eventstats latest('Desired Number Scheduled') as 'DM Desired', latest('Ready Count') as 'DM Ready', latest('Updated Replicas') as 'DM Updated', latest('Current Scheduled') as 'DM Scheduled', latest('Object Creation Time') as 'DM OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes CronJob Object Logs'
| eventstats latest(Schedule) as 'CR Schedule', latest(Suspend) as 'CR Suspended', latest('Last Schedule Time') as 'CR Last Schedule', latest('Object Creation Time') as 'CR OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes Job Object Logs'
| eventstats latest(Completions) as 'JB Completions', latest(Status) as 'JB Status', latest('Object Creation Time') as 'JB OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes StatefulSet Object Logs'
| eventstats latest(Replicas) as 'SS Replicas', latest('Current Replicas') as 'SS Current Replicas', latest('Desired Replicas') as 'SS Desired Replicas', latest('Ready Replicas') as 'SS Ready Replicas', latest('Object Creation Time') as 'SS OCR' by Namespace, Name ]
| eval OCR = if('Log Source' = 'Kubernetes Deployment Object Logs', 'DP OCR', 'Log Source' = 'Kubernetes DaemonSet Object Logs', 'DM OCR', 'Log Source' = 'Kubernetes CronJob Object Logs', 'CR OCR', 'Log Source' = 'Kubernetes Job Object Logs', 'JB OCR', 'Log Source' = 'Kubernetes StatefulSet Object Logs', 'SS OCR', null)
| eval Age = unit('End Time' - OCR, ms) | eval Status = if('Log Source' = 'Kubernetes Deployment Object Logs' and 'DP Available' = true, Available, 'Log Source' = 'Kubernetes DaemonSet Object Logs' and 'DM Desired' = 'DM Ready', Available, 'Log Source' = 'Kubernetes CronJob Object Logs' and 'CR Suspended' = true, Suspended || ' (Last Scheduled: ' || formatDate('CR Last Schedule') || ')', 'Log Source' = 'Kubernetes CronJob Object Logs' and 'CR Suspended' = false, ' Last Scheduled: ' || formatDate('CR Last Schedule'), 'Log Source' = 'Kubernetes Job Object Logs' and 'JB Status' = complete, Complete, 'Log Source' = 'Kubernetes Job Object Logs' and 'JB Status' = failed, Failed, 'Log Source' = 'Kubernetes Job Object Logs', 'JB Status', 'Log Source' = 'Kubernetes StatefulSet Object Logs' and ('SS Desired Replicas' = 'SS Replicas' and 'SS Desired Replicas' = 'SS Ready Replicas'), Available, 'Not Available')
| createtable name = Workloads select Namespace, Type, Name, Status, Age
| fields -'DP *', -'DM *', -'JB *', -'SS *', -OCRResumen de Nodos
Separadores: Nodo
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de logs
Consulta:
'Log Source' = 'Kubernetes Node Object Logs'
| link Node
| stats latest('Ready Status') as 'Ready Status', latest('Ready Reason') as 'Ready Reason', latest('Disk Pressure Status') as 'Disk Pressure', latest('Memory Pressure Status') as 'Memory Pressure', latest('PID Pressure Status') as 'PID Pressure', latest(Architecture) as Arch, latest('Operating System Image') as 'OS Image', latest('Kernel Version') as Kernel, latest('Container Runtime Version') as 'Container Runtime', latest('Kubelet Version') as Kubelet, latest('KubeProxy Version') as KubeProxy, latest('CPU Allocatable') as 'CPU A', latest('CPU Capacity') as 'CPU C', latest('Memory Allocatable') as 'Memory A', latest('Memory Capacity') as 'Memory C'
| eval Status = if('Ready Status' = true, Ready, 'Not Ready')
| eval Issues = if('Disk Pressure' != true and 'Memory Pressure' != true and 'PID Pressure' != true and Status = Ready, 'No Issues', 'Disk Pressure' = true and 'Memory Pressure' = true and 'PID Pressure' = true, 'Low on Disk, Memory and PID', 'Disk Pressure' = true and 'Memory Pressure' = true and 'PID Pressure' != true, 'Low on Disk and Memory', 'Disk Pressure' = true and 'Memory Pressure' != true and 'PID Pressure' = true, 'Low on Disk and PID', 'Disk Pressure' = true and 'Memory Pressure' != true and 'PID Pressure' != true, 'Low on Disk', 'Disk Pressure' != true and 'Memory Pressure' = true and 'PID Pressure' = true, 'Low on Memory and PID', 'Disk Pressure' != true and 'Memory Pressure' = true and 'PID Pressure' != true, 'Low on Memory', 'Disk Pressure' != true and 'Memory Pressure' != true and 'PID Pressure' = true, 'Low on PID', Status = 'Not Ready' and 'Ready Reason' != null, 'Ready Reason', Unknown)
| eval CPU = 'CPU C' || ' / ' || 'CPU A' | eval 'Memory (Capacity)' = unit('Memory C', byte)
| eval 'Memory (Allocatable)' = unit('Memory A', byte)
| eval Age = unit('Query End Time' - 'End Time', ms)
| eval 'Kubelet / KubeProxy Versions' = Kubelet || ' / ' || KubeProxy
| eval OS = 'OS Image' || ' (' || Arch || ') ' || Kernel
| createtable name = 'Node Summary' select Node as Name, Status, Issues, Age, OS, 'Container Runtime', 'Kubelet / KubeProxy Versions', CPU, 'Memory (Capacity)', 'Memory (Allocatable)'Resumen de pod
Separadores: Pod
Filtros: Espacio de nombres, Carga de trabajo, Nodo
Ámbito: explorador de logs
Consulta:
'Log Source' = 'Kubernetes Pod Object Logs'
| link Pod
| stats latest('Pod Phase') as Status, latest(Node) as Node, latest(Namespace) as Namespace, latest('Pod IP Address') as 'Pod IP', latest(Controller) as Controller, latest('Controller Kind') as 'Controller Kind', latest('Scheduler Name') as Scheduler
| createtable name = 'Pod Summary' select Pod as Name, Status, Node, Namespace, 'Pod IP', Controller, 'Controller Kind', Scheduler
| fields 'End Time' as 'Last Reported', -Count