Cloud Logging

En esta página, se explica cómo usar Cloud Logging para recopilar y consultar registros de los clústeres de Google Kubernetes Engine (GKE).

Resumen

Cuando Logging está habilitado en tu clúster, los registros se almacenan en un almacén de datos dedicado y persistente. Tu proyecto de Google Cloud tiene varios registros que son relevantes para un clúster de GKE. Estos incluyen los registros de actividad del administrador, de acceso a los datos y de acontecimientos.

Un registro es una colección de entradas de registro, y cada entrada se aplica a un tipo de recurso. Estos son los tipos de recursos más relevantes para los clústeres de GKE:

Tipo de recurso Nombre visible
k8s_cluster Clúster de Kubernetes
gke_cluster Operaciones del clúster de GKE
gke_container Contenedor de GKE
gke_nodepool Operaciones del grupo de nodos de GKE

Para obtener información detallada sobre las entradas de registro que se aplican a los tipos de recursos de las operaciones con clústeres de Kubernetes y de GKE, consulta Registro de auditoría.

Si bien GKE almacena los registros, no lo hace de forma permanente. Por ejemplo, los registros de contenedor de GKE se borran cuando se quita el pod de host, cuando el disco en el que están almacenados se queda sin espacio o cuando son reemplazados por registros más nuevos. Los registros del sistema se quitan periódicamente a fin de liberar espacio para nuevos registros. Los eventos de clústeres se quitan después de una hora.

Para los registros de contenedores y sistemas, GKE implementa un agente de registros por nodo que lee los registros de contenedores, agrega metadatos útiles y luego los almacena. El agente de registros busca registros de contenedor en las siguientes fuentes:

  • Registros de salida y de error estándar de procesos en contenedores
  • kubelet y registros del entorno de ejecución del contenedor
  • Registros para los componentes del sistema, como las secuencias de comandos de inicio de VM

Para los eventos, GKE usa una implementación en el espacio de nombres kube-system que recopila los eventos automáticamente y los envía a Logging.

Logging es compatible con el formato JSON. Los registros se almacenan durante hasta 30 días.

Antes de comenzar

Sigue estos pasos a fin de prepararte para esta tarea:

  • Asegúrate de que habilitaste la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de que instalaste el SDK de Cloud.
  • Establece tu ID del proyecto predeterminado:
    gcloud config set project [PROJECT_ID]
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region [COMPUTE_REGION]
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Habilita Logging

Puedes crear un clúster con Logging habilitado o habilitar Logging en un clúster existente.

Crea un clúster con Logging

gcloud

Cuando creas un clúster, la marca --enable-cloud-logging se configura automáticamente, lo cual habilita Logging en el clúster.

Para inhabilitar este comportamiento predeterminado, configura la marca --no-enable-cloud-logging.

Console

  1. En Cloud Console, ve a la página Kubernetes Engine > Clústeres de Kubernetes:

    Ir a Clústeres de Kubernetes

  2. Haz clic en Crear clúster.

  3. Configura el clúster según sea necesario.

  4. Haz clic en Opciones avanzadas. En la sección Funciones adicionales, habilita Habilitar el servicio de Stackdriver Logging.

  5. Haga clic en Crear.

Habilita Logging en un clúster existente

gcloud

A fin de habilitar Logging en un clúster existente, ejecuta el siguiente comando, donde [CLUSTER_NAME] es el nombre del clúster.

gcloud container clusters update [CLUSTER_NAME] --logging-service logging.googleapis.com

Console

  1. En Cloud Console, ve a la página Kubernetes Engine > Clústeres de Kubernetes:

    Ir a Clústeres de Kubernetes

  2. Haz clic en Editar.

  3. Configura el valor desplegable de Stackdriver Logging en Habilitado.

  4. Haz clic en Guardar.

Visualiza los registros

Podrás ver los registros en el Visor de registros de Stackdriver de Google Cloud Console.

A fin de obtener más información sobre la visualización de registros, que incluye cómo crear consultas básicas y avanzadas, consulta Visualiza los registros en la documentación sobre Logging.

Ejemplos de consultas

  • Registros de consultas de pods con la etiqueta nginx-deployment:

    resource.type="container"
        resource.labels.pod_id:"nginx-deployment-"
  • Registros de consultas en el espacio de nombres prod con gravedad WARNING o superior:

    resource.type="container"
        resource.labels.namespace_id="prod"
        severity>WARNING

    Para obtener más información sobre los niveles de gravedad, consulta Log Severity.

  • Registros de consultas de un contenedor específico, my-container, en un pod específico, my-pod, con una carga útil de texto:

    resource.type="container"
        resource.labels.container_name="my_container"
        resource.labels.pod_id="my_pod"
        textPayload:"abracadabra"

Limitaciones

Es posible que las entradas de varias líneas (entradas con caracteres de salto de línea) no se procesen correctamente. Para evitar este problema, une tus registros en strings JSON de una sola línea.

Prácticas recomendadas

  • Registro estructurado: Las strings de JSON de una línea escritas en resultados estándar o estándar se leerán en el paquete de operaciones de Google Cloud como entradas de registro estructurado. Consulta Registro estructurado para obtener más detalles. Puedes usar los Filtros avanzados de registros para filtrar los registros según sus campos.
  • Gravedad: de manera predeterminada, los registros escritos en el resultado estándar están en el nivel INFO, y los registros escritos en el error estándar están en el nivel ERROR. Los registros estructurados pueden incluir un campo severity, que define la gravedad del registro.
  • Exporta a BigQuery: puedes exportar registros a los servicios externos, como BigQuery o Pub/Sub, para realizar un análisis adicional. Los registros exportados a BigQuery conservan su formato y estructura. Consulta Descripción general de las exportaciones de registros para obtener más información.
  • Alertas: puedes usar métricas basadas en registros para configurar políticas de alertas cuando Logging registra un comportamiento inesperado. Para ver un ejemplo, consulta Crea una política de alertas simple en una métrica de contador. Para obtener información detallada sobre las métricas basadas en registros, consulta Descripción general de las métricas basadas en registros.
  • Informes de errores: puedes usar Error Reporting para recopilar errores producidos en tus clústeres.

Inhabilita el registro

gcloud

Para inhabilitar el registro y la supervisión heredados de un clúster existente, ejecute el siguiente comando, donde [CLUSTER_NAME] es el nombre del clúster.

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none

Si ejecuta Kubernetes Engine Monitoring en su clúster, debe inhabilitar la supervisión y el registro con gcloud beta para establecer las siguientes marcas en su clúster:

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none --monitoring-service none

Console

  1. En Cloud Console, ve a la página Kubernetes Engine > Clústeres de Kubernetes:

    Ir a Clústeres de Kubernetes

  2. Haga clic en Editar para el clúster que desea modificar.

  3. Establece el valor desplegable de Stackdriver Logging en Inhabilitado.

  4. Haz clic en Guardar.

Próximos pasos