Soluciona problemas de enrutamiento y almacenamiento de registros

En este documento, se explican los problemas comunes de enrutamiento y almacenamiento, y cómo usar la consola deGoogle Cloud para ver y solucionar errores de configuración o resultados inesperados.

Para obtener información general sobre cómo ver los datos de registro, consulta Visualiza los registros en destinos de receptores.

Soluciona problemas de enrutamiento de registros

En esta sección, se describe cómo solucionar problemas comunes cuando se enrutan las entradas de registro.

El destino contiene entradas de registro no deseadas

Estás viendo las entradas de registro enrutadas a un destino y determinas que el destino contiene entradas de registro no deseadas.

Para resolver esta condición, actualiza los filtros de exclusión de tus receptores que enrutan las entradas de registro al destino. Los filtros de exclusión te permiten evitar que las entradas de registro seleccionadas se enruten a un destino.

Por ejemplo, supongamos que creas un receptor agregado para enrutar las entradas de registro de una organización a un destino. Para evitar que las entradas de registro de un proyecto específico se enruten al destino, agrega el siguiente filtro de exclusión al receptor:

logName:projects/PROJECT_ID

También puedes excluir entradas de registro de varios proyectos con el operador lógico O para unir cláusulas logName.

Faltan entradas de registro en el destino

Quizás el problema más común relacionado con los receptores es que parece que faltan entradas de registro en el destino de un receptor.

En algunos casos, no se genera un error, pero es posible que notes que las entradas de registro no están disponibles cuando intentas acceder a ellas en tu destino. Si sospechas que tu sink no enruta correctamente las entradas de registro, verifica las métricas basadas en registros del sistema de tu sink:

  • exports/byte_count: Cantidad de bytes en las entradas de registro que se enrutaron.
  • exports/log_entry_count: Cantidad de entradas de registro que se enrutaron.
  • exports/error_count: Cantidad de entradas de registro que no se pudieron enrutar.

Las métricas tienen etiquetas que registran los recuentos según el nombre del receptor y el nombre del destino, y te permiten saber si tu receptor enruta las entradas de registro correctamente o si falla. Para obtener detalles sobre cómo ver las métricas, consulta Descripción general de las métricas basadas en registros.

Si las métricas de tu sink indican que no tiene el rendimiento esperado, a continuación, se muestran algunos motivos posibles y qué hacer al respecto:

Latencia

  • No se recibieron entradas de registro coincidentes desde que creaste o actualizaste tu receptor; solo se enrutan entradas de registro nuevas.

    Espera una hora y vuelve a verificar tu destino.

  • Las entradas de registro coincidentes llegan tarde.

    Puede haber una demora antes de que puedas ver tus entradas de registro en el destino. Las entradas de registro que llegan tarde son especialmente comunes para los sumideros que tienen configurados buckets de Cloud Storage como destinos. Espera unas horas y vuelve a verificar tu destino.

El alcance o el filtro de visualización son incorrectos

  • El alcance que usas para ver las entradas de registro almacenadas en un bucket de registros es incorrecto.

    Define el alcance de la búsqueda en una o más vistas de registro de la siguiente manera:

  • El período que usas para seleccionar y ver datos en tu destino de receptor es demasiado estrecho.

    Intenta ampliar el período que usas cuando seleccionas datos en tu destino de receptor.

Error en el filtro de sink

  • El filtro del sink es incorrecto y no captura las entradas de registro que esperabas ver en tu destino.

    Usa el enrutador de registros en la consola de Google Cloud para editar el filtro de tu receptor. Para verificar que ingresaste el filtro correcto, selecciona Obtener vista previa de los registros en el panel Editar receptor. Se abrirá el Explorador de registros en una pestaña nueva con el filtro prepropagado. Si deseas obtener instrucciones para ver y administrar tus receptores, consulta Administra receptores.

Ver errores

Para cada uno de los destinos de receptores compatibles, el registro proporciona mensajes de error para los receptores configurados de forma incorrecta.

