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.
Soluciona problemas de registros de enrutamiento
En esta sección, se describe cómo solucionar problemas comunes cuando se enrutan los 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 tus receptores que enrutan registros al destino. Los filtros de exclusión te permiten evitar que los registros seleccionados 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 con el operador lógico O 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 un destino de receptor.
En algunos casos, no se genera un error, pero es posible que notes que los registros no están disponibles cuando intentas acceder a ellos en tu destino. Si sospechas que tu sink no enruta los registros correctamente, 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 informan si el receptor enruta los datos de registro correctamente o si falla. Para obtener detalles sobre cómo ver las métricas, consulta la 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 registros en el destino. Los registros que llegan tarde son especialmente comunes para los receptores que tienen configurados buckets de Cloud Storage como destinos. Espera unas horas y vuelve a revisar tu destino.
El alcance o el filtro de visualización son incorrectos
El alcance que usas para ver los registros en los destinos del bucket de registros es incorrecto.
Limita la búsqueda a una o más vistas de almacenamiento de la siguiente manera:
Si usas el Explorador de registros, usa el botón Definir mejor el alcance.
Si usas gcloud CLI, usa el comando
gcloud logging read
y agrega una marca--view=AllLogs
.
El intervalo de tiempo que usas para [seleccionar y ver datos en tu destino de destino][export-log-bucket es demasiado estrecho.
Intenta ampliar el período que usas cuando seleccionas datos en tu destino de almacenamiento.
Error en el filtro de sumidero
El filtro del sink 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. 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 los registros, 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 de tu receptor en la página Enrutador de registros de la consola de Google Cloud.
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 indica 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:
Notificaciones por correo electrónico
Essential Contacts 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 proyecto de Google Cloud 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 proyecto de Google Cloud o de otro recurso de Google Cloud en el que se configuró el sumidero.
- 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:
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 Logging intentó enrutar los registros, estas son algunas de las posibles razones:
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 sink]]export-manage-sink. Por ejemplo, puedes editar tu receptor con la página Enrutador de registros:
Tu receptor comienza a enrutar registros cuando se encuentra el destino y Logging recibe registros nuevos que coinciden con tu filtro.
Cómo administrar problemas de receptores
Si inhabilitaste un receptor para dejar de almacenar registros en un bucket de registros, pero aún ves que se enrutan registros, 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 proyecto de Google Cloud, la consola de Google Cloud suele asignar estos permisos automáticamente. Sin embargo, si creas el receptor en un proyecto de Google 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 registros cuando se corrigen los permisos y Logging recibe registros nuevos 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, hay 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.
Tu receptor comienza a enrutar registros cuando la política de la organización ya no bloquea al receptor para que escriba en el destino y cuando Logging recibe 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 con Cloud Key Management Service o tú mismo, para encriptar los datos en el destino del sumidero, es posible que veas errores relacionados. Estos son algunos problemas posibles y las formas de solucionarlos:
La facturación no se habilita 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, se muestra este mensaje de error 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 que contenga 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 que difiere de la región del destino, la encriptación falla y el destino no puede enrutar datos a ese destino.
Usa una clave de Cloud KMS que contenga 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 sumidero.
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 asegúrate de que la API de Cloud KMS esté habilitada.
Problemas de cuotas
Cuando los sinks escriben registros, se aplican cuotas específicas del destino a los proyectos de Google Cloud en los que se crearon los sinks. Si se agotan las cuotas, el receptor deja de enrutar 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 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.
Tu receptor comienza a enrutar registros a tu destino cuando lo actualizas para que coincida con menos entradas de registro o cuando se actualizan tus cuotas.
Para obtener detalles sobre los límites que se podrían aplicar cuando enrutas registros, consulta la información de la cuota del destino apropiado:
Además de los tipos de errores de sink generales, estos son los tipos de errores más comunes específicos del destino y cómo puedes corregirlos.
Errores de enrutamiento 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 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 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. 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 esexport_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:
Los registros transmitidos a la tabla particionada de BigQuery superan los límites de tiempo permitidos. BigQuery no acepta registros con fechas muy lejanas 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 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 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, habilita la facturación para ese proyecto o actualiza el destino de sumidero 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 la transmisión de registros a BigQuery, lo que incluye reintentos o parámetros de configuración incorrectos. Cloud Logging anula las entradas de registro con el mismo
timestamp
yinsertId
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
Errores de enrutamiento a los buckets de Cloud Logging
Es posible que te encuentres con una situación en la que puedas ver registros en el Explorador de registros que excluiste con tu receptor. Podrás seguir viendo estos registros si se cumple alguna de las siguientes condiciones:
Ejecutas la consulta en el proyecto de Google Cloud que generó los registros.
Para solucionarlo, asegúrate de ejecutar la 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 para asegurarte de que no incluyas 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 tu búsqueda en tu bucket o proyecto de 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 APIprojects.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:
-
En la consola de Google Cloud, ve a la página IAM:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.
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 de Google Cloud.
En el cuadro de texto filter_list 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
.Opcional: Si quieres quitar la capacidad de una cuenta de servicio para enrutar registros a tu proyecto de Google Cloud, selecciona la casilla de verificación check_box_outline_blank de la cuenta de servicio y haz clic en Quitar.
¿Por qué veo registros de un proyecto de Google Cloud aunque los excluí de mi receptor _Default
?
Es posible que estés viendo registros en un bucket de registros de un proyecto de 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 que
excluyeron del receptor _Default
, es posible que tu vista esté configurada a nivel del
proyecto de Google 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 proyecto de Google Cloud. Ya no deberías ver los registros excluidos.