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 de Google Cloud para ver y solucionar errores de configuración o resultados inesperados.

Para obtener información general sobre el uso de registros en tus destinos de receptores, consulta Visualiza registros en destinos de receptores.

Solucionar problemas de registros de enrutamiento

En esta sección, se describe cómo solucionar problemas habituales cuando se enrutan los registros.

El destino contiene registros no deseados

Estás viendo los registros enrutados a un destino y determinas que este contiene registros no deseados.

Para resolver esta condición, actualiza los filtros de exclusión de tus receptores que enrutan registros al destino. Los filtros de exclusión te permiten excluir los registros seleccionados para que no se enruten a un destino.

Por ejemplo, supongamos que creas un receptor agregado para enrutar los registros de una organización a un destino. Para evitar que los registros 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 registros de varios proyectos mediante el operador lógico OR para unir cláusulas logName.

Faltan registros en el destino

Quizás el problema más común relacionado con el receptor es que los registros parecen faltar en un destino de receptor.

En algunos casos, no se genera un error, pero puedes notar que los registros no están disponibles cuando intentas acceder a ellos en tu destino. Si sospechas que el receptor no enruta correctamente los registros, verifica las métricas basadas en registros del sistema del receptor:

  • exports/byte_count: la cantidad de bytes en las entradas de registro que se enrutaron
  • exports/log_entry_count: la 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 por nombre del receptor y nombre de destino, y te permiten saber si tu receptor enruta los datos de registro de forma correcta o falla. Para obtener detalles sobre cómo ver las métricas, consulta Visualiza métricas basadas en registros.

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

Latencia

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

    Espera una hora y vuelve a verificar el destino.

  • Las entradas de registro coincidentes llegan tarde.

    Puede haber un retraso antes de que puedas ver tus registros en el destino. Los registros tardíos son, en especial, comunes para los receptores que tienen configurados buckets de Cloud Storage como sus destinos. Espera unas horas y vuelve a verificar el destino.

La visualización del alcance o filtro es incorrecto

Error en el filtro del receptor

  • El filtro del receptor es incorrecto y no captura los registros que esperabas ver en tu destino.

    • Edita el filtro de tu receptor con el enrutador de registros en la consola de Google Cloud. 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. Para obtener instrucciones sobre cómo ver y administrar tus receptores, consulta Administra receptores.

Ver errores

Para cada uno de los destinos de receptores admitidos, Logging proporciona mensajes de error para receptores mal configurados.

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

  • Visualiza los registros de errores generados para el receptor.
  • Recibe notificaciones de errores del receptor por correo electrónico.

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 más información sobre cómo ver los registros, consulta Visualiza los registros con el Explorador de registros.

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

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

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

Por ejemplo, si el nombre de tu receptor es my-sink-123, la entrada de registro puede ser similar a la siguiente:

{
  "textPayload": "Cloud Logging export config error in my-logs-project, export sink my-sink-123: dataset_not_found ()",
  "insertId": "12akhzyb14452",
  "resource": {
    "type": "logging_sink",
    "labels": {
      "project_id": "my-logs-test-project",
      "destination": "",
      "name": "my-sink-123"
    }
  },
  "timestamp": "2021-08-02T17:01:28.620961700Z",
  "severity": "ERROR",
  "labels": {
    "error_code": "dataset_not_found",
    ...
    "destination": "bigquery.googleapis.com/projects/my-logs-project/datasets/my-dataset",
    "sink_id": "my-sink-123",
    "activity_type_name": "LoggingSinkConfigErrorV2"
  },
  "logName": "projects/cloud-logs-test-project/logs/logging.googleapis.com%2Fsink_error",
  "receiveTimestamp": "2021-08-02T17:01:30.148869575Z"
}

El campo labels de LogEntry y su información clave-valor anidada te ayudan a orientarte a la fuente del error de tu receptor; contiene el recurso y el receptor afectados y el código de error afectados. El campo labels.error_code contiene una descripción abreviada del error, que te indica qué componente del receptor debe volver a configurarse.

Para actualizar tu receptor, usa el enrutador de registros.

En el panel de navegación de la consola de Google Cloud, selecciona Logging y, luego, Enrutador de registros:

Ir a Enrutador de registros

