Recopila y consulta las métricas de Kube State Metrics

En esta página, se describe cómo configurar un clúster de Google Kubernetes Engine (GKE) para enviar un conjunto seleccionado de estado de kube, incluidas las métricas de Pods y Deployments, a Cloud Monitoring con Google Cloud Managed Service para Prometheus. En esta página también se describe cómo se formatean estas métricas cuando se escriben en Monitoring y cómo se consultan las métricas.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.

Requisitos

Para recopilar Kube State Metrics, tu clúster de GKE debe cumplir con los siguientes requisitos:

  • El clúster debe ejecutar las siguientes versiones según la métrica que desees habilitar:
    • Para habilitar el paquete de métricas de JobSet, tu clúster debe ejecutar la versión 1.32.1-gke.1357001 o una posterior. A partir de la versión 1.32.1-gke.1357001, el paquete de métricas de JobSet está habilitado de forma predeterminada en los clústeres de GKE Standard y Autopilot recién creados.
    • La métrica kube_jobset_restarts está disponible en los clústeres de la versión 1.32 a partir de la versión 1.32.4-gke.1767000 y en los clústeres de la versión 1.33 a partir de la versión 1.33.0-gke.1868000.
    • Para habilitar cualquier otro paquete de métricas que se describa en esta página, tu clúster debe ejecutar GKE 1.27.2-gke.1200 o una versión posterior. A partir de la versión 1.29.2-gke.2000 para los clústeres de GKE Standard y la versión 1.27.4-gke.900 para los clústeres de GKE Autopilot, el paquete de Kube State Metrics está habilitado de forma predeterminada.
  • El clúster debe tener habilitadas las métricas del sistema.
  • El clúster debe tener habilitada la recopilación administrada de Google Cloud Managed Service para Prometheus. La recopilación administrada de Google Cloud Managed Service para Prometheus está habilitada de forma predeterminada en los clústeres nuevos.

Configura la recopilación de Kube State Metrics

Puedes habilitar las métricas de estado de kube con la Google Cloud consola, gcloud CLI o Terraform:

Console

Puedes habilitar las métricas de estado de kube desde la pestaña Observabilidad para un clúster o una implementación dentro de un clúster. También puedes obtener una vista previa de los gráficos y las métricas disponibles antes de habilitar el paquete de métricas.

En la pestaña Observabilidad de un clúster, puedes filtrar el conjunto de gráficos de las métricas de estado de kube por los siguientes dos elementos:

  • Estado de las cargas de trabajo: incluye las métricas de Pods, Deployments, StatefulSets, DaemonSets y recursos de HorizontalPodAutoscaler.
  • Almacenamiento > Persistente: Incluye las métricas de volúmenes persistentes y reclamaciones de volúmenes persistentes.

Puedes habilitar uno o ambos conjuntos de métricas.

Para habilitar Kube State Metrics desde la pestaña Observabilidad de un clúster, haz lo siguiente:

  1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

    Acceder a los clústeres de Kubernetes

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Kubernetes Engine.

  2. Haz clic en el nombre del clúster y, luego, selecciona la pestaña Observabilidad.

  3. Selecciona Estado de las cargas de trabajo o Almacenamiento > Persistente en la lista de funciones.

  4. Haz clic en Habilitar paquete.

    Si el paquete de Kube State Metrics ya está habilitado, verás un conjunto de gráficos para Kube State Metrics en su lugar.

Para habilitar Kube State Metrics desde la pestaña Observabilidad de un clúster, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Cargas de trabajo:

    Ir a Cargas de trabajo

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Kubernetes Engine.

  2. Haz clic en el nombre de la implementación y, luego, selecciona la pestaña Observabilidad.

  3. Selecciona Estado de Kube de la lista de atributos.

  4. Haz clic en Habilitar paquete. El paquete está habilitado para todo el clúster.

    Si el paquete de métricas de estado de kube ya está habilitado, verás un conjunto de gráficos de métricas de Pods, Deployments y Horizontal Pod Autoscalers.

