Configurar recogida de métricas

En este documento se describe cómo configurar Google Kubernetes Engine (GKE) para enviar métricas a Cloud Monitoring. Las métricas de Cloud Monitoring se pueden usar para rellenar paneles de control personalizados, generar alertas, crear objetivos de nivel de servicio o pueden obtenerlas servicios de monitorización de terceros mediante la API Cloud Monitoring.

GKE proporciona varias fuentes de métricas:

  • Métricas del sistema: métricas de componentes esenciales del sistema que describen recursos de bajo nivel, como la CPU, la memoria y el almacenamiento.
  • Google Cloud Managed Service for Prometheus te permite monitorizar tus cargas de trabajo y recibir alertas sobre ellas con Prometheus, sin tener que gestionar ni usar Prometheus manualmente a gran escala.
  • Paquetes de métricas de observabilidad:

    • Métricas del plano de control: métricas exportadas desde determinados componentes del plano de control, como el servidor de la API y el programador.
    • Métricas de estado de Kube: conjunto seleccionado de métricas exportadas desde el servicio kube state, que se usa para monitorizar el estado de objetos de Kubernetes, como pods o implementaciones, entre otros. Para ver el conjunto de métricas incluidas, consulta Usar métricas de estado de Kube.

      El paquete de estado de kube es una solución gestionada. Si necesitas más flexibilidad (por ejemplo, si quieres recoger métricas adicionales, gestionar intervalos de raspado o raspar otros recursos), puedes inhabilitar el paquete (si está habilitado) y desplegar tu propia instancia del servicio de métricas de estado de kube de código abierto. Para obtener más información, consulta la documentación del exportador de Google Cloud Managed Service para Prometheus sobre las métricas de estado de Kube.

    • cAdvisor o Kubelet: un conjunto seleccionado de métricas de cAdvisor y Kubelet. Para ver el conjunto de métricas incluidas, consulta Usar métricas de cAdvisor o Kubelet.

      El paquete cAdvisor/Kubelet es una solución gestionada. Si necesitas más flexibilidad (por ejemplo, si quieres recoger métricas adicionales, gestionar intervalos de raspado o raspar otros recursos), puedes inhabilitar el paquete, si está habilitado, y desplegar tu propia instancia de los servicios de métricas de cAdvisor o Kubelet de código abierto.

    • Métricas de NVIDIA Data Center GPU Manager (DCGM): métricas de DCGM que proporcionan una vista completa del estado, el rendimiento y la utilización de la GPU.

También puedes configurar la monitorización automática de aplicaciones para determinadas cargas de trabajo.

Métricas del sistema

Cuando se crea un clúster, GKE recoge de forma predeterminada determinadas métricas emitidas por los componentes del sistema.

Puedes elegir si quieres enviar métricas de tu clúster de GKE a Cloud Monitoring. Si decides enviar métricas a Cloud Monitoring, debes enviar métricas del sistema.

Todas las métricas del sistema de GKE se ingieren en Cloud Monitoring con el prefijo kubernetes.io.

Precios

Cloud Monitoring no cobra por la ingestión de métricas del sistema de GKE. Para obtener más información, consulta los precios de Cloud Monitoring.

Configurar la recogida de métricas del sistema

Para habilitar la recogida de métricas del sistema, asigna el valor SYSTEM a la marca --monitoring de los comandos gcloud container clusters create o gcloud container clusters update.

Para inhabilitar la recogida de métricas del sistema, usa el valor NONE para la marca --monitoring. Si la recogida de métricas del sistema está inhabilitada, no se podrá acceder a información básica, como el uso de la CPU, el uso de la memoria y el uso del disco, de un clúster al consultar las métricas de observabilidad.

En los clústeres de Autopilot de GKE, no puedes inhabilitar la recogida de métricas del sistema.

Consulta Observabilidad para GKE para obtener más información sobre la integración de Cloud Monitoring con GKE.

Para configurar la recogida de métricas del sistema con 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.

Lista de métricas del sistema

Las métricas del sistema incluyen métricas de componentes esenciales del sistema que son importantes para Kubernetes. Para ver una lista de estas métricas, consulta Métricas del sistema de GKE.

Si habilitas Cloud Monitoring en tu clúster, no podrás inhabilitar la monitorización del sistema (--monitoring=SYSTEM).

Solucionar problemas con las métricas del sistema

Si las métricas del sistema no están disponibles en Cloud Monitoring como se esperaba, consulta Solucionar problemas con las métricas del sistema.

Paquete: métricas del plano de control

Puede configurar un clúster de GKE para que envíe a Cloud Monitoring determinadas métricas emitidas por el servidor de la API de Kubernetes, el programador y el gestor de controladores.

Para obtener más información, consulta Recoger y ver métricas del plano de control.

Paquete: métricas de estado de Kube

Puede configurar un clúster de GKE para que envíe un conjunto seleccionado de métricas de estado de kube en formato Prometheus a Cloud Monitoring. Este paquete de métricas de estado de kube incluye métricas de pods, implementaciones, StatefulSets, DaemonSets, recursos de escalado automático horizontal de pods, volúmenes persistentes, reclamaciones de volumen persistente y JobSets.