Notificaciones por correo electrónico

Si te suscribiste a un proyecto de Google Cloud o a su recurso superior como Contacto técnico esencial, recibirás notificaciones por correo electrónico sobre el error de la configuración del receptor. Si no hay contactos técnicos esenciales configurados para un recurso, los usuarios que figuren como propietario del proyecto de IAM roles/owner para el recurso recibirán 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 proyecto de Google Cloud o de otro recurso de Google Cloud 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: La ruta de acceso completa del destino de enrutamiento del receptor; por ejemplo, bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
  • Código de error: la descripción abreviada de la categoría de error, por ejemplo, dataset_not_found
  • Detalles del error: Información detallada sobre el error, incluidas recomendaciones para solucionar el error subyacente

Para ver y administrar tus receptores, usa el Enrutador de registros.

En el panel de navegación de la consola de Google Cloud, selecciona Logging y, luego, Enrutador de registros:

Ir a Enrutador de registros

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

Tipos de errores del receptor

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

Destino incorrecto

Si configuras un receptor, pero ves un error de configuración que no se pudo encontrar el destino cuando Logging intentó enrutar los registros, estas son algunas de las razones posibles:

  • La configuración del receptor contiene un error ortográfico o de otro tipo de error de formato en el destino del receptor especificado.

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

  • Es posible que se haya borrado el destino especificado.

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

En cualquier caso, para solucionar cualquier problema, ve a la página Enrutador de registros.

En el panel de navegación de la consola de Google Cloud, selecciona Logging y, luego, Enrutador de registros:

Ir a Enrutador de registros

El receptor comienza a enrutar los registros cuando se encuentra el destino y Logging recibe los registros nuevos que coinciden con tu filtro.

Administra problemas de los receptores

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

Problemas con los permisos

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

Cuando creas un receptor, su cuenta de servicio debe tener los permisos de destino adecuados. Si creas el receptor en la consola de Google Cloud en el mismo proyecto de Google Cloud, la consola de Google Cloud asigna estos permisos automáticamente. Si creas el receptor en un proyecto diferente de Google Cloud o mediante 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 al destino o actualiza tu receptor para que use un destino diferente. Si deseas obtener instrucciones para actualizar estos permisos, consulta Permisos de destino.

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

Problemas 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, este no puede enrutar al destino seleccionado y, luego, 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 para el destino a fin de quitar las restricciones que bloquean al receptor de las entradas de registro de enrutamiento; esto supone que tienes los permisos adecuados para actualizar la política 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 Enrutador de registros para usar un destino compatible.

    En el panel de navegación de la consola de Google Cloud, selecciona Logging y, luego, Enrutador de registros:

    Ir a Enrutador de registros

El receptor comienza a enrutar los registros cuando la política de la organización ya no impide que el receptor escriba en el destino, y Logging recibe los registros nuevos que coinciden con tu filtro.

Problemas con las claves de encriptación

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

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

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

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

  • No se puede encontrar la clave de Cloud KMS.

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

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

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

    • Si el proyecto de Google Cloud que contiene la clave de Cloud KMS se encuentra en una región diferente de la región de destino, la encriptación fallará y el receptor no podrá enrutar los datos a ese destino.

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

  • Se denegó 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 la función de encriptador o desencriptador de CryptoKey de Cloud KMS en la cuenta de servicio especificada en el campo writerIdentity del receptor para la clave que se usa en el destino. Además, asegúrate de que la API de Cloud KMS esté habilitada.

Problemas de cuotas

Cuando los receptores escriben registros, las cuotas específicas del destino se aplican a los proyectos de Google Cloud en los que se crearon los receptores. Si se agotan las cuotas, el receptor deja de enrutar los registros 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 de tu conjunto de datos. En este caso, es posible que tu receptor esté enrutando demasiadas entradas de registro muy rápido. El mismo concepto se aplica a los otros destinos de receptor 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 mediante la actualización del 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.

Tu receptor comienza a enrutar los registros a tu destino cuando lo actualizas para que coincida con menos entradas de registro o cuando se actualizan las cuotas.

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

Además de los tipos de error del receptor generales, a continuación, se detallan los tipos de errores específicos del destino más comunes y cómo puedes corregirlos.

Enrutamiento de errores a Cloud Storage