Para configurar Kube State Metrics desde la pestaña Detalles del clúster, haz lo siguiente:

  1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

    Acceder a los clústeres de Kubernetes

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Kubernetes Engine.

  2. Haz clic en el nombre del clúster.

  3. En la fila Funciones etiquetada como Cloud Monitoring, haz clic en el ícono Editar.

  4. En el cuadro de diálogo Editar Cloud Monitoring que aparecerá, confirma que esté seleccionada la opción Habilitar Cloud Monitoring.

  5. En el menú desplegable Componentes, selecciona los componentes de estado de kube de los que deseas recopilar métricas.

  6. Haz clic en Aceptar.

  7. Haz clic en Guardar cambios.

gcloud

Actualiza tu clúster para recopilar métricas:

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --enable-managed-prometheus \
    --monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE

Reemplaza lo siguiente:

El conjunto de valores proporcionados a la marca monitoring anula cualquier configuración anterior.

Terraform

A fin de configurar la colección de Kube State Metrics mediante Terraform, consulta el bloque monitoring_config en el registro de Terraform para google_container_cluster. Para obtener información general sobre el uso de Google Cloud con Terraform, consulta Terraform con Google Cloud.

Cuota

Las métricas de estado de kube consumen la cuota de solicitudes de transferencia de series temporales por minuto de la API de Cloud Monitoring. Antes de habilitar las métricas de estado de kube, verifica tu uso máximo reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te acercaste al límite de esa cuota, puedes solicitar un aumento del límite de cuota antes de habilitar cualquiera de los paquetes de observabilidad.

Precios

Kube State Metrics usa Google Cloud Managed Service para Prometheus para cargar métricas en Cloud Monitoring. Cloud Monitoring cobra por la transferencia de estas métricas según la cantidad de muestras transferidas.

Para obtener más información, consulta los precios de Cloud Monitoring.

Formato de métrica

Todas las métricas de estado de kube de Kubernetes escritas en Cloud Monitoring usan el tipo de recurso prometheus_target. Cada nombre de métrica tiene el prefijo prometheus.googleapis.com/ y tiene un sufijo que indica el tipo de métrica de Prometheus, como /gauge, /histogram o /counter. De lo contrario, cada nombre de métrica es idéntico al nombre de la métrica que expone Kubernetes de código abierto.

Exporta desde Cloud Monitoring

Las métricas de estado de kube se pueden exportar desde Cloud Monitoring a través de la API de Cloud Monitoring. Debido a que todas las Kube State Metrics se transfieren a través de Google Cloud Managed Service para Prometheus, Kube State Metrics se pueden consultar a través del lenguaje de consulta de Prometheus (PromQL). También se pueden consultar a través del uso del lenguaje de consulta de Monitoring (MQL).

Consulta métricas

Cuando consultas las métricas de estado de kube, el nombre que usas depende de si usas funciones basadas en PromQL o Cloud Monitoring, como MQL o la interfaz controlada por menú del Explorador de métricas.

En las siguientes tablas de métricas de estado de kube, se muestran dos versiones de cada nombre de métrica:

  • Nombre de la métrica de PromQL: Cuando usas PromQL en páginas de Cloud Monitoring de la consola de Google Cloud o en campos de PromQL de la API de Cloud Monitoring, usa el nombre de la métrica de PromQL.
  • Nombre de la métrica de Cloud Monitoring Cuando uses otras funciones de Cloud Monitoring, usa el nombre de la métrica de Cloud Monitoring en las tablas que aparecen a continuación. Este nombre debe tener el prefijo prometheus.googleapis.com/, que se omitió en las entradas de la tabla.

Métricas de almacenamiento

Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_persistentvolume_capacity_bytes
kube_persistentvolume_capacity_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Capacidad de PersistentVolume en bytes. Se tomaron muestras cada 30 segundos.

persistentvolume: persistentvolume.
kube_persistentvolume_claim_ref
kube_persistentvolume_claim_ref/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Información sobre la referencia de la reclamación del volumen persistente. Se tomaron muestras cada 30 segundos.

claim_name: claim_name.
name: nombre.
persistentvolume: persistentvolume.
kube_persistentvolume_info
kube_persistentvolume_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Información sobre persistentvolume. Se tomaron muestras cada 30 segundos.

csi_driver: csi_driver.
csi_volume_handle: csi_volume_handle.
local_fs: local_fs.
local_path: local_path.
persistentvolume: persistentvolume.
storageclass: storageclass.
kube_persistentvolume_status_phase
kube_persistentvolume_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La fase indica si un volumen está disponible, vinculado a una reclamación o liberado por una reclamación. Se tomaron muestras cada 30 segundos.