Para obtener más información, consulta Recoger y ver métricas de estado de Kube.

Paquete: métricas de cAdvisor o Kubelet

Puede configurar un clúster de GKE para que envíe un conjunto seleccionado de métricas de cAdvisor o Kubelet en formato Prometheus a Cloud Monitoring. El conjunto de métricas seleccionadas es un subconjunto del amplio conjunto de métricas de cAdvisor y Kubelet que se incluye de forma predeterminada en todas las implementaciones de Kubernetes. El cAdvisor/Kubelet seleccionado se ha diseñado para proporcionar las métricas más útiles, lo que reduce el volumen de ingesta y los costes asociados.

Para obtener más información, consulta Recoger y ver métricas de cAdvisor o Kubelet.

Paquete: métricas de NVIDIA Data Center GPU Manager (DCGM)

Para monitorizar el uso, el rendimiento y el estado de las GPUs, puedes configurar GKE para que envíe métricas de NVIDIA Data Center GPU Manager (DCGM) a Cloud Monitoring.

Para obtener más información, consulta Recoger y ver métricas de NVIDIA Data Center GPU Manager (DCGM).

Inhabilitar paquetes de métricas

Puedes inhabilitar el uso de paquetes de métricas en el clúster. Puede que quieras inhabilitar determinados paquetes para reducir los costes o si utilizas un mecanismo alternativo para recoger las métricas, como Managed Service para Prometheus de Google Cloud y un exportador.

Consola

Para inhabilitar la recogida de métricas de la pestaña Detalles del clúster, haga lo siguiente:

  1. En la Google Cloud consola, ve a la página Clústeres de Kubernetes:

    Ve a 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.

  2. Haz clic en el nombre de tu clúster.

  3. En la fila Funciones, busque la opción Cloud Monitoring y haga clic en el icono Editar.

  4. En el menú desplegable Componentes, desmarca los componentes de métricas que quieras inhabilitar.

  5. Haz clic en Aceptar.

  6. Haz clic en Guardar cambios.

gcloud

  1. Abre una ventana de terminal con el SDK de Google Cloud y la CLI de Google Cloud instalados. Una forma de hacerlo es usar Cloud Shell.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Llama al comando gcloud container clusters update y pasa un conjunto de valores actualizados a la marca --monitoring. El conjunto de valores proporcionado a la marca --monitoring sobrescribe cualquier ajuste anterior.

    Por ejemplo, para desactivar la recogida de todas las métricas excepto las métricas del sistema, ejecuta el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus \
        --monitoring=SYSTEM
    

    Este comando inhabilita la recogida de los paquetes de métricas configurados anteriormente.

Terraform

Para configurar la recogida de métricas con 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.

Información sobre la factura de Monitoring

Puedes usar Cloud Monitoring para identificar el plano de control o las métricas de estado de kube que escriben el mayor número de muestras. Estas métricas son las que más contribuyen a tus costes. Una vez que haya identificado las métricas más caras, puede modificar sus configuraciones de raspado para filtrar estas métricas de forma adecuada.

La página Gestión de métricas de Cloud Monitoring proporciona información que puede ayudarte a controlar el importe que gastas en métricas facturables sin que esto afecte a la observabilidad. En la página Gestión de métricas se muestra la siguiente información:

  • Volúmenes de ingesta para la facturación basada en bytes y en muestras, en todos los dominios de métricas y para métricas concretas.
  • Datos sobre las etiquetas y la cardinalidad de las métricas.
  • Número de lecturas de cada métrica.
  • Uso de métricas en políticas de alertas y paneles de control personalizados.
  • Tasa de errores de escritura de métricas.

También puede usar la página Gestión de métricas para excluir las métricas que no necesite y, de esta forma, no incurrir en los costes de ingesta.

Para ver la página Gestión de métricas, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página  Gestión de métricas:

    Ve a Gestión de métricas.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. En la barra de herramientas, selecciona el periodo que quieras. De forma predeterminada, la página Gestión de métricas muestra información sobre las métricas recogidas en el día anterior.

Para obtener más información sobre la página Gestión de métricas, consulta el artículo Ver y gestionar el uso de métricas.

