Solucionar problemas de enrutamiento y almacenamiento de registros

En este documento se explican los problemas habituales de enrutamiento y almacenamiento, así como el uso de la consolaGoogle Cloud para ver y solucionar errores de configuración o resultados inesperados.

Para obtener información general sobre cómo ver datos de registro, consulta el artículo Ver registros en destinos de sumidero.

Solucionar problemas de enrutamiento de registros

En esta sección se describe cómo solucionar problemas habituales al enrutar 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 solucionar este problema, actualiza los filtros de exclusión de los sumideros que enrutan entradas de registro al destino. Los filtros de exclusión te permiten evitar que se enruten a un destino las entradas de registro seleccionadas.

Por ejemplo, supongamos que creas un sumidero 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, añade el siguiente filtro de exclusión al sumidero:

logName:projects/PROJECT_ID

También puede excluir entradas de registro de varios proyectos mediante el operador lógico OR para unir cláusulas logName.

Faltan entradas de registro en el destino

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

En algunos casos, no se genera ningún error, pero es posible que las entradas de registro no estén disponibles cuando intentes acceder a ellas en tu destino. Si sospechas que tu receptor no está enrutando correctamente las entradas de registro, comprueba las métricas basadas en registros del sistema del receptor:

  • exports/byte_count: número de bytes de las entradas de registro que se han enrutado.
  • exports/log_entry_count: número de entradas de registro que se han enrutado.
  • exports/error_count: número de entradas de registro que no se han podido enrutar.

Las métricas tienen etiquetas que registran los recuentos por nombre de sumidero y nombre de destino, y te indican si el sumidero está enrutando las entradas de registro correctamente o no. Para obtener información sobre cómo ver las métricas, consulta el artículo Información general sobre las métricas basadas en registros.

Si las métricas de su receptor indican que no está funcionando como esperaba, aquí tiene algunos posibles motivos y lo que puede hacer al respecto:

Latencia

  • No se han recibido entradas de registro coincidentes desde que creó o actualizó su receptor. Solo se enrutan las entradas de registro nuevas.

    Espera una hora y vuelve a comprobar tu destino.

  • Las entradas de registro coincidentes llegan tarde.

    Puede haber un retraso antes de que puedas ver las entradas de registro en el destino. Las entradas de registro que llegan tarde son especialmente habituales en los receptores que tienen configurados segmentos de Cloud Storage como destinos. Espera unas horas y vuelve a comprobar el destino.

El ámbito o el filtro de visualización no son correctos

  • El ámbito que estás usando para ver las entradas de registro almacenadas en un segmento de registros no es correcto.

    Acota la búsqueda a una o varias vistas de registro de la siguiente manera:

  • El intervalo de tiempo que estás usando para seleccionar y ver datos en el destino de tu receptor es demasiado limitado.

    Prueba a ampliar el periodo que estás usando al seleccionar datos en el destino de tu receptor.

Error en el filtro de receptor

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

    Para editar el filtro de tu receptor, usa Log Router en la consola Google Cloud . Para comprobar que has introducido el filtro correcto, selecciona Vista previa de los registros en el panel Editar receptor. Se abrirá el Explorador de registros en una nueva pestaña con el filtro rellenado previamente. Para obtener instrucciones sobre cómo ver y gestionar tus receptores, consulta Gestionar receptores.

Ver errores

En cada uno de los destinos de receptor admitidos, Logging proporciona mensajes de error para los receptores configurados incorrectamente.

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

  • Consulta los registros de errores generados para el receptor.
  • Recibir notificaciones de errores de receptor por correo electrónico. El remitente de este correo 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 del registro de errores generadas por el receptor. Para obtener información sobre cómo ver entradas de registro, consulta el artículo Ver registros con el Explorador de registros.

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