persistentvolume: persistentvolume.
phase: fase.
kube_persistentvolumeclaim_info
kube_persistentvolumeclaim_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Información sobre la reclamación del volumen persistente. Se tomaron muestras cada 30 segundos.

persistentvolumeclaim: persistentvolumeclaim.
storageclass: storageclass.
volumename: volumename.
kube_persistentvolumeclaim_resource_requests_storage_bytes
kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
La capacidad de almacenamiento solicitada por la reclamación del volumen persistente. Se tomaron muestras cada 30 segundos.

persistentvolumeclaim: persistentvolumeclaim.
kube_persistentvolumeclaim_status_phase
kube_persistentvolumeclaim_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La fase en la que se encuentra la reclamación de volumen persistente. Se tomaron muestras cada 30 segundos.

persistentvolumeclaim: persistentvolumeclaim.
phase: fase.

Para obtener más información, consulta Métricas de PersistentVolume y Métricas de PersistentVolumeClaim.

Métricas del pod

Un Pod es un grupo de uno o más contenedores con una especificación sobre cómo ejecutar los contenedores, que comparten recursos de almacenamiento y de red.

Tabla de métricas del Pod

Las métricas de pod te permiten supervisar y alertar sobre el comportamiento de tus Pods. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics.

Los nombres de las métricas de Cloud Monitoring que figuran en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_pod_container_status_ready
kube_pod_container_status_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Describe si la verificación de preparación de contenedores se realizó de forma correcta. Se tomaron muestras cada 30 segundos.

container: contenedor.
pod: Pod.
uid: UID.
kube_pod_container_status_waiting_reason
kube_pod_status_container_status_waiting_reason/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Describe el motivo por el que el contenedor está en estado de espera. Se tomaron muestras cada 30 segundos.

container: contenedor.
pod: Pod.
reason: motivo.
uid: UID.
kube_pod_status_phase
kube_pod_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La fase actual de los Pods. Se tomaron muestras cada 30 segundos.

phase: fase.
pod: Pod.
uid: UID.
kube_pod_status_unschedulable
kube_pod_status_unschedulable/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Describe el estado no programable para el Pod. Se tomaron muestras cada 30 segundos.

pod: Pod.
uid: uid.

Para obtener más información, consulta Métricas de Pod.

Consultas de muestra para las métricas de Pod

Para determinar si tienes Pods que no se pueden programar, usa la siguiente expresión de PromQL:

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})

Para alertar sobre una cantidad de Pods no programables en un espacio de nombres, puedes usar la siguiente expresión de PromQL:

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT

Puedes usar la métrica kube_pod_container_status_waiting_reason para crear una alerta para un contenedor atascado en un estado de espera específico a través de una expresión PromQL como la siguiente:

max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

El valor de REASON especifica el estado de espera del contenedor, por ejemplo:

  • CrashLoopBackOff
  • ImagePullBackOff
  • ContainerCreating

Para crear una alerta para un contenedor atascado en cualquiera de los estados de espera, usa la siguiente expresión PromQL:

max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

Para determinar cuántos contenedores fallan en las verificaciones de preparación, usa la siguiente expresión de PromQL:

sum(kube_pod_container_status_ready) by (pod, container) == 0

Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.

Guías interactivas

Las Kube State Metrics también se usan en las guías interactivas de GKE para solucionar problemas relacionados con Pods no programables o en bucle de fallas. Para obtener más información sobre estos modos de falla, consulta los siguientes documentos de solución de problemas:

Sin el paquete Kube State Metrics habilitado, el método principal para detectar problemas de programación de Pods es consultar los eventos de registro “Error de programación”. Después de habilitar el paquete Kube State Metrics, puedes usar la métrica kube_pod_status_unschedulable, que tiene el mismo propósito, pero es más fácil de agregar y representar. Si usas la métrica, puedes ver cuántos Pods no son programables y cuándo comenzó el problema.