Los siguientes son los errores más comunes cuando se enrutan registros 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 finalice.

  • No se pudieron otorgar los permisos correctos para el destino:

    • Incluso si el receptor se creó de forma correcta con los permisos de cuenta de servicio correctos, este mensaje de error aparece si el modelo de control de acceso para el bucket de Cloud Storage se configuró como acceso uniforme cuando se creó el bucket.

    • Para los buckets de Cloud Storage existentes, puedes cambiar el modelo de control de acceso durante los primeros 90 días posteriores a la creación del bucket mediante la pestaña Permisos. Para los buckets nuevos, selecciona el modelo de control de acceso Detallado durante la creación del bucket. Para obtener más información, consulta Crea buckets de Cloud Storage.

Enrutamiento de errores a BigQuery

Los siguientes son los errores más comunes cuando se enrutan registros a BigQuery:

  • Esquema de tabla no válido:

    • Los registros transmitidos a la tabla en tu conjunto de datos de BigQuery no coinciden con el esquema de la tabla actual. Los problemas comunes incluyen intentar enrutar entradas de registro con diferentes tipos de datos, lo que causa 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 string.

    • 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 de profundidad máximo anidado para una columna es de 13 niveles.

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

  • Las entradas de registro se encuentran fuera de los límites de tiempo permitidos:

    • Los registros transmitidos a la tabla particionada de BigQuery se encuentran fuera de los límites de tiempo permitidos. BigQuery no acepta registros que estén demasiado lejanos en el pasado o el futuro.

    • Puedes actualizar tu receptor para enrutar esos registros 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 al receptor de registros escriba en ella:

    • Incluso si el receptor se creó correctamente 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 de Google Cloud que contenga el destino del receptor.

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

  • El conjunto de datos contiene entradas de registro duplicadas:

    • Las entradas de registro duplicadas pueden ocurrir cuando hay fallas en los registros de transmisión a BigQuery, incluso debido a reintentos o configuraciones incorrectas. Cloud Logging anula las entradas de registro duplicadas con los mismos 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
    

Enrutamiento de errores a buckets de Cloud Logging

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

  • Debes ejecutar tu consulta en el proyecto de Google Cloud que generó los registros.

    Para solucionar este problema, asegúrate de ejecutar tu consulta en el proyecto de Google Cloud correcto.

  • Los registros excluidos se enviaron a varios depósitos 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 asegurarte de no incluir los registros en los filtros de otros receptores.

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

    Para evitar ver estos registros en el Explorador de registros, puedes definir mejor el alcance de la búsqueda a tu proyecto o bucket de origen de Google Cloud.

Soluciona problemas de almacenamiento de registros

¿Por qué no puedo borrar este bucket?

Si intentas borrar un bucket, haz lo siguiente:

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

  • Determina si el bucket está bloqueado mediante la enumeración de los atributos del bucket. Si el bucket está bloqueado, revisa su período de retención. No puedes borrar un bucket bloqueado hasta que todos los registros del bucket hayan cumplido 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.

    El siguiente error se muestra 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 enumerar 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 los registros a mi bucket?

A fin de determinar si alguna cuenta de servicio tiene permisos de IAM para enrutar registros a tu bucket, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, elige IAM:

    Ir a IAM

  2. En la pestaña Permisos, consulta por Funciones. Verás una tabla con todas las principales y funciones de IAM asociadas a tu proyecto de Google Cloud.

  3. En el cuadro de texto del Filtro de la tabla, ingresa Escritor de bucket de registros.

    Ves cualquier principal con el rol Escritor de bucket de registros. Si una principal es una cuenta de servicio, su ID contiene la string gserviceaccount.com.

  4. Opcional: Si deseas quitar una cuenta de servicio para que no pueda 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 proyecto de Google Cloud a pesar de que los excluí de mi receptor _Default?

Es posible que estés viendo los registros en un bucket de registros en un proyecto centralizado de Google Cloud, 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 tenga el alcance a nivel de proyecto de Google Cloud.

Para solucionar este problema, selecciona Limitar alcance por almacenamiento en el panel Define mejor el permiso y, luego, selecciona el bucket _Default en tu proyecto de Google Cloud. Ya no deberías ver los registros excluidos.