Antes de copiar la consulta, sustituye la variable SINK_NAME por el nombre del receptor con el que estás intentando solucionar el problema. Puedes encontrar el nombre de tu receptor en la página Log Router (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 del sumidero es my-sink-123, la entrada de registro podría ser similar a la 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 anidada de clave-valor te ayudan a identificar la fuente del error de tu receptor. Contiene el recurso afectado, el receptor afectado y el código de error. El campo labels.error_code contiene una descripción abreviada del error, que te indica qué componente de tu receptor necesita una nueva configuración.

Para resolver este error, edita el receptor. Por ejemplo, puedes editar el sumidero en la página Enrutador de registros:

Ve a Enrutador de registros.

Notificaciones por correo electrónico

Contactos esenciales envía notificaciones por correo sobre errores de configuración de sink a los contactos asignados a la categoría de notificación Técnica de un Google Cloud proyecto o de su recurso principal. Si el recurso no tiene ningún contacto configurado para las notificaciones técnicas, los usuarios que figuren como propietarios del proyecto roles/owner de gestión de identidades y accesos del recurso recibirán la notificación por correo.

El mensaje de correo contiene la siguiente información:

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

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

Para ver y gestionar tus receptores, usa la página Log Router:

Ve a Enrutador de registros.

Los errores de configuración de los receptores que se apliquen al recurso aparecerán en la lista como Cloud Logging sink configuration error. Cada error contiene un enlace a una de las entradas de registro generadas por el receptor defectuoso. Para examinar los errores subyacentes en detalle, consulte la sección Registros de errores.

Tipos de errores de receptor

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

Destino incorrecto

Si configura un receptor, pero aparece un error de configuración que indica que no se ha encontrado el destino cuando Logging ha intentado enrutar entradas de registro, puede deberse a alguno de los siguientes motivos:

  • La configuración de tu sumidero contiene un error ortográfico u otro error de formato en el destino del sumidero especificado.

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

  • Es posible que se haya eliminado el destino especificado.

    Puedes cambiar la configuración del receptor para usar otro destino o volver a crear el destino con el mismo nombre.

Para resolver este tipo de errores, edita el receptor. Por ejemplo, puedes editar el sumidero en la página Enrutador de registros:

Ve a Enrutador de registros.

El sumidero empieza a enrutar las entradas de registro cuando se encuentra el destino y Logging recibe nuevas entradas de registro que coinciden con el filtro.

Gestionar problemas de sumideros

Si inhabilitaste un receptor para dejar de almacenar entradas de registro en un contenedor de registro, pero sigues viendo que se enrutan entradas de registro, espera unos minutos para que se apliquen los cambios en el receptor.

Problemas con los permisos

Cuando un receptor intenta enrutar una entrada de registro, pero no tiene los permisos de gestión de identidades y accesos adecuados para el destino del receptor, este informa de un error, que puede consultar, y omite la entrada de registro.

Cuando creas un sumidero, se debe conceder a la cuenta de servicio del sumidero los permisos de destino adecuados. Si creas el receptor en la Google Cloud consola en el mismo Google Cloud proyecto, la Google Cloud consola suele asignar estos permisos automáticamente. Sin embargo, si creas el receptor en otro proyecto o mediante la interfaz de línea de comandos gcloud o la API Logging, debes configurar los permisos manualmente.Google Cloud

Si se producen errores relacionados con los permisos de su receptor, añada los permisos necesarios o actualice el receptor para que use otro destino. Para obtener instrucciones sobre cómo actualizar estos permisos, consulta Permisos de destino.

Hay un ligero retraso entre la creación del sumidero y el uso de la nueva cuenta de servicio del sumidero para autorizar la escritura en el destino. Tu sumidero empieza a enrutar entradas de registro cuando se corrigen los permisos y Logging recibe nuevas entradas de registro que coinciden con tu filtro.

Problemas con las políticas de organización

Si intentas enrutar una entrada de registro, pero te encuentras con una política de organización que impide que Logging escriba en el destino del receptor, este no podrá enrutar al destino seleccionado y mostrará 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 impiden que el sumidero enrute las entradas de registro. Para ello, debes tener los permisos adecuados para actualizar la política de la organización.

    Puedes comprobar 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 pueden afectar a un receptor de registro. Por ejemplo, hay varias restricciones que pueden aplicarse cuando se selecciona un destino de Pub/Sub. Para ver una lista de las posibles restricciones, consulta Restricciones de las políticas de la organización.

    Para obtener instrucciones, consulta el artículo Crear y editar políticas.

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

    Ve a Enrutador de registros.

Tu sumidero empieza a enrutar entradas de registro cuando la política de la organización deja de impedir que el sumidero escriba en el destino y Logging recibe nuevas entradas de registro que coinciden con tu filtro.

Problemas con las claves de cifrado

Si utilizas claves de cifrado, ya sean gestionadas con Cloud Key Management Service o por ti, para cifrar los datos en el destino del receptor, es posible que veas errores relacionados. A continuación, se indican algunos problemas posibles y cómo solucionarlos:

  • La facturación no se ha habilitado en el Google Cloud proyecto que contiene la clave de Cloud KMS.

    • Aunque el receptor se haya creado correctamente con el destino correcto, este mensaje de error se muestra si no hay ninguna cuenta de facturación válida asociada al proyecto que contiene la clave. Google Cloud

    • Asegúrate de que haya una cuenta de facturación válida vinculada al Google Cloud proyecto que contenga la clave. Si una cuenta de facturación no está vinculada alGoogle Cloud proyecto, habilita la facturación en ese Google Cloud proyecto o usa una clave de Cloud KMS incluida en un Google Cloud proyecto que tenga una cuenta de facturación válida vinculada.

  • No se encuentra la clave de Cloud KMS.

    • No se ha encontrado el Google Cloud proyecto que contiene la clave de Cloud KMS configurada para cifrar los datos.

    • Usa una clave de Cloud KMS válida de un proyecto ya creado.Google Cloud

  • 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 diferente a la de destino, la encriptación falla y el sumidero no puede enrutar los datos a ese destino.

    • Usa una clave de Cloud KMS contenida en un Google Cloud proyecto cuya región coincida con la del destino del receptor.

  • Se ha denegado el acceso a la clave de cifrado a la cuenta de servicio del sumidero.

Problemas con las 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 dejará de enrutar las entradas de registro al destino.

Por ejemplo, al enrutar datos a BigQuery, puede que aparezca un error que indique que se ha superado la cuota de inserciones de streaming por tabla de una tabla concreta de su conjunto de datos. En este caso, es posible que tu receptor esté enrutando demasiadas entradas de registro demasiado rápido. El mismo concepto se aplica a los otros destinos de receptor admitidos, como los temas de Pub/Sub.

Para solucionar los problemas de agotamiento de la cuota, reduce la cantidad de datos de registro que se están enrutando. Para ello, actualiza el filtro del sumidero de modo que coincidan menos entradas de registro. Puedes usar la función sample en tu filtro para seleccionar una fracción del número total de entradas de registro.

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

Para obtener información detallada sobre los límites que pueden aplicarse al enrutar entradas de registro, consulte la información sobre cuotas del destino correspondiente:

Además de los tipos de errores de receptor generales, a continuación se indican los tipos de errores más habituales específicos de un destino y cómo puede corregirlos.

Errores de enrutamiento a Cloud Storage

A continuación, se indican los errores más habituales que se producen al enrutar entradas de registro a Cloud Storage:

  • Entradas de registro que llegan tarde:

    • Las entradas de registro enrutadas se guardan en segmentos de Cloud Storage en lotes por horas. Las primeras entradas pueden tardar entre 2 y 3 horas en aparecer.

    • Los fragmentos de archivos de registro enrutados con el sufijo An ("Append") contienen entradas de registro que han llegado tarde. Si el destino de Cloud Storage sufre una interrupción, Cloud Logging almacenará los datos en búfer hasta que se solucione.

  • No se han podido conceder los permisos adecuados al destino:

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

Errores de enrutamiento a BigQuery

A continuación, se indican los errores más habituales que se producen al enrutar 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 habituales se incluye el intento de enrutar entradas de registro con diferentes tipos de datos, lo que provoca un error de incompatibilidad de esquemas. Por ejemplo, uno de los campos de la entrada de registro es un número entero, mientras que la columna correspondiente del esquema tiene un tipo de cadena.

    • Asegúrate de que las entradas de registro coincidan con el esquema de la tabla. Una vez que haya corregido el origen del error, puede cambiar el nombre de la tabla actual y dejar que Logging vuelva a crearla.

    • BigQuery permite cargar datos anidados en sus tablas. Sin embargo, al cargar datos de Logging, la profundidad máxima de anidación de una columna es de 13 niveles.

    Cuando BigQuery identifica una discrepancia de esquema, crea una tabla en el conjunto de datos correspondiente para almacenar la información del error. El tipo de una tabla determina su nombre. En el caso de las tablas particionadas por fecha, el formato de nomenclatura es export_errors_YYYYMMDD. En las tablas con particiones, el formato de nomenclatura es export_errors. Para obtener información sobre el esquema de las tablas de errores y sobre cómo evitar que se produzcan errores de tipo de campo en el futuro, consulta Errores de coincidencia 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 están fuera de los límites de tiempo permitidos. BigQuery no acepta entradas de registro que sean demasiado antiguas o futuras.

    • Puedes actualizar tu receptor para enrutar esas entradas de registro a Cloud Storage y usar una tarea 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 al sumidero de registros escriba en él:

    • Aunque el sumidero se haya creado correctamente con los permisos de cuenta de servicio correctos, este mensaje de error se muestra si no hay ninguna cuenta de facturación válida asociada al Google Cloud proyecto que contiene el destino del sumidero.

    • Asegúrate de que haya una cuenta de facturación vinculada a tu Google Cloud proyecto. Si no hay ninguna cuenta de facturación vinculada al proyecto de destino del sumidero, habilita la facturación en ese proyecto o actualiza el destino del sumidero para que se encuentre en un proyecto que tenga una cuenta de facturación válida vinculada.Google Cloud Google Cloud Google Cloud

  • El conjunto de datos contiene entradas de registro duplicadas:

    • Las entradas de registro duplicadas pueden producirse cuando hay errores al transmitir entradas de registro a BigQuery, por ejemplo, debido a reintentos o a configuraciones incorrectas. Cloud Logging elimina las entradas de registro duplicadas que tienen 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 rellenan después de un incidente de Cloud Logging:

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

    Las tablas con el prefijo backfill_ contienen todas las entradas de registro que se iban a enrutar a BigQuery durante el periodo del incidente. Estas tablas pueden contener algunas entradas de registro que se hayan enrutado correctamente a la tabla especificada por el receptor.

    Para evitar que se dupliquen los datos, te recomendamos que combines los datos de las tablas de reposición con los de las tablas originales y, a continuación, elimines las tablas de reposición.

Errores de enrutamiento a segmentos de Cloud Logging

Puede que te encuentres en una situación en la que veas entradas de registro en el explorador de registros que has excluido con tu receptor. Podrás seguir viendo estas entradas de registro si se cumple alguna de las siguientes condiciones:

  • Estás ejecutando la consulta en el proyecto que ha generado las entradas de registro. Google Cloud

    Para solucionarlo, comprueba que estás ejecutando la consulta en elGoogle Cloud proyecto correcto.

  • Las entradas de registro excluidas se han enviado a varios cubos de registro. Estás viendo una copia del mismo registro que querías excluir.

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

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

    Para evitar que estas entradas de registro aparezcan en el Explorador de registros, puedes acotar la búsqueda al proyecto o al segmento de origen. Google Cloud

Solucionar problemas de almacenamiento de registros

¿Por qué no puedo eliminar este contenedor?

Si intentas eliminar un contenedor, haz lo siguiente:

  • Comprueba que el contenedor de registro no tenga ningún conjunto de datos de BigQuery vinculado. No puedes eliminar un contenedor de registro con un conjunto de datos vinculado.

    El siguiente error se muestra en respuesta a un comando delete en un contenedor de registro 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 enumerar los enlaces asociados a un contenedor de registro, ejecuta el comando gcloud logging links list o el método de la API projects.locations.buckets.links.list.

¿Qué cuentas de servicio están enviando registros a mi segmento?

Para determinar si alguna cuenta de servicio tiene permisos de gestión de identidades y accesos para enrutar registros a tu bucket, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página Gestión de identidades y accesos:

    Ve a Gestión de identidades y accesos.

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

  2. En la pestaña Permisos, selecciona Roles. Verás una tabla con todos los roles de gestión de identidades y accesos y los principales asociados a tuGoogle Cloud proyecto.

  3. En el cuadro de texto Filtro de la tabla, introduce Escritor de cubos de registro.

    Verás todos los principales que tengan el rol Escritor de cubos de Logs. Si un principal es una cuenta de servicio, su ID contiene la cadena gserviceaccount.com.

  4. Opcional: Si quieres impedir que una cuenta de servicio pueda enrutar registros a tu proyecto Google Cloud , selecciona la casilla de la cuenta de servicio y haz clic en Quitar.

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

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

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

Para solucionar este problema, seleccione Vista de registro en el menú Acotar y, a continuación, seleccione la vista de registro asociada al _DefaultcontenedorGoogle Cloud de su proyecto. Ya no deberías ver los registros excluidos.