Del mismo modo, la métrica del sistema de GKE kubernetes.io/container/restart_count puede ayudarte a detectar Pods en bucle de fallas. La métrica kube_pod_container_status_waiting_reason también enumera los Pods en bucle de fallas y también te permite determinar si los Pods están atascados en estados de espera distintos de CrashLookBackOff, como ImagePullBackOff y ContainerCreating.

Para explorar las guías interactivas, haz lo siguiente:

  1. En la consola de Google Cloud , accede a la página Paneles :

    Acceder a Paneles

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Para filtrar la lista del panel, haz clic en la categoría G​C​P.
  3. Haz clic en el nombre de un panel de "Guía interactiva de GKE" en la lista.

Métricas de implementación

Un Deployment es un controlador que actualiza el estado de los recursos, como los Pods, para administrar eventos como los lanzamientos y las desactivaciones.

Tabla de métricas de Deployment

Las métricas de Deployment te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:

Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_deployment_spec_replicas
kube_deployment_spec_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Cantidad de Pods deseados para una implementación. Se tomaron muestras cada 30 segundos.

deployment: implementación.
kube_deployment_status_replicas_available
kube_deployment_status_replicas_available/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de réplicas disponibles por implementación. Se tomaron muestras cada 30 segundos.

deployment: implementación.
kube_deployment_status_replicas_updated
kube_deployment_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de réplicas actualizadas por implementación. Se tomaron muestras cada 30 segundos.

deployment: implementación.

Para obtener más información, consulta Métricas de implementación.

Consultas de muestra para las métricas de Deployment

Para crear gráficos y políticas de alertas para implementaciones individuales, filtra las métricas de implementación por clúster, espacio de nombres y el nombre del Deployment.

Por ejemplo, para comparar la cantidad de réplicas disponibles con la cantidad esperada de réplicas en una sola implementación, puedes usar las siguientes consultas de PromQL para trazar ambas métricas en un solo gráfico:

kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
y
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}

Para alertar sobre una implementación fallida o detenida, puedes usar la siguiente expresión de PromQL:

(
  kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
    >
  kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
) and (
  changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m])
    ==
  0
)

Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.

Métricas de StatefulSet

Un StatefulSet es un controlador que administra la implementación y el escalamiento de un conjunto de Pods para aplicaciones con estado. Este controlador administra el orden y la singularidad de los Pods.

Tabla de métricas de StatefulSet

Las métricas de StatefulSet te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:

Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_statefulset_replicas
kube_statefulset_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Cantidad de Pods deseados para StatefulSet. Se tomaron muestras cada 30 segundos.

statefulset: statefulset.
kube_statefulset_status_replicas_ready
kube_statefulset_status_replicas_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de réplicas listas por StatefulSet. Se tomaron muestras cada 30 segundos.

statefulset: statefulset.
kube_statefulset_status_replicas_updated
kube_statefulset_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de réplicas actualizadas por StatefulSet. Se tomaron muestras cada 30 segundos.

statefulset: statefulset.

Para obtener más información, consulta Métricas de StatefulSet.

Consultas de muestra para las métricas de StatefulSet

Para crear gráficos y políticas de alertas para StatefulSets individuales, filtra las métricas de StatefulSet por clúster, espacio de nombres y el nombre del StatefulSet.

Por ejemplo, para comparar la cantidad de réplicas disponibles con la cantidad esperada de réplicas en un solo StatefulSet, puedes usar las siguientes consultas de PromQL para trazar ambas métricas en un solo gráfico:

kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
y
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}

Para alertar sobre un lanzamiento de StatefulSet fallido o detenido, puedes usar la siguiente expresión de PromQL:

(
  kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
    >
  kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
) and (
  changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m])
    ==
  0
)

Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.

Métricas de DaemonSet

Un DaemonSet es un controlador que garantiza que un conjunto de nodos ejecute una copia de un Pod. Por ejemplo, a medida que se agregan nodos a un clúster, el DaemonSet agrega pods a los nodos. Este controlador es útil para garantizar que ciertos procesos se ejecuten en cada nodo.

Tabla de métricas de DaemonSet

Las métricas de DaemonSet te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:

Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_daemonset_status_desired_number_scheduled
kube_daemonset_status_desired_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de nodos que deberían ejecutar el Pod de daemon. Se tomaron muestras cada 30 segundos.