Existen varias formas de ver estos errores relacionados con el sumidero. Estos métodos se describen en las siguientes secciones:

  • Consulta los registros de errores generados para el sink.
  • Recibir notificaciones de errores de sink por correo electrónico El remitente de este correo electrónico es logging-noreply@google.com.

Registros de errores

El método recomendado para inspeccionar los errores relacionados con el receptor en detalle es ver las entradas de registro de errores que genera el receptor. Para obtener detalles sobre cómo ver las entradas de registro, consulta Visualiza registros con el Explorador de registros.

Puedes usar la siguiente consulta en el panel del editor de consultas del Explorador de registros para revisar los registros de errores de tu sink. La misma consulta funciona en la API de Logging y gcloud CLI.

Antes de copiar la consulta, reemplaza la variable SINK_NAME por el nombre del sumidero del que intentas solucionar el problema. Puedes encontrar el nombre del receptor en la página Enrutador de registros de la Google Cloud consola.

logName:"logging.googleapis.com%2Fsink_error"
resource.type="logging_sink"
resource.labels.name="SINK_NAME"

Por ejemplo, si el nombre de tu sink es my-sink-123, la entrada de registro podría verse similar a lo siguiente:

{
   errorGroups: [
   0: {
   id: "COXu96aNws6BiQE"
   }]
   insertId: "170up6jan"
   labels: {
      activity_type_name: "LoggingSinkConfigErrorV2"
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      error_code: "topic_not_found"
      error_detail: ""
      sink_id: "my-sink-123"
   }
   logName: "projects/my-project/logs/logging.googleapis.com%2Fsink_error"
   receiveTimestamp: "2024-07-11T14:41:42.578823830Z"
   resource: {
   labels: {
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      name: "my-sink-123"
      project_id: "my-project"
   }
   type: "logging_sink"
   }
   severity: "ERROR"
   textPayload: "Cloud Logging sink configuration error in my-project, sink my-sink-123: topic_not_found ()"
   timestamp: "2024-07-11T14:41:41.296157014Z"
}

El campo LogEntry labels y su información de par clave-valor anidado te ayudan a segmentar la fuente del error de tu sink. Contiene el recurso afectado, el sink afectado y el código de error. El campo labels.error_code contiene una descripción abreviada del error, que te permite saber qué componente de tu sink necesita reconfigurarse.

Para resolver este error, edita tu sink. Por ejemplo, puedes editar tu receptor con la página Enrutador de registros:

Ir a Enrutador de registros

Notificaciones por correo electrónico

Contactos esenciales envía notificaciones por correo electrónico de errores de configuración de sink a los contactos asignados a la categoría de notificaciones técnicas de un Google Cloud proyecto o su recurso superior. Si el recurso no tiene un contacto configurado para las notificaciones técnicas, los usuarios que aparecen como Propietario del proyecto roles/owner de IAM para el recurso reciben la notificación por correo electrónico.

El mensaje de correo electrónico contiene la siguiente información:

  • ID de recurso: Es el nombre del Google Cloud proyecto o de otro Google Cloud recurso en el que se configuró el receptor.
  • Nombre del receptor: Es el nombre del receptor que contiene el error de configuración.
  • Destino del receptor: Es la ruta de acceso completa del destino de enrutamiento del receptor. Por ejemplo, pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID.
  • Código de error: Es la descripción abreviada de la categoría de error, por ejemplo, topic_not_found.
  • Detalles del error: Información detallada sobre el error, incluidas recomendaciones para solucionar el error subyacente.

El remitente de este correo electrónico es logging-noreply@google.com.

Para ver y administrar tus receptores, usa la página Enrutador de registros:

Ir a Enrutador de registros

Cualquier error de configuración de sink que se aplique al recurso aparecerá en la lista como un Cloud Logging sink configuration error. Cada error contiene un vínculo a una de las entradas de registro que genera el receptor defectuoso. Para examinar los errores subyacentes en detalle, consulta la sección Registros de errores.

Tipos de errores de sink