Para identificar qué métricas del plano de control o del estado de kube tienen el mayor número de muestras ingeridas, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página  Gestión de métricas:

    Ve a Gestión de métricas.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. En la tarjeta de resultados Muestras facturables ingeridas, haga clic en Ver gráficos.

  3. Busca el gráfico Ingestión de volumen de espacio de nombres y haz clic en  Más opciones de gráfico.

  4. En el campo Métrica, comprueba que estén seleccionados los siguientes recursos y métricas:
    Metric Ingestion Attribution y Samples written by attribution id.

  5. En la página Filtros, haz lo siguiente:

    1. En el campo Etiqueta, comprueba que el valor sea attribution_dimension.

    2. En el campo Comparación, compruebe que el valor sea = (equals).

    3. En el campo Valor, selecciona cluster.

  6. Desactiva el ajuste Agrupar por.

  7. También puede filtrar por determinadas métricas. Por ejemplo, todas las métricas del servidor de la API del plano de control incluyen "apiserver" como parte del nombre de la métrica, y todas las métricas de Pod de estado de kube incluyen "kube_pod" como parte del nombre de la métrica, por lo que puede filtrar las métricas que contengan esas cadenas:

    • Haz clic en Añadir filtro.

    • En el campo Etiqueta, selecciona metric_type.

    • En el campo Comparación, selecciona =~ (equals regex).

    • En el campo Valor, introduce .*apiserver.* o .*kube_pod.*.

  8. También puede agrupar el número de muestras ingeridas por región o proyecto de GKE:

    • Haz clic en Agrupar por.

    • Asegúrate de que metric_type esté seleccionado.

    • Para agrupar por región de GKE, selecciona Ubicación.

    • Para agrupar por proyecto, selecciona project_id.

    • Haz clic en Aceptar.

  9. También puedes agrupar el número de muestras ingeridas por nombre de clúster de GKE:

    • Haz clic en Agrupar por.

    • Para agrupar por nombre de clúster de GKE, asegúrese de que estén seleccionados attribution_dimension y attribution_id.

    • Haz clic en Aceptar.

  10. Para ver el volumen de ingesta de cada métrica, en el interruptor Gráfico, tabla o ambos, seleccione Ambos. En la tabla se muestra el volumen ingerido de cada métrica en la columna Valor.

    Haga clic dos veces en el encabezado de la columna Valor para ordenar las métricas por volumen de ingesta descendente.

En estos pasos se muestran las métricas con la tasa más alta de muestras insertadas en Cloud Monitoring. Como las métricas de los paquetes de observabilidad se cobran según el número de muestras ingeridas, presta atención a las métricas con la mayor tasa de muestras ingeridas.

Otras métricas

Además de las métricas del sistema y los paquetes de métricas descritos en este documento, también están disponibles las métricas de Istio para los clústeres de GKE. Para obtener información sobre los precios, consulta los precios de Cloud Monitoring.

Métricas disponibles

En la siguiente tabla se indican los valores admitidos de la marca --monitoring para los comandos create y update.

Fuente Valor de --monitoring Métricas recogidas
Ninguno NONE No se han enviado métricas a Cloud Monitoring; no hay ningún agente de recogida de métricas instalado en el clúster. Este valor no se admite en los clústeres de Autopilot.
Sistema SYSTEM Métricas de los componentes esenciales del sistema necesarios para Kubernetes. Para ver una lista completa de las métricas, consulta el artículo sobre las métricas de Kubernetes.
Servidor de API API_SERVER Métricas de kube-apiserver. Para ver una lista completa de las métricas, consulta Métricas del servidor de la API.
Programador SCHEDULER Métricas de kube-scheduler. Para ver una lista completa de las métricas, consulta el artículo sobre las métricas del programador.
Controller Manager CONTROLLER_MANAGER Métricas de kube-controller-manager. Para ver una lista completa de las métricas, consulta el artículo sobre las métricas de Controller Manager.
Volumen persistente (almacenamiento) STORAGE Métricas de almacenamiento de kube-state-metrics. Incluye métricas de volumen persistente y reclamaciones de volumen persistente. Para ver una lista completa de las métricas, consulte Métricas de almacenamiento.
Pod POD Métricas de pods de kube-state-metrics. Para ver una lista completa de las métricas, consulta Métricas de pods.
Implementación DEPLOYMENT Métricas de despliegue de kube-state-metrics. Para ver una lista completa de las métricas, consulta Métricas de implementación.
StatefulSet STATEFULSET Métricas de StatefulSet de kube-state-metrics. Para ver una lista completa de las métricas, consulta Métricas de StatefulSet.
DaemonSet DAEMONSET Métricas de DaemonSet de kube-state-metrics. Para ver una lista completa de las métricas, consulta Métricas de DaemonSet.
HorizonalPodAutoscaler HPA Métricas de HPA de kube-state-metrics. Consulta la lista completa de métricas de HorizontalPodAutoscaler.
cAdvisor CADVISOR Métricas de cAdvisor del paquete de métricas de cAdvisor o Kubelet. Para ver una lista completa de las métricas, consulta el artículo sobre las métricas de cAdvisor.
Kubelet KUBELET Métricas de Kubelet de cAdvisor o Kubelet Para ver una lista completa de las métricas, consulta Métricas de Kubelet.
Métricas de NVIDIA Data Center GPU Manager (DCGM) DCGM Métricas de NVIDIA Data Center GPU Manager (DCGM).

También puedes recoger métricas de estilo Prometheus expuestas por cualquier carga de trabajo de GKE mediante Google Cloud Managed Service para Prometheus, que te permite monitorizar tus cargas de trabajo y recibir alertas sobre ellas con Prometheus, sin tener que gestionar ni usar Prometheus manualmente a gran escala.

Siguientes pasos