En esta página se describe cómo configurar un clúster de Google Kubernetes Engine (GKE) para enviar un conjunto seleccionado de estados de kube, incluidas las métricas de pods y de implementaciones, a Cloud Monitoring mediante Google Cloud Managed Service para Prometheus. En esta página también se describe cómo se da formato a estas métricas cuando se escriben en Monitoring y cómo se consultan.
Antes de empezar
Antes de empezar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Requisitos
Para recoger métricas de estado de kube, tu clúster de GKE debe cumplir los siguientes requisitos:
- El clúster debe ejecutar las siguientes versiones en función de la métrica que quieras habilitar:
- Para habilitar el paquete de métricas 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 JobSet está habilitado de forma predeterminada en los clústeres estándar y Autopilot de GKE que se creen.
- La métrica
kube_jobset_restarts
está disponible en los clústeres 1.32 a partir de la versión 1.32.4-gke.1767000 y en los clústeres 1.33 a partir de la versión 1.33.0-gke.1868000. - Para habilitar cualquier otro paquete de métricas descrito 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 clústeres de GKE Standard y de la versión 1.27.4-gke.900 para clústeres de GKE Autopilot, el paquete de métricas de estado de Kube está habilitado de forma predeterminada.
- El clúster debe tener habilitadas las métricas del sistema.
- El clúster debe tener habilitada la recogida gestionada de Google Cloud Managed Service para Prometheus. La recogida gestionada de Google Cloud Managed Service para Prometheus está habilitada de forma predeterminada en los clústeres nuevos.
Configurar la recogida de métricas de estado de kube
Puedes habilitar las métricas de estado de kube con la Google Cloud consola, la CLI de gcloud o Terraform:
Consola
Puedes habilitar las métricas de estado de kube desde la pestaña Observabilidad de un clúster o de un Deployment de un clúster. También puede 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, puede filtrar el conjunto de gráficos de métricas de estado de kube por los dos elementos siguientes:
- Estado de las cargas de trabajo: incluye las métricas de los recursos Pods, Deployments, StatefulSets, DaemonSets y HorizontalPodAutoscaler.
- Almacenamiento > Persistente: incluye las métricas de volúmenes persistentes y reclamaciones de volumen persistente.
Puede habilitar uno o ambos conjuntos de métricas.
Para habilitar las métricas de estado de kube desde la pestaña Observabilidad de un clúster, sigue estos pasos:
-
En la Google Cloud consola, ve a la página Clústeres de Kubernetes:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Kubernetes Engine.
Haz clic en el nombre de tu clúster y, a continuación, selecciona la pestaña Observabilidad.
Selecciona Estado de las cargas de trabajo o Almacenamiento > Persistente en la lista de funciones.
Haz clic en Habilitar paquete.
Si el paquete de métricas de estado de Kube ya está habilitado, verás un conjunto de gráficos de métricas de estado de Kube.
Para habilitar las métricas de estado de kube desde la pestaña Observabilidad de una implementación, haz lo siguiente:
-
En la Google Cloud consola, ve a la página Cargas de trabajo:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Kubernetes Engine.
Haz clic en el nombre de tu implementación y, a continuación, selecciona la pestaña Observabilidad.
Selecciona Estado de Kube en la lista de funciones.
Haz clic en Habilitar paquete. El paquete está habilitado en 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, implementaciones y autoescaladores horizontales de pods.
Para configurar las métricas de estado de kube desde la pestaña Detalles del clúster, haz lo siguiente:
-
En la Google Cloud consola, ve a la página Clústeres de Kubernetes:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Kubernetes Engine.
Haz clic en el nombre de tu clúster.
En la fila Funciones, busque la opción Cloud Monitoring y haga clic en el icono Editar.
En el cuadro de diálogo Editar monitorización en la nube que aparece, confirma que la opción Habilitar monitorización en la nube esté seleccionada.
En el menú desplegable Componentes, selecciona los componentes de estado de kube de los que quieras recoger métricas.
Haz clic en Aceptar.
Haz clic en Guardar cambios.
gcloud
Actualiza tu clúster para recoger métricas:
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--enable-managed-prometheus \
--monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.COMPUTE_LOCATION
: la ubicación de Compute Engine del clúster.
El conjunto de valores proporcionado a la marca monitoring
anula cualquier ajuste anterior.
Terraform
Para configurar la recogida de métricas de estado de kube mediante Terraform, consulta el bloque monitoring_config
en el registro de Terraform de 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 Solicitudes de ingestión de series temporales por minuto de la API de Cloud Monitoring. Antes de habilitar las métricas de estado de kube, consulta el pico de uso reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te estás acercando a ese límite de cuota, puedes solicitar un aumento del límite de cuota antes de habilitar cualquiera de los paquetes de observabilidad.
Precios
Las métricas de estado de Kube usan Google Cloud Managed Service para Prometheus para cargar métricas en Cloud Monitoring. Los cargos de Cloud Monitoring por la ingestión de estas métricas se basan en el número de muestras ingeridas.
Para obtener más información, consulta los precios de Cloud Monitoring.
Formato de la 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 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 métrica expuesto por Kubernetes de código abierto.
Exportar datos de Cloud Monitoring
Las métricas de estado de kube se pueden exportar desde Cloud Monitoring mediante la API de Cloud Monitoring. Como todas las métricas de estado de kube se ingieren mediante Google Cloud Managed Service para Prometheus, se pueden consultar con el lenguaje de consulta de Prometheus (PromQL). También se pueden consultar con Monitoring Query Language (MQL).
Consultar métricas
Cuando consultas métricas de estado de kube, el nombre que usas depende de si utilizas PromQL o funciones basadas en Cloud Monitoring, como MQL o la interfaz basada en menús 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 métrica de PromQL: cuando uses PromQL en las páginas de Cloud Monitoring de la Google Cloud consola o en los campos de PromQL de la API de Cloud Monitoring, usa el nombre de métrica de PromQL.
- Nombre de la métrica de Cloud Monitoring: cuando uses otras funciones de Cloud Monitoring, utiliza el nombre de la métrica de Cloud Monitoring que aparece en las tablas de abajo. Este nombre debe ir precedido de
prometheus.googleapis.com/
, que se ha omitido en las entradas de la tabla.
Métricas de almacenamiento
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_persistentvolume_capacity_bytes kube_persistentvolume_capacity_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
Capacidad de PersistentVolume en bytes.
Se muestrea cada 30 segundos.persistentvolume : persistentvolume.
|
kube_persistentvolume_claim_ref kube_persistentvolume_claim_ref/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Información sobre la referencia de reclamación de volumen persistente.
Se muestrea cada 30 segundos.claim_name : claim_name.
name : nombre.
persistentvolume : persistentvolume.
|
kube_persistentvolume_info kube_persistentvolume_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Información sobre persistentvolume.
Se muestrea 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
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La fase indica si un volumen está disponible, enlazado a una reclamación o liberado por una reclamación.
Se muestrea cada 30 segundos.persistentvolume : persistentvolume.
phase : fase.
|
kube_persistentvolumeclaim_info kube_persistentvolumeclaim_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Información sobre la reclamación de volumen persistente.
Se muestrea cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
storageclass : storageclass.
volumename : nombrevolumen.
|
kube_persistentvolumeclaim_resource_requests_storage_bytes kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
Capacidad de almacenamiento solicitada por la reclamación de volumen persistente.
Se muestrea cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
|
kube_persistentvolumeclaim_status_phase kube_persistentvolumeclaim_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La fase en la que se encuentra la reclamación de volumen persistente.
Se muestrea cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
phase : fase.
|
Para obtener más información, consulta las métricas de PersistentVolume y PersistentVolumeClaim.
Métricas de pod
Un pod es un grupo de uno o varios contenedores con una especificación de cómo ejecutar los contenedores, que comparten almacenamiento y recursos de red.
Tabla de métricas de pods
Las métricas de Pod te permiten monitorizar el comportamiento de tus pods y recibir alertas sobre ellos. En la siguiente tabla se muestran las métricas disponibles en el paquete kube-state-metrics.
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_pod_container_status_ready kube_pod_container_status_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Describe si la comprobación de disponibilidad de los contenedores se ha realizado correctamente.
Se muestrea cada 30 segundos.container : container.
pod : pod.
uid : uid.
|
kube_pod_container_status_waiting_reason kube_pod_status_container_status_waiting_reason/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Describe el motivo por el que el contenedor está en estado de espera.
Se muestrea cada 30 segundos.container : container.
pod : pod.
reason : motivo.
uid : uid.
|
kube_pod_status_phase kube_pod_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Fase actual de los pods. Se muestrea cada 30 segundos.phase : fase.
pod : pod.
uid : uid.
|
kube_pod_status_unschedulable kube_pod_status_unschedulable/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Describe el estado de no programable del pod.
Se muestrea cada 30 segundos.pod : pod.
uid : uid.
|
Para obtener más información, consulta Métricas de pods.
Consultas de ejemplo de métricas de pods
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 recibir una alerta sobre el número de pods no programables de 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 que se haya quedado bloqueado en un estado de espera específico. Para ello, usa 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 que esté bloqueado en cualquiera de los estados de espera, usa la siguiente expresión de PromQL:
max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Para determinar cuántos contenedores no superan las comprobaciones de disponibilidad, 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 han adaptado del archivo kubernetes-apps.yaml
del repositorio de gráficos de Helm de Kubernetes de la comunidad de Prometheus en GitHub.
Guías interactivas
Las métricas de estado de Kube también se usan en los cuadernos interactivos de GKE para solucionar problemas de pods que no se pueden programar o que están en bucle de fallos. Para obtener más información sobre estos modos de fallo, consulta los siguientes documentos de solución de problemas:
Si el paquete de métricas de estado de kube no está habilitado, la forma principal de detectar problemas de programación de pods es consultar los eventos de registro "Failed Scheduling" (Programación fallida). Después de habilitar el paquete de métricas de estado de kube, puede usar la métrica kube_pod_status_unschedulable
, que tiene el mismo propósito, pero es más fácil de agregar y representar en gráficos. Con esta métrica, puedes ver cuántos pods no se pueden programar y cuándo empezó 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 fallos. La métrica kube_pod_container_status_waiting_reason
también enumera los pods en bucle de fallos y te permite determinar si los pods están bloqueados en estados de espera distintos de CrashLookBackOff
, como ImagePullBackOff
y ContainerCreating
.
Para consultar las guías interactivas, sigue estos pasos:
-
En la Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- Filtra la lista de paneles de control haciendo clic en la categoría GCP.
- En la lista, haz clic en el nombre de un panel de control "GKE Interactive Playbook".
Recibirás métricas sobre el despliegue.
Un Deployment es un controlador que actualiza el estado de recursos como los pods para gestionar eventos como los lanzamientos y las desactivaciones.
Tabla de métricas de despliegue
Las métricas de implementación te permiten monitorizar el comportamiento del controlador y recibir alertas sobre él. En la siguiente tabla se muestran las métricas disponibles en el paquete de métricas de estado de kube:
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_deployment_spec_replicas kube_deployment_spec_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de pods deseados para un despliegue. Se muestrea cada 30 segundos.deployment : deployment.
|
kube_deployment_status_replicas_available kube_deployment_status_replicas_available/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de réplicas disponibles por despliegue. Se muestrea cada 30 segundos.deployment : deployment.
|
kube_deployment_status_replicas_updated kube_deployment_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de réplicas actualizadas por despliegue. Se muestrea cada 30 segundos.deployment : deployment.
|
Para obtener más información, consulta Métricas de implementación.
Consultas de ejemplo de métricas de implementación
Puedes crear gráficos y políticas de alertas para implementaciones concretas filtrando las métricas de implementación por clúster, espacio de nombres y nombre de la implementación.
Por ejemplo, para comparar el número de réplicas disponibles con el número esperado de réplicas en una sola implementación, puedes usar las siguientes consultas de PromQL para representar ambas métricas en un solo gráfico:
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
Para recibir alertas 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 han adaptado del archivo kubernetes-apps.yaml
del repositorio de gráficos de Helm de Kubernetes de la comunidad de Prometheus en GitHub.
Métricas de StatefulSet
Un StatefulSet es un controlador que gestiona el despliegue y el escalado de un conjunto de pods para aplicaciones con estado. Este controlador gestiona el orden y la unicidad de los pods.
Tabla de métricas de StatefulSet
Las métricas de StatefulSet te permiten monitorizar y recibir alertas sobre el comportamiento del controlador. En la siguiente tabla se muestran las métricas disponibles en el paquete de métricas de estado de kube:
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_statefulset_replicas kube_statefulset_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de pods deseados de un StatefulSet. Se muestrea cada 30 segundos.statefulset : statefulset.
|
kube_statefulset_status_replicas_ready kube_statefulset_status_replicas_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de réplicas listas por StatefulSet. Se muestrea cada 30 segundos.statefulset : statefulset.
|
kube_statefulset_status_replicas_updated kube_statefulset_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de réplicas actualizadas por StatefulSet. Se muestrea cada 30 segundos.statefulset : statefulset.
|
Para obtener más información, consulta Métricas de StatefulSet.
Consultas de ejemplo de métricas de StatefulSet
Puedes crear gráficos y políticas de alertas para StatefulSets concretos filtrando las métricas de StatefulSet por clúster, espacio de nombres y nombre del StatefulSet.
Por ejemplo, para comparar el número de réplicas disponibles con el número esperado de réplicas en un solo StatefulSet, puedes usar las siguientes consultas de PromQL para representar ambas métricas en un solo gráfico:
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
Para recibir una alerta cuando se produzca un error o se detenga el lanzamiento de un StatefulSet, 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 han adaptado del archivo kubernetes-apps.yaml
del repositorio de gráficos de Helm de Kubernetes de la comunidad de Prometheus en GitHub.
Métricas de DaemonSet
Un DaemonSet es un controlador que se asegura de que un conjunto de nodos ejecute una copia de un pod. Por ejemplo, a medida que se añaden nodos a un clúster, DaemonSet añade pods a los nodos. Este controlador es útil para asegurarse de que determinados procesos se ejecuten en todos los nodos.
Tabla de métricas de DaemonSet
Las métricas de DaemonSet te permiten monitorizar y recibir alertas sobre el comportamiento del controlador. En la siguiente tabla se muestran las métricas disponibles en el paquete de métricas de estado de kube:
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_daemonset_status_desired_number_scheduled kube_daemonset_status_desired_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de nodos que deben ejecutar el pod de daemon.
Se muestrea cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_number_misscheduled kube_daemonset_status_number_misscheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de nodos que ejecutan un pod de daemon, pero no deberían hacerlo. Se muestrea cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_number_ready kube_daemonset_status_number_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
El número de nodos que deben ejecutar el pod de daemon y tener
uno o varios pods de daemon en ejecución y listos. Se muestrea cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_updated_number_scheduled kube_daemonset_status_updated_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de nodos que ejecutan el pod de daemon actualizado.
Se muestrea cada 30 segundos.daemonset : daemonset.
|
Para obtener más información, consulta Métricas de DaemonSet.
Consultas de ejemplo de métricas de DaemonSet
Puede crear gráficos y políticas de alertas para DaemonSets concretos filtrando las métricas de DaemonSet por clúster, espacio de nombres y nombre de DaemonSet.
Por ejemplo, para comparar el número de réplicas disponibles con el número esperado de réplicas en un solo DaemonSet, puedes usar las siguientes consultas de PromQL para representar ambas métricas en un solo gráfico:
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}
Para recibir alertas cuando se produzca un error o se detenga el lanzamiento de un DaemonSet, 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 han adaptado del archivo kubernetes-apps.yaml
del repositorio de gráficos de Helm de Kubernetes de la comunidad de Prometheus en GitHub.
Métricas de HorizontalPodAutoscaler
Un HorizontalPodAutoscaler (HPA) es un controlador que cambia periódicamente el número de pods de una carga de trabajo, como un Deployment o un StatefulSet, en respuesta a alguna métrica, como el uso de la CPU o la memoria. Si cambias el número de pods disponibles para una carga de trabajo, esta seguirá respondiendo, pero será eficiente.
Para obtener más información sobre los HPA, consulta Ver detalles sobre un escalador automático horizontal de pods.
Tabla de métricas de HPA
Las métricas de HorizontalPodAutoscaler te permiten monitorizar y recibir alertas sobre el comportamiento del controlador. En la siguiente tabla se muestran las métricas disponibles en el paquete de métricas de estado de kube:
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_horizontalpodautoscaler_spec_max_replicas kube_horizontalpodautoscaler_spec_max_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Límite superior del número de pods que puede definir el escalador automático.
No puede ser inferior a MinReplicas.
Se muestrea cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_min_replicas kube_horizontalpodautoscaler_spec_min_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Límite inferior del número de pods que puede definir la herramienta de adaptación dinámica. El valor predeterminado es 1.
Se muestrea cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_target_metric kube_horizontalpodautoscaler_spec_target_metric/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Las especificaciones de las métricas que usa este escalador automático al calcular el número de réplicas deseado.
Se muestrea cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
metric_name : nombre_métrica.
metric_target_type : metric_target_type.
|
kube_horizontalpodautoscaler_status_condition kube_horizontalpodautoscaler_status_condition/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
El estado de este escalador automático.
Se muestrea cada 30 segundos.condition : condición.
horizontalpodautoscaler : horizontalpodautoscaler.
namespace : espacio de nombres.
status : estado.
|
kube_horizontalpodautoscaler_status_current_replicas kube_horizontalpodautoscaler_status_status_current_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número actual de réplicas de pods gestionadas por este escalador automático.
Se muestrea cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_status_desired_replicas kube_horizontalpodautoscaler_status_desired_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número deseado de réplicas de los pods gestionados por este escalador automático.
Se muestrea cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
Para obtener más información, consulta Métricas de la herramienta de adaptación dinámica de pods horizontal.
Consultas de ejemplo de métricas de HPA
Por ejemplo, para determinar si el HPA se acerca al número máximo de réplicas, puedes representar gráficamente 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 el número máximo de réplicas, puede que quieras aumentar la especificación del número máximo de pods. Puedes usar la siguiente expresión de PromQL para crear una alerta que te avise en 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 puede 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 el número actual y el necesario 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 el número actual de réplicas y el número de réplicas necesario, mínimo y máximo, así como los cambios en el número 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
de la métrica kube_horizontalpodautoscaler_status_condition
también pueden ayudarte a detectar cuándo se producen varios modos de fallo en los HPA. Por ejemplo:
- La condición
ScalingLimited
y el estadotrue
indican que el HPA está limitado por el número mínimo o máximo de réplicas:kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
La condición
AbleToScale
y el estadofalse
indican que el HPA tiene problemas para obtener o actualizar las escalas:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1
La condición
ScalingActive
y el estadofalse
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 han adaptado del archivo kubernetes-apps.yaml
del repositorio de gráficos de Helm de Kubernetes de la comunidad de Prometheus en GitHub.
Métricas de JobSet
Un JobSet es una API de carga de trabajo que te permite gestionar un grupo de trabajos de Kubernetes como una unidad. El caso de uso más habitual 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 monitorizar el comportamiento de tus JobSets y recibir alertas sobre ellos. En la siguiente tabla se muestran las métricas disponibles en el paquete de métricas de estado de kube:
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción Etiquetas |
kube_jobset_specified_replicas kube_jobset_specified_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Número de réplicas especificadas por cada trabajo replicado de un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
replicated_job_name : replicated_job_name.
|
kube_jobset_ready_replicas kube_jobset_ready_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Número de réplicas en estado "READY" por cada trabajo replicado de un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
replicated_job_name : replicated_job_name.
|
kube_jobset_succeeded_replicas kube_jobset_succeeded_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Número de réplicas en estado "SUCCEEDED" por tareas replicadas en un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
replicated_job_name : replicated_job_name.
|
kube_jobset_failed_replicas kube_jobset_failed_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Número de réplicas en estado "FAILED" por cada trabajo replicado de un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
replicated_job_name : replicated_job_name.
|
kube_jobset_active_replicas kube_jobset_active_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Número de réplicas en estado "ACTIVE" por cada trabajo replicado en un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
replicated_job_name : replicated_job_name.
|
kube_jobset_suspended_replicas kube_jobset_suspended_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Número de réplicas en estado "SUSPENDED" por cada tarea replicada de un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
replicated_job_name : replicated_job_name.
|
kube_jobset_status_condition kube_jobset_status_condition/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
Las condiciones de estado actuales de un JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
condition : condición.
|
kube_jobset_restarts kube_jobset_restarts/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.4-gke.1767000 1.33.0-gke.1868000 |
Número de reinicios de JobSet.
Se muestrea cada 30 segundos.jobset_name : jobset_name.
|
Consultas de ejemplo de métricas de JobSet
Puedes crear gráficos y políticas de alertas para JobSets concretos filtrando las métricas de JobSet por clúster, espacio de nombres y nombre del JobSet.
Por ejemplo, para comparar el número de réplicas en estado READY
con el número esperado de réplicas en un solo JobSet, representa ambas métricas en un solo gráfico mediante las siguientes consultas 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"}
Para recibir alertas 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
de la métrica kube_jobset_status_condition
también puede ayudarte a detectar cuándo se producen varios tipos de errores en los JobSets. Por ejemplo:
- La condición
Failed
indica que no se ha podido ejecutar el JobSet: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 han adaptado del archivo kubernetes-apps.yaml
del repositorio de gráficos de Helm de Kubernetes de la comunidad de Prometheus en GitHub.