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 los destinos de tus 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 relacionados con el enrutamiento de tus registros.

El destino contiene registros no deseados

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

Para resolver esta condición, actualiza los filtros de exclusión de los receptores que enrutan los registros al destino. Los filtros de exclusión te permiten excluir 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 excluir los registros de un proyecto específico a fin de que no 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 con 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 parece que faltan registros en el destino de un 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 tu receptor no enruta los registros de forma correcta, verifica las métricas basadas en registros del sistema del receptor:

  • exports/byte_count: Cantidad de bytes en 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 por nombre de receptor y nombre de destino y te permiten saber si tu receptor enruta los datos de registros de forma correcta o con errores. Si deseas 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 motivos posibles 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 consultar tu destino.

  • Las entradas de registro coincidentes llegan tarde.

    Puede haber una demora antes de poder ver tus registros en el destino. Los registros tardíos son especialmente comunes para los receptores que configuraron 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.

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 del 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. Si deseas obtener instrucciones para ver y administrar tus receptores, consulta Administra los receptores.

Ver errores

En cada uno de los destinos de receptores compatibles, Logging proporciona mensajes de error para los receptores configurados de forma incorrecta.

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.
  • 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 registros, consulta Visualiza los registros mediante 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 en gcloud CLI.

Antes de copiar la consulta, reemplaza la variable SINK_NAME por el nombre del receptor con el que intentas solucionar problemas. Puedes encontrar el nombre del 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, entonces la entrada de registro podría ser similar al siguiente ejemplo:

{
  "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 de par clave-valor anidada te ayudan a orientar la fuente del error de tu receptor, que contiene el recurso afectado, el receptor afectado y el código de error. El campo labels.error_code contiene una descripción breve del error que te permite saber qué componente del receptor debe volver a configurar.

Para actualizar tu receptor, usa el Enrutador de registros.

En la consola de Google Cloud, ve a la página Enrutador de registros:

Ir a Enrutador de registros

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

Notificaciones por correo electrónico

Si estás suscrito a un proyecto de Google Cloud o a su recurso superior como Contacto esencial técnico, recibirás notificaciones por correo electrónico sobre errores de 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 del 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: Es la ruta 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 la consola de Google Cloud, ve a la página Enrutador de registros:

Ir a Enrutador de registros

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

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

Tipos de errores de receptor

En las siguientes secciones, se describen categorías amplias de errores relacionados con receptores y cómo puedes solucionar los problemas.

Destino incorrecto

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

  • La configuración del receptor contiene una falta de ortografía o algún otro error de formato en el destino especificado.

    Debes actualizar la configuración del receptor para especificar de forma correcta 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 la consola de Google Cloud, ve a la página Enrutador de registros:

Ir a Enrutador de registros

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

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

Administrar problemas de receptores

Si inhabilitaste un receptor para dejar de almacenar registros en un bucket de registros, pero aún ves que los registros se enrutan, 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 su destino, el receptor informa un error, que puedes ver, y omite la entrada de registro.

Cuando creas un receptor, la cuenta de servicio del receptor 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 asigna estos permisos de forma automática. Si creas el receptor en un proyecto de Google Cloud diferente, 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. 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 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, 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 para el destino a fin de quitar las restricciones que bloquean al receptor el enrutamiento de entradas de registro; esto presupone 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 la consola de Google Cloud, ve a la página Enrutador de registros:

    Ir a Enrutador de registros

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

Tu 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 la clave de encriptación

Si usas claves de encriptación, ya sean administradas con Cloud Key Management Service o por ti, para encriptar los datos en el destino del receptor, es posible que veas errores relacionados. A continuación, encontrarás algunos problemas posibles y formas de solucionarlos:

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

    • Incluso si el receptor se creó de forma correcta con el destino correcto, este mensaje de error se muestra 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 válida vinculada al proyecto de Google Cloud 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 ubicación del destino.

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

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

  • 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 la función 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. Además, asegúrate de que la API de Cloud KMS esté habilitada.

Problemas de cuotas

Cuando los receptores escriben registros, se aplican cuotas específicas del destino 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 indica 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, tu receptor puede enrutar muchas entradas de registro muy rápido. El mismo concepto se aplica a los otros destinos de receptor admitidos, por ejemplo, a los temas de Pub/Sub.

Para solucionar los problemas de agotamiento de cuota, disminuye la cantidad de datos de registro que se enrutan a través de la actualización del filtro de tu receptor para que coincida con menos entradas de registro. Puedes usar la función sample en el 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 podrían aplicarse cuando enrutas los registros, revisa la información de cuota del destino correspondiente:

Además de los tipos de error del receptor generales, aquí encontrarás 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 los 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 al destino:

    • Incluso si el receptor se creó de forma correcta con los permisos de cuenta de servicio correctos, este mensaje de error muestra si el modelo de control de acceso para el bucket de Cloud Storage se configuró en 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 después de la creación del bucket en 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.

Errores en el enrutamiento a BigQuery

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

  • Esquema de tabla no válido:

    • Los registros transmitidos a la tabla de tu conjunto de datos de BigQuery no coinciden con el esquema de la tabla actual. Los problemas comunes incluyen intentar enrutar las entradas de registro con diferentes tipos de datos, lo que provoca 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 la tabla actual y dejar que Logging la cree de nuevo.

    • BigQuery admite la carga de datos anidados en sus tablas. Sin embargo, cuando cargas datos desde Logging, el límite máximo de profundidad de anidado en 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 del error. El tipo de tabla determina su nombre. En el caso de las tablas fragmentadas por fecha, el formato de nombres es export_errors_YYYYMMDD. En el caso de las tablas particionadas, el formato de nombres es export_errors. Para obtener más información sobre el esquema de las tablas de errores y cómo evitar futuras discrepancias en el tipo de campo, consulta Discrepancias en el esquema.

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

    • Los registros transmitidos a la tabla particionada de BigQuery superan los límites de tiempo permitidos. BigQuery no acepta registros que estén muy 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 con el receptor de registros escriba en él:

    • Incluso si el receptor se creó de forma correcta con los permisos de 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 contiene 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 ubique 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 la transmisión de registros 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 los buckets de Cloud Logging

Puedes encontrar una situación en la que puedas ver los 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:

  • Estás ejecutando la consulta en el proyecto de Google Cloud que generó los registros.

    Para solucionar este problema, asegúrate de que estás ejecutando 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, verifica tus receptores en la página Enrutador de registros y asegúrate 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 permiso de la búsqueda para 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 los permisos que necesitas, consulta Control de acceso con la IAM.

  • Para determinar si el bucket está bloqueado, enumera sus atributos. 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 hayan cumplido el período de retención del bucket.

  • 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 registros a mi bucket?

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

  1. En la consola de Google Cloud, 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, consulta por Funciones. Verás una tabla con todos los roles y las principales de IAM asociados con tu proyecto de Google Cloud.

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

    Verás todas las principales con el rol Escritor de buckets de registros. Si una principal es una cuenta de servicio, su ID contiene la cadena 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 veas registros en un bucket de registros en un proyecto centralizado de Google Cloud, que agrega registros de toda la organización.

Si usas el Explorador de registros para acceder a estos registros y ver los que excluiste del receptor _Default, es posible que la vista tenga un alcance a nivel de proyecto de Google Cloud.

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