Solucionar problemas de paneles de control de monitorización


En esta página se explica cómo solucionar problemas con los paneles de control de monitorización de Google Kubernetes Engine (GKE), como que no aparezcan o que los datos no estén disponibles. Para obtener más información sobre cómo usar estos paneles para solucionar problemas de tus clústeres y cargas de trabajo, consulta Evaluar el estado de los clústeres y las cargas de trabajo en la consola de Google Cloud .

La monitorización está habilitada de forma predeterminada al crear un clúster. Si no ves los paneles de control de GKE cuando consultas los paneles de control proporcionados Google Cloud en Monitoring, significa que Monitoring no está habilitado en los clústeres del proyecto seleccionado. Google Cloud Habilita la monitorización para ver estos paneles.

No hay recursos de Kubernetes en mi panel de control

Si no ves ningún recurso de Kubernetes en tu panel de control de GKE, comprueba lo siguiente:

Proyecto Google Cloud seleccionado

Comprueba que hayas seleccionado el Google Cloud proyecto correcto en la lista desplegable de la Google Cloud barra de menú de la consola. Debes seleccionar el proyecto cuyos datos quieras ver.

Actividad de los clústeres

Si acabas de crear el clúster, espera unos minutos a que se rellene con datos. Para obtener más información, consulta el artículo sobre cómo configurar el almacenamiento de registros y la monitorización de GKE.

Periodo

El periodo seleccionado puede ser demasiado corto. Puede usar el menú Hora de la barra de herramientas del panel de control para seleccionar otros periodos o definir un periodo Personalizado.

Permisos para ver el panel de control

Si aparece alguno de los siguientes mensajes de error de permiso denegado al ver los detalles de la implementación de un servicio o las métricas de un proyecto, debes actualizar tu rol de Gestión de Identidades y Accesos para incluir roles/monitoring.viewer o roles/viewer: Google Cloud

  • You do not have sufficient permissions to view this page
  • You don't have permissions to perform the action on the selected resources

Para obtener más información, consulta Roles predefinidos.

Permisos de la cuenta de servicio del clúster y del nodo para escribir datos en Monitoring y Logging

Si observas tasas de error elevadas en la página APIs y servicios habilitados de la consola de Google Cloud , es posible que a tu cuenta de servicio le falten los siguientes roles:

  • roles/logging.logWriter: en la Google Cloud consola, este rol se llama Editor de registros. Para obtener más información sobre los roles de Logging, consulta la guía de control de acceso de Logging.

  • roles/monitoring.metricWriter: en la consola Google Cloud , este rol se llama Editor de las métricas de monitorización. Para obtener más información sobre los roles de Monitoring, consulta la guía de control de acceso de Monitoring.

  • roles/stackdriver.resourceMetadata.writer: En la consola de Google Cloud , este rol se llama Editor de metadatos de recursos de Stackdriver. Este rol permite el acceso de solo escritura a los metadatos de los recursos y proporciona solo los permisos que necesitan los agentes para enviar metadatos. Para obtener más información sobre los roles de Monitoring, consulta la guía de control de acceso de Monitoring.

Para ver una lista de tus cuentas de servicio, ve a la consola de Google Cloud , selecciona Gestión de identidades y accesos y administración y, a continuación, Cuentas de servicio.

No puedo ver los registros

Si no ves tus registros en los paneles de control, comprueba lo siguiente:

El agente se está ejecutando y está en buen estado