daemonset: daemonset.
kube_daemonset_status_number_misscheduled
kube_daemonset_status_number_misscheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Es la cantidad de nodos que ejecutan un Pod de daemon, pero no deberían hacerlo. Se tomaron muestras cada 30 segundos.

daemonset: daemonset.
kube_daemonset_status_number_ready
kube_daemonset_status_number_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de nodos que deben ejecutar el Pod de daemon y que deben tener uno o más Pod de daemon en ejecución y listos. Se tomaron muestras cada 30 segundos.

daemonset: daemonset.
kube_daemonset_status_updated_number_scheduled
kube_daemonset_status_updated_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La cantidad de nodos que ejecutan el Pod de daemon actualizado. Se tomaron muestras cada 30 segundos.

daemonset: daemonset.

Para obtener más información, consulta Métricas de DaemonSet.

Consultas de muestra para las métricas de DaemonSet

Para crear gráficos y políticas de alertas para DaemonSets individuales, filtra las métricas de DaemonSet por clúster, espacio de nombres y el nombre del DaemonSet.

Por ejemplo, para comparar la cantidad de réplicas disponibles con la cantidad esperada de réplicas en un solo DaemonSet, puedes usar las siguientes consultas de PromQL para trazar ambas métricas en un solo gráfico:

kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
y
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}

Para alertar sobre un lanzamiento de DaemonSet fallida o detenida, puedes usar la siguiente expresión de PromQL:

(
  (
    kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    0
  ) or (
    kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
  )
) and (
  changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m])
    ==
  0
)

Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.

Métricas de HorizontalPodAutoscaler

Un HorizontalPodAutoscaler (HPA) es un controlador que cambia periódicamente la cantidad de Pods en una carga de trabajo, como una Deployment o un StatefulSet, en respuesta a alguna métrica, como el uso de CPU o memoria. Cambiar la cantidad de pods disponibles para una carga de trabajo mantiene la carga de trabajo receptiva y eficiente.

Para obtener más información sobre los HPA, consulta Visualiza detalles sobre un escalador automático horizontal de Pods.

Tabla de métricas del HPA

Las métricas de HorizontalPodAutoscaler te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:

Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_horizontalpodautoscaler_spec_max_replicas
kube_horizontalpodautoscaler_spec_max_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
El límite superior de la cantidad de Pods que puede establecer el escalador automático no puede ser menor que el de MinReplicas. Se tomaron muestras cada 30 segundos.

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_min_replicas
kube_horizontalpodautoscaler_spec_min_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Límite más bajo para la cantidad de Pods que puede establecer el escalador automático, con 1 como configuración predeterminada. Se tomaron muestras cada 30 segundos.

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_target_metric
kube_horizontalpodautoscaler_spec_target_metric/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Las especificaciones de métrica que se usan en este escalador automático cuando se calcula el recuento de réplicas deseado. Se tomaron muestras cada 30 segundos.

horizontalpodautoscaler: horizontalpodautoscaler.
metric_name: metric_name.
metric_target_type: metric_target_type.
kube_horizontalpodautoscaler_status_condition
kube_horizontalpodautoscaler_status_condition/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La condición de este escalador automático. Se tomaron muestras cada 30 segundos.

condition: condición.
horizontalpodautoscaler: horizontalpodautoscaler.
namespace: namespace.
status: estado.
kube_horizontalpodautoscaler_status_current_replicas
kube_horizontalpodautoscaler_status_status_current_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Cantidad actual de réplicas de Pods que administra este escalador automático. Se tomaron muestras cada 30 segundos.

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_status_desired_replicas
kube_horizontalpodautoscaler_status_desired_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Cantidad deseada de réplicas de Pods que administra este escalador automático. Se tomaron muestras cada 30 segundos.

horizontalpodautoscaler: horizontalpodautoscaler.

Para obtener más información, consulta Métricas del Horizontal Pod Autoscaler.

Consultas de muestra para las métricas de HPA

Por ejemplo, para determinar si el HPA se acerca a la cantidad máxima de réplicas, puedes generar un gráfico con la siguiente proporción:

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} /
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

Cuando el HPA se ejecuta con la cantidad máxima de réplicas, es posible que desees aumentar la especificación para la cantidad máxima de Pods. Puedes usar la siguiente expresión de PromQL para crear una alerta que te notifique sobre este caso:

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
  ==
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

