Administra registros de GKE

En esta página, se proporciona una descripción general de las opciones de registro disponibles en Google Kubernetes Engine (GKE).

Descripción general

Cuando habilitas la integración de las operaciones en la nube para GKE mediante Cloud Logging y Cloud Monitoring en tu clúster, los registros se almacenan en un almacén de datos dedicado y persistente. Si bien GKE almacena los registros, no lo hace de forma permanente. Por ejemplo, los registros de contenedores de GKE se quitan cuando se quita el Pod del host, cuando el disco en el que están almacenados se queda sin espacio o cuando se los reemplaza por registros más nuevos. Los registros del sistema se quitan de forma periódica a fin de liberar espacio para registros nuevos. Los eventos de clústeres se quitan después de una hora.

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

  • Registros de salida y de error estándar de procesos en contenedores

  • Registros de entorno de ejecución de contenedores y kubelet

  • 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 eventos de forma automática y los envía a Logging.

Qué registros se recopilan

De forma predeterminada, GKE recopila registros de las cargas de trabajo del sistema y de aplicaciones implementadas en el clúster.

  • Registros del sistema: En ellos se incluyen los registros de auditoría del clúster, incluidos el registro de actividad del administrador, el registro de acceso a los datos y el registro de acontecimientos. Si deseas obtener información detallada sobre los registros de auditoría para GKE, consulta la documentación Registros de auditoría para GKE. Algunos registros del sistema se ejecutan como contenedores, como los de kube-system y se describen en Controla la recopilación de los registros de tu aplicación.

  • Registros de aplicaciones: Los contenedores de Kubernetes recopilan registros para las cargas de trabajo, escritos en STDOUT y STDERR.

Recopila tus registros

Cuando creas un clúster de GKE nuevo, la integración de las operaciones en la nube para GKE con Cloud Logging y Cloud Monitoring está habilitada de forma predeterminada.

Para obtener información sobre Cloud Logging heredado, puedes seguir la documentación sobre cómo habilitar o inhabilitar la integración de Logging.

Opciones de configuración predeterminada de Logging

Cuando se habilita, se implementa y administra un agente dedicado de forma automática. Se ejecuta en el nodo de GKE para recopilar registros, agrega metadatos útiles sobre el contenedor, el Pod y el clúster, y envía los registros a Cloud Logging. Luego, los registros del sistema y los de la aplicación de la carga de trabajo se entregan al enrutador de registros en Cloud Logging.

Desde allí, los registros se transfieren a Cloud Logging o se excluyen. El enrutador de registros también proporciona un paso opcional para exportar tus registros a BigQuery, Pub/Sub o Cloud Storage.

A partir de GKE 1.16-13-gke.400, la salida del puerto en serie para los nodos se conserva en Cloud Logging. Para inhabilitar el registro de salidas de puertos en serie en Cloud Logging, configura --metadata serial-port-logging-enable=false durante la creación del clúster.

Personaliza la recopilación de registros solo para los registros del sistema

A partir de la versión 1.15.7 de GKE, puedes configurar las operaciones en la nube para GKE de modo que solo capturen registros del sistema y no recopilen registros de aplicaciones.

Recopila registros con fluentd personalizado

El agente de registro predeterminado de GKE proporciona una solución administrada para implementar y administrar los agentes que envían los registros de los clústeres a Cloud Logging. Si deseas modificar el comportamiento predeterminado de los agentes de fluentd, puedes ejecutar un agente fluentd personalizado.

Los casos de uso comunes incluyen los siguientes:

  • Quitar datos sensibles de tus registros

  • Recopilar registros adicionales que no se escriben en STDOUT o STDER

Recopila registros auditd de Linux para nodos de GKE

Puedes habilitar los registros de auditoría del sistema operativo detallados en los nodos de Google Kubernetes Engine que ejecutan Container-Optimized OS. Los registros del sistema operativo en los nodos proporcionan información valiosa sobre el estado del clúster y las cargas de trabajo, como mensajes de error, intentos de acceso y ejecuciones binarias. Puedes usar esta información para depurar problemas o investigar incidentes de seguridad.

Para obtener más información, consulta Habilita registros de auditoría de Linux en nodos de GKE.

Registros de auditoría 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 Registros de auditoría.

Control de acceso de Logging

Existen dos aspectos del control de acceso a los registros: el acceso a la aplicación y el acceso de los usuarios. Cloud Logging proporciona funciones de IAM que puedes usar para otorgar el acceso adecuado.

Acceso a la aplicación

Las aplicaciones necesitan permiso para escribir registros, el cual se otorga mediante la asignación de la función de IAM roles/logging.logWriter a la cuenta de servicio de una aplicación. Cuando creas un clúster de GKE, la función roles/logging.logWriter está habilitada de forma predeterminada.

Acceso de lectura del usuario

Debes tener la función roles/logging.viewer para ver los registros en el proyecto. Si necesitas tener acceso a los registros de acceso a los datos, debes tener el permiso de IAM logging.privateLogViewer.

Para obtener más información sobre los permisos y las funciones, consulta la guía Control de acceso. También puedes revisar el documento Prácticas recomendadas para los registros de auditoría de Cloud, que también se aplica a Cloud Logging en general.

Acceso del administrador de usuarios

Las funciones de IAM roles/logging.configWriter y roles/logging.admin proporcionan las capacidades administrativas. La función de IAM roles/logging.configWriter es necesaria para crear un receptor de registros que suele usarse con el fin de dirigir los registros a un proyecto específico o centralizado. Por ejemplo, te recomendamos usar un receptor de registros junto con un filtro de registros para dirigir todos los registros de un espacio de nombres a un bucket de registro centralizado.

Si deseas obtener más información, consulta la guía Control de acceso para Cloud Logging.

Recomendaciones

  • Registro estructurado: Las strings JSON de una sola línea escritas en un resultado estándar o un error estándar se leerán en Google Cloud's operations suite como entradas de registro estructuradas. Consulta Registro estructurado para obtener más detalles. Puedes usar los filtros de registros avanzados para filtrar los registros según sus campos.
  • Gravedad: De forma 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.
  • Error Reporting: Puedes usar Error Reporting para recopilar los errores que se produjeron en los clústeres.