Las versiones 1.17 y posteriores de GKE usan Fluent Bit para registrar los registros. Fluent Bit es el agente de registro que se ejecuta en los nodos de Kubernetes. Para comprobar si el agente se está ejecutando correctamente, sigue estos pasos:

  1. Comprueba si el agente se está reiniciando ejecutando el siguiente comando:

    kubectl get pods -l k8s-app=fluentbit-gke -n kube-system
    

    Si no hay reinicios, el resultado será similar al siguiente:

    NAME                  READY   STATUS    RESTARTS   AGE
    fluentbit-gke-6zr6g   2/2     Running   0          44d
    fluentbit-gke-dzh9l   2/2     Running   0          44d
    
  2. Comprueba las condiciones de estado del pod ejecutando el siguiente comando:

    JSONPATH='{range .items[*]};{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status},{end}{end};'  \
     && kubectl get pods -l k8s-app=fluentbit-gke -n kube-system -o jsonpath="$JSONPATH" | tr ";" "\n"
    

    Si la implementación está en buen estado, el resultado será similar al siguiente:

    fluentbit-gke-nj4qs:Initialized=True,Ready=True,ContainersReady=True,PodScheduled=True,
    fluentbit-gke-xtcvt:Initialized=True,Ready=True,ContainersReady=True,PodScheduled=True,
    
  3. Comprueba el estado del pod, que puede ayudarte a determinar si el despliegue es correcto, ejecutando el siguiente comando:

    kubectl get daemonset -l k8s-app=fluentbit-gke -n kube-system
    

    Si la implementación está en buen estado, el resultado será similar al siguiente:

    NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    fluentbit-gke   2         2         2       2            2           kubernetes.io/os=linux   5d19h
    

    En este ejemplo, el estado deseado coincide con el estado actual.

Si el agente se está ejecutando correctamente en estos casos y sigues sin ver todos tus registros, puede que esté sobrecargado y que esté descartando registros.

El agente está sobrecargado y está descartando registros

Un posible motivo por el que no ves todos tus registros es que el volumen de registros del nodo está sobrecargando al agente. La configuración predeterminada del agente de registro en GKE está ajustada para una tasa de 100 KiB por segundo en cada nodo, y el agente puede empezar a descartar registros si el volumen supera ese límite.

Para detectar si estás alcanzando este límite, busca alguno de los siguientes indicadores:

  • Consulta la métrica kubernetes.io/container/cpu/core_usage_time con el filtro container_name=fluentbit-gke para ver si el uso de la CPU del agente de registro está cerca del 100%.

  • Consulta la métrica logging.googleapis.com/byte_count agrupada por metadata.system_labels.node_name para ver si algún nodo alcanza los 100 KiB por segundo.

Si se da alguna de estas condiciones, puede reducir el volumen de registros de sus nodos añadiendo más nodos al clúster. Si todo el volumen de los registros procede de un solo pod, tendrás que reducir el volumen de ese pod.

Para obtener más información sobre cómo investigar y resolver problemas relacionados con el registro de GKE, consulta Solucionar problemas de registro en GKE.

¿El incidente no coincide con un recurso de GKE?

Si tienes una condición de política de alertas que agrega métricas de distintos recursos de GKE, puede que tengas que editar la condición de la política para incluir más etiquetas de jerarquía de GKE y asociar incidentes a entidades específicas.

Por ejemplo, puedes tener dos clústeres de GKE, uno para producción y otro para pruebas, cada uno con su propia copia del servicio lilbuddy-2. Cuando la condición de la política de alertas agrega una métrica en los contenedores de ambos clústeres, el panel de control de monitorización de GKE no puede asociar este incidente de forma única con el servicio de producción o el servicio de staging.

Para resolver esta situación, orienta la política de alertas a un servicio específico añadiendo namespace, cluster y location al campo Agrupar por de la política. En la tarjeta del evento de la alerta, haga clic en el enlace Actualizar política de alertas para abrir la página Editar política de alertas de la política de alertas correspondiente. Desde aquí, puede actualizar la política de alertas con la información adicional para que el panel de control pueda encontrar el recurso asociado.

Después de actualizar la política de alertas, el panel de control de monitorización de GKE puede asociar todos los incidentes futuros a un servicio único de un clúster concreto, lo que te proporciona información adicional para diagnosticar el problema.

En función de tu caso práctico, puede que quieras filtrar por algunas de estas etiquetas, además de añadirlas al campo Agrupar por. Por ejemplo, si solo quieres recibir alertas de tu clúster de producción, puedes filtrar por cluster_name.

Siguientes pasos