También puedes comparar los valores de las métricas kube_horizontalpodautoscaler_status_current_replicas y kube_horizontalpodautoscaler_status_desired_replicas para determinar si hay una diferencia entre la cantidad actual y la necesaria de réplicas. Una diferencia puede indicar una restricción de recursos en el clúster. La siguiente expresión de PromQL busca diferencias entre la cantidad actual de réplicas y las cantidades necesarias, mínimas y máximas de réplicas, así como cambios en la cantidad actual de réplicas:

(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  !=
kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  >
kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  <
kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0

Las etiquetas condition y status en la métrica kube_horizontalpodautoscaler_status_condition también pueden ayudarte a detectar cuándo los HPA experimentan varios modos de falla. Por ejemplo:

  • La condición ScalingLimited y el estado de true indican que el HPA está limitado por su recuento mínimo o máximo de réplicas:
    kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
  • La condición AbleToScale y el estado false indican que el HPA tiene problemas para recuperar o actualizar las escalas:

    kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1

  • La condición ScalingActive y el estado false indican que el HPA está inhabilitado o no puede calcular una nueva escala:

    kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1

Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.

Métricas de JobSet

Un Jobset es una API de cargas de trabajo que te permite administrar un grupo de objetos Job de Kubernetes como una unidad. El caso de uso más común de un JobSet es el entrenamiento distribuido, pero también puedes usarlo para ejecutar cargas de trabajo por lotes.

Para obtener más información sobre los JobSets, consulta la documentación de JobSet.

Tabla de métricas de JobSet

Las métricas de JobSet te permiten supervisar y alertar sobre el comportamiento de tus JobSets. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:

Los nombres de las métricas de Cloud Monitoring que figuran en esta tabla deben tener el prefijo prometheus.googleapis.com/. Este prefijo se omitió en las entradas de la tabla.

Nombre de la métrica de PromQL
Nombre de la métrica de Cloud Monitoring
Categoría, tipo, unidad
Recursos supervisados
Versión de GKE requerida
Descripción
Etiquetas
kube_jobset_specified_replicas
kube_jobset_specified_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Es la cantidad de réplicas especificadas por trabajos replicados en un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_ready_replicas
kube_jobset_ready_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Es la cantidad de réplicas en estado "LISTO" por trabajos replicados en un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_succeeded_replicas
kube_jobset_succeeded_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Es la cantidad de réplicas en estado "SUCCEEDED" por trabajos replicados en un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_failed_replicas
kube_jobset_failed_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Es la cantidad de réplicas en estado "FAILED" por trabajos replicados en un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_active_replicas
kube_jobset_active_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Es la cantidad de réplicas en estado "ACTIVE" por trabajos replicados en un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_suspended_replicas
kube_jobset_suspended_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Es la cantidad de réplicas en estado "SUSPENDED" por trabajos replicados en un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_status_condition
kube_jobset_status_condition/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Son las condiciones de estado actuales de un JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.
condition: condición.
kube_jobset_restarts
kube_jobset_restarts/gauge
GAUGEDOUBLE1
prometheus_target
1.32.4-gke.1767000
1.33.0-gke.1868000
Es la cantidad de reinicios de JobSet. Se tomaron muestras cada 30 segundos.

jobset_name: jobset_name.

Consultas de muestra para las métricas de JobSet

Para crear gráficos y políticas de alertas para JobSets individuales, filtra las métricas de JobSet por clúster, espacio de nombres y el nombre del JobSet.

Por ejemplo, para comparar la cantidad de réplicas en un estado READY con la cantidad esperada de réplicas en un solo JobSet, traza ambas métricas en un solo gráfico con las siguientes consultas de PromQL:

kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
y
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}

Para alertar sobre un lanzamiento de JobSet fallido o no disponible, puedes usar la siguiente expresión de PromQL:

kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
  >
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}

La etiqueta condition en la métrica kube_jobset_status_condition también puede ayudarte a detectar cuándo los JobSets experimentan varios modos de falla, por ejemplo:

  • La condición Failed indica que el JobSet no pudo ejecutar su trabajo:
    kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Failed"} == 1
  • La condición Suspended indica que el JobSet está suspendido:
    kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Suspended"} == 1

Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.