En las siguientes secciones, se describen categorías amplias de errores relacionados con los sumideros y cómo solucionarlos.

Destino incorrecto

Si configuraste un receptor, pero luego ves un error de configuración que indica que no se pudo encontrar el destino cuando el registro intentó enrutar las entradas de registro, estas son algunas de las razones posibles:

  • La configuración de tu receptor contiene un error de escritura o algún otro error de formato en el destino de receptor especificado.

    Debes actualizar la configuración del sumidero para especificar correctamente el destino existente.

  • Es posible que se haya borrado el destino especificado.

    Puedes cambiar la configuración del sumidero para usar un destino diferente y existente, o bien volver a crear el destino con el mismo nombre.

Para resolver estos tipos de fallas, edita tu sumidero. Por ejemplo, puedes editar tu receptor con la página Enrutador de registros:

Ir a Enrutador de registros

Tu receptor comienza a enrutar las entradas de registro cuando se encuentra el destino y Logging recibe entradas de registro nuevas que coinciden con tu filtro.

Cómo administrar problemas de receptores

Si inhabilitaste un receptor para dejar de almacenar entradas de registro en un bucket de registros, pero aún ves que se enrutan entradas de registro, espera unos minutos para que se apliquen los cambios en el receptor.

Problemas de permisos

Cuando un receptor intenta enrutar una entrada de registro, pero carece de los permisos de IAM adecuados para el destino del receptor, este informa un error, que puedes ver, y omite la entrada de registro.

Cuando creas un receptor, se deben otorgar a la cuenta de servicio del receptor los permisos de destino adecuados. Si creas el sink en la consola de Google Cloud en el mismo proyectoGoogle Cloud , la consola de Google Cloud suele asignar estos permisos automáticamente. Sin embargo, si creas el receptor en un proyectoGoogle Cloud diferente o con gcloud CLI o la API de Logging, debes configurar los permisos de forma manual.

Si ves errores relacionados con los permisos de tu receptor, agrega los permisos necesarios o actualiza tu receptor para usar un destino diferente. Para obtener instrucciones sobre cómo actualizar estos permisos, consulta Permisos de destino.

Hay una leve demora entre la creación del receptor y el uso de su cuenta de servicio nueva para autorizar la escritura en el destino. Tu receptor comienza a desviar entradas de registro cuando se corrigen los permisos y Logging recibe entradas de registro nuevas que coinciden con tu filtro.

Problemas relacionados con las políticas de la organización

Si intentas enrutar una entrada de registro, pero encuentras una política de la organización que impide que Logging escriba en el destino del receptor, entonces el receptor no puede enrutar al destino seleccionado y, además, informa un error.

Si ves errores relacionados con las políticas de la organización, puedes hacer lo siguiente:

  • Actualiza la política de la organización del destino para quitar las restricciones que bloquean el sumidero de enrutar las entradas de registro. Esto presupone que tienes los permisos adecuados para actualizar la política de la organización.

    Puedes examinar si existe una restricción de ubicación de recursos (constraints/gcp.resourceLocations). Esta restricción determina las ubicaciones en las que se pueden almacenar los datos. Además, algunos servicios admiten restricciones que podrían afectar a un receptor de registros. Por ejemplo, existen varias restricciones que podrían aplicarse cuando se selecciona un destino de Pub/Sub. Para obtener una lista de las posibles restricciones, consulta las restricciones de las políticas de la organización.

    Para obtener instrucciones, consulta Crea y edita políticas.

  • Si no puedes actualizar la política de la organización, actualiza tu receptor en la página Log Router para usar un destino que cumpla con los requisitos.

    Ir a Enrutador de registros

Tu receptor comienza a enrutar entradas de registro cuando la política de la organización ya no bloquea el receptor para que escriba en el destino y el registro recibe entradas de registro nuevas que coinciden con tu filtro.

Problemas con las claves de encriptación

Si usas claves de encriptación, ya sea que las administres con Cloud Key Management Service o tú mismo, para encriptar los datos en el destino del sink, es posible que veas errores relacionados. Estos son algunos problemas posibles y las formas de solucionarlos:

  • No se habilita la facturación para el Google Cloud proyecto que contiene la clave de Cloud KMS.

    • Incluso si el receptor se creó de forma correcta con el destino correcto, se muestra este mensaje de error si no hay una cuenta de facturación válida asociada con el proyecto Google Cloud que contiene la clave.

    • Asegúrate de que haya una cuenta de facturación válida vinculada al Google Cloud proyecto que contenga la clave. Si no hay una cuenta de facturación vinculada al proyectoGoogle Cloud , habilita la facturación para ese proyecto Google Cloud o usa una clave de Cloud KMS que contenga un proyecto Google Cloud que tenga una cuenta de facturación válida vinculada a ella.

  • No se puede encontrar la clave de Cloud KMS.

    • No se encuentra el Google Cloud proyecto que contiene la clave de Cloud KMS configurada para encriptar los datos.

    • Usa una clave de Cloud KMS válida de un proyectoGoogle Cloud existente.

  • La ubicación de la clave de Cloud KMS no coincide con la ubicación del destino.

    • Si el Google Cloud proyecto que contiene la clave de Cloud KMS se encuentra en una región que difiere de la región del destino, entonces la encriptación falla y el receptor no puede enrutar datos a ese destino.

    • Usa una clave de Cloud KMS que contenga un proyecto Google Cloud cuya región coincida con el destino del sumidero.

  • Se deniega el acceso a la clave de encriptación a la cuenta de servicio del receptor.

    • Incluso si el receptor se creó de forma correcta con los permisos de la cuenta de servicio correctos, este mensaje de error se muestra si el destino del receptor usa una clave de encriptación que no le proporciona a la cuenta de servicio los permisos suficientes para encriptar o desencriptar los datos.

    • Otorga el rol de Encriptador/Desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio especificada en el campo writerIdentity del receptor para la clave que se usa en el destino. También verifica que la API de Cloud KMS esté habilitada.

Problemas de cuotas

Cuando los receptores escriben entradas de registro, se aplican cuotas específicas del destino a los proyectos deGoogle Cloud en los que se crearon los receptores. Si se agotan las cuotas, el receptor deja de enrutar las entradas de registro al destino.

Por ejemplo, cuando enrutas datos a BigQuery, es posible que veas un error que te indique que se superó la cuota de inserción de transmisión por tabla para una tabla determinada en tu conjunto de datos. En este caso, es posible que tu sink esté enrutando demasiadas entradas de registro demasiado rápido. El mismo concepto se aplica a los otros destinos de destino compatibles, por ejemplo, a los temas de Pub/Sub.

Para solucionar los problemas de agotamiento de la cuota, disminuye la cantidad de datos de registro que se enrutan actualizando el filtro de tu receptor para que coincida con menos entradas de registro. Puedes usar la función sample en tu filtro para seleccionar una fracción de la cantidad total de entradas de registro.

Cuando hay cuota disponible, el receptor enruta las entradas de registro al destino del receptor.

Para obtener detalles sobre los límites que podrían aplicarse cuando enrutas entradas de registro, revisa la información de cuota del destino correspondiente:

Además de los tipos de errores de sink generales, estos son los tipos de errores específicos del destino más comunes y cómo puedes corregirlos.

Errores de enrutamiento a Cloud Storage

Los siguientes son los errores más comunes cuando se enrutan entradas de registro a Cloud Storage:

  • Entradas de registro tardías:

    • Las entradas de registro enrutadas se guardan en depósitos de Cloud Storage en lotes por hora. Es posible que se necesiten entre 2 y 3 horas para que aparezcan las primeras entradas.

    • Los fragmentos de los archivos de registro enrutados con el sufijo An (“Append”) contienen las entradas de registro que llegaron tarde. Si el destino de Cloud Storage experimenta una interrupción, Cloud Logging almacena los datos en búfer hasta que la interrupción finaliza.

  • No se pudieron otorgar los permisos correctos al destino:

    • Verifica que la cuenta de servicio del receptor de registros tenga los permisos correctos. Para obtener más información, consulta la sección Problemas de permisos de este documento.

Errores de enrutamiento a BigQuery

Los siguientes son los errores más comunes cuando se enrutan entradas de registro a BigQuery:

  • Esquema de tabla no válido:

    • Las entradas de registro transmitidas a la tabla de tu conjunto de datos de BigQuery no coinciden con el esquema de la tabla actual. Entre los problemas comunes, se incluye intentar enrutar entradas de registro con diferentes tipos de datos, lo que genera una discrepancia de esquema. Por ejemplo, uno de los campos en la entrada de registro es un número entero, mientras que una columna correspondiente en el esquema tiene un tipo de cadena.

    • Asegúrate de que tus entradas de registro coincidan con el esquema de la tabla. Después de corregir la fuente del error, puedes cambiar el nombre de tu tabla actual y dejar que Logging la cree de nuevo.

    • BigQuery admite la carga de datos anidados en sus tablas. Sin embargo, cuando se cargan datos desde Logging, el límite máximo de profundidad anidada para una columna es de 13 niveles.

    Cuando BigQuery identifica una discrepancia de esquema, crea una tabla dentro del conjunto de datos correspondiente para almacenar la información de error. El tipo de tabla determina el nombre de la tabla. Para las tablas fragmentadas por fecha, el formato de nombres es export_errors_YYYYMMDD. Para las tablas particionadas, el formato de nombres es export_errors. Para obtener información sobre el esquema de las tablas de errores y sobre cómo evitar discrepancias futuras por tipo de campo, consulta Discrepancias en el esquema.

  • Las entradas de registro están fuera de los límites de tiempo permitidos:

    • Las entradas de registro transmitidas a la tabla de BigQuery particionada se encuentran fuera de los límites de tiempo permitidos. BigQuery no acepta entradas de registro con fechas muy lejanas en el pasado o el futuro.

    • Puedes actualizar tu receptor para enrutar esas entradas de registro a Cloud Storage y usar un trabajo de carga de BigQuery. Consulta la documentación de BigQuery para obtener más instrucciones.

  • El conjunto de datos no permite que la cuenta de servicio asociada con el receptor de registros escriba en él:

    • Incluso si el receptor se creó de forma correcta con los permisos de la cuenta de servicio correctos, este mensaje de error se muestra si no hay una cuenta de facturación válida asociada con el proyecto Google Cloud que contiene el destino del receptor.

    • Asegúrate de que haya una cuenta de facturación vinculada a tu Google Cloud proyecto. Si una cuenta de facturación no está vinculada al proyecto de destino de sinkGoogle Cloud , habilita la facturación para ese Google Cloud proyecto o actualiza el destino de sink para que se encuentre en un proyectoGoogle Cloud que tenga una cuenta de facturación válida vinculada a él.

  • El conjunto de datos contiene entradas de registro duplicadas:

    • Las entradas de registro duplicadas pueden ocurrir cuando hay fallas en la transmisión de entradas de registro a BigQuery, lo que incluye reintentos o parámetros de configuración incorrectos. Cloud Logging anula las entradas de registro con el mismo timestamp y insertId en el momento de la consulta. BigQuery no elimina las entradas de registro duplicadas.

    • Para ignorar las entradas de registro duplicadas en BigQuery, incluye la cláusula SELECT DISTINCT en tu consulta. Por ejemplo:

    SELECT DISTINCT insertId, timestamp FROM TABLE_NAME
    
  • Las entradas de registro se reabastecen después de un incidente de Cloud Logging:

    El registro genera automáticamente tablas con un prefijo backfill_ como parte de una operación de reabastecimiento que se produce cuando un incidente de Cloud Logging impide que se enruten los datos de registro a BigQuery.

    Las tablas con un prefijo backfill_ contienen todas las entradas de registro que se debían desviar a BigQuery durante el período del incidente. Estas tablas pueden contener algunas entradas de registro que se enrutaron correctamente a la tabla especificada por el sumidero.

    Para evitar datos duplicados, te recomendamos que combines los datos de las tablas de reabastecimiento con las tablas originales y, luego, borres las tablas de reabastecimiento.

Errores de enrutamiento a los buckets de Cloud Logging

Es posible que te encuentres con una situación en la que puedas ver entradas de registro en el Explorador de registros que excluiste con tu receptor. Aún puedes ver estas entradas de registro si se cumple alguna de las siguientes condiciones:

  • Ejecutas la consulta en el Google Cloud proyecto que generó las entradas de registro.

    Para solucionarlo, verifica que estés ejecutando la consulta en el proyectoGoogle Cloud correcto.

  • Las entradas de registro excluidas se enviaron a varios buckets de registros. Verás una copia del mismo registro que deseas excluir.

    Para solucionar este problema, revisa tus receptores en la página Enrutador de registros para verificar que no incluyas las entradas de registro en los filtros de otros receptores.

  • Tienes acceso a las vistas en el bucket de registros al que se enviaron las entradas de registro. En este caso, puedes ver esas entradas de registro de forma predeterminada.

    Para evitar ver estas entradas de registro en el Explorador de registros, puedes definir mejor el permiso de tu búsqueda a tu proyecto o bucket Google Cloud de origen.

Soluciona problemas de almacenamiento de registros

¿Por qué no puedo borrar este bucket?

Si quieres borrar un bucket, haz lo siguiente:

  • Asegúrate de tener los permisos correctos para borrar el bucket. Para obtener la lista de los permisos que necesitas, consulta Control de acceso con IAM.

  • Para determinar si el bucket está bloqueado, enumera los atributos del bucket. Si el bucket está bloqueado, verifica su período de retención. No puedes borrar un bucket bloqueado hasta que todos los registros del bucket cumplan con el período de retención.

  • Verifica que el bucket de registros no tenga un conjunto de datos de BigQuery vinculado. No puedes borrar un bucket de registros con un conjunto de datos vinculado.

    Se muestra el siguiente error en respuesta a un comando delete en un bucket de registros que tiene un conjunto de datos vinculado:

    FAILED_PRECONDITION: This bucket is used for advanced analytics and has an active link. The link must be deleted first before deleting the bucket
    

    Para obtener una lista de los vínculos asociados con un bucket de registros, ejecuta el comando [gcloud logging links list][link-list] o el método de la API projects.locations.buckets.links.list.

¿Qué cuentas de servicio enrutan registros a mi bucket?

Para determinar si alguna cuenta de servicio tiene permisos de IAM para desviar registros a tu bucket, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página IAM:

    Ir a IAM

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.

  2. En la pestaña Permisos, selecciona Roles para ver los permisos. Verás una tabla con todos los roles y principales de IAM asociados con tu proyecto deGoogle Cloud .

  3. En el cuadro de texto Filtro de la tabla, ingresa Logs Bucket Writer.

    Verás todos los principales con el rol de Escritor de bucket de registros. Si un principal es una cuenta de servicio, su ID contiene la cadena gserviceaccount.com.

  4. Opcional: Si quieres quitarle a una cuenta de servicio la capacidad de enrutar registros a tu proyecto de Google Cloud , selecciona la casilla de verificación de la cuenta de servicio y haz clic en Quitar.

¿Por qué veo registros de un Google Cloud proyecto aunque los excluí de mi receptor _Default?

Es posible que estés viendo registros en un bucket de registros de un proyecto Google Cloud centralizado, que agrega registros de toda tu organización.

Si usas el Explorador de registros para acceder a estos registros y ver los registros que excluiste del receptor _Default, es posible que tu vista esté configurada en el nivel del proyectoGoogle Cloud .

Para solucionar este problema, selecciona Vista de registro en el menú Definir mejor el permiso y, luego, selecciona la vista de registro asociada con el bucket _Default en tu proyectoGoogle Cloud . Ya no deberías ver los registros excluidos.