Puedes copiar las entradas de registro almacenadas de los buckets de registros de Cloud Logging en buckets de Cloud Storage para respaldar las auditorías de seguridad, realizar análisis de datos personalizados o archivar entradas de registro históricas. La operación de copia no es destructiva; las entradas de registro permanecen en el bucket de registros de origen y puedes copiar en diferentes proyectos de Google Cloud .
Las operaciones de copia enrutan las entradas de registro existentes de forma retroactiva con la gcloud CLI. En cambio, los receptores enrutan las entradas de registro coincidentes de forma automática en tiempo real a medida que llegan, pero no pueden enrutar las entradas de registro que se almacenaron antes de que se creara el receptor.
Limitaciones
Se aplican las siguientes limitaciones cuando se copian entradas de registro:
Solo puedes copiar entradas de registro en buckets de Cloud Storage que no estén configurados para Rapid Storage. No hay otros destinos disponibles.
No puedes copiar entradas de registro de buckets de registros que tengan configuradas claves de encriptación administradas por el cliente (CMEK).
Antes de comenzar
Antes de comenzar a copiar entradas de registro, haz lo siguiente:
- Verifica que estés usando la versión más reciente de la gcloud CLI. Para obtener instrucciones sobre cómo instalar o actualizar gcloud CLI, consulta Administra los componentes de Google Cloud CLI.
-
Para obtener los permisos que necesitas para copiar entradas de registro, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto que contiene el bucket de registros desde el que copias:
-
Para ejecutar una operación de copia:
Administrador de Logging (
roles/logging.admin) -
Para ver y administrar el estado de una operación de copia:
Escritor de configuración de registros (
roles/logging.configWriter)
-
Para ejecutar una operación de copia:
Administrador de Logging (
-
Para obtener los permisos que necesitas para escribir entradas de registro en Cloud Storage, pídele a tu administrador que te otorgue el rol de IAM de creador de objetos de almacenamiento (
roles/storage.objectCreator) en el proyecto que contiene el bucket de Cloud Storage.
Copiar las entradas de registro
Logging solo copia las entradas de registro que se almacenan en el bucket de registros cuando se inicia la operación de copia. Las entradas de registro que se almacenan en buckets de registros después de que se inicia la operación de copia no se copian en Cloud Storage.
Para copiar entradas de registro en Cloud Storage, debes conocer la siguiente información:
- El ID y la ubicación del bucket de registros desde el que copias.
Para recuperar el ID de bucket de registros y su ubicación, usa el
comando de gcloud CLI
gcloud logging buckets list. - Es el nombre del bucket de Cloud Storage al que copiarás los datos. Para obtener información sobre cómo recuperar el nombre del bucket de Cloud Storage, consulta Obtén información del bucket de Cloud Storage.
- Un filtro para las entradas de registro que deseas copiar.
Para copiar entradas de registro, ejecuta el
comando gcloud logging copy:
gcloud logging copy LOG_BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID
Antes de ejecutar el comando anterior, haz lo siguiente:
- Reemplaza LOG_BUCKET_ID por el nombre de tu bucket de registros.
- Reemplaza CLOUD_STORAGE_BUCKET_NAME por el nombre de tu bucket de Cloud Storage.
- Reemplaza LOCATION por la ubicación del bucket de registros.
(Opcional): Reemplaza FILTER por el filtro que define qué entradas de registro se copian.
Si omites la marca
--log-filter, todas las entradas de registro del bucket de registros se copian en el bucket de Cloud Storage.Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud . Puedes omitir esta marca cuando la configuración activa de gcloud CLI se establece en el proyecto de Google Cloud correcto.
Comando de ejemplo:
gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2024-07-18T10:00:00.0Z"' \
--project=my-project
Este comando crea una operación de larga duración para que se ejecute en segundo plano y devuelve el nombre de la operación de copia y la ubicación del bucket de registros:
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
La ubicación de la operación de copia es la misma que la del bucket de registros desde el que copias.
Visualiza y administra las operaciones de copia
Puedes ver y administrar tus operaciones de copia con los comandos
gcloud logging operations,
que te permiten enumerar, ver y cancelar operaciones.
Los siguientes comandos requieren que especifiques la ubicación de la operación. Usa la ubicación de tu bucket de registros. Para obtener información sobre cómo encontrar la ubicación de tu bucket de registros, consulta Visualiza los detalles de un bucket.
Enumera las operaciones de copia
Puedes enumerar las operaciones de copia recientes, incluidas las programadas, en ejecución, completadas, con errores y canceladas. Las operaciones de copia recientes aparecen en los resultados hasta 30 días después de la hora de finalización.
Para enumerar las operaciones de copia, ejecuta el siguiente comando:
gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID
Antes de ejecutar el comando anterior, haz lo siguiente:
- Reemplaza LOCATION por la ubicación del bucket de registros desde el que copias.
- Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud .
El comando devuelve información sobre la operación de larga duración, incluido el ID de la operación:
projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Visualiza el estado de una operación de copia
Puedes recuperar el estado y otros metadatos sobre las operaciones de copia, incluidos los siguientes:
startTime: Es la marca de tiempo que indica la creación de la operación.endTime: Es la marca de tiempo que indica la finalización de la operación.state: Es el estado de la operación (programada, en ejecución, cancelada, con errores o correcta).cancellation: Indica si el usuario solicitó cancelar la operación.progress: Es el progreso estimado de la operación (del 0% al 100%).destination: Es el nombre del bucket de Cloud Storage en el que la operación copia las entradas de registro.filter: Es el filtro que especifica qué entradas de registro se deben copiar.name: Es el nombre del bucket de registros del que la operación copia las entradas de registro.logEntriesCopiedCount: Es la cantidad de entradas de registro que la operación copió correctamente en el bucket de Cloud Storage.
Ten en cuenta que no todos los campos de metadatos que se indican se aplican a todas las operaciones de copia.
Por ejemplo, si una operación de copia aún se está ejecutando, los metadatos endTime
no se aplican a la operación. Como otro ejemplo, si no se usó la marca --log-filter=FILTER cuando se ejecutó el comando gcloud logging copy, los metadatos filter no se aplican a la operación.
Para recuperar información sobre una operación de copia, ejecuta el siguiente comando:
gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Antes de ejecutar el comando anterior, haz lo siguiente:
- Reemplaza OPERATION_ID por el ID de la operación.
- Reemplaza LOCATION por la ubicación del bucket de registros desde el que copias.
- Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud .
El comando devuelve metadatos sobre la operación de copia. Por ejemplo, este es un resultado de una operación que está en curso:
done: false
metadata:
`@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
progress: 75
destination: storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
source: projects/PROJECT_ID/locations/LOCATION/buckets/LOG_BUCKET_ID
verb: copy
startTime: `2024-05-23T10:52:40.039751Z`
state: OPERATION_STATE_RUNNING
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Cancela una operación de copia
Puedes cancelar una operación de copia en curso. Si cancelas una operación de copia, todas las entradas de registro que se copiaron antes de que se cancelara la operación permanecerán en el bucket de Cloud Storage.
Después de cancelar una operación de copia, Logging completa todos los procesos en curso antes de completar la cancelación. Esto puede provocar que algunas entradas de registro se sigan copiando en Cloud Storage después de que canceles la operación.
Para cancelar una operación de copia, ejecuta el siguiente comando:
gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Antes de ejecutar el comando anterior, haz lo siguiente:
- Reemplaza OPERATION_ID por el ID de la operación.
- Reemplaza LOCATION por la ubicación del bucket de registros desde el que copias.
- Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud .
Visualiza las entradas de registro en Cloud Storage
Para obtener información sobre cómo ver y comprender las entradas de registro que copiaste en Cloud Storage, consulta Visualiza las entradas de registro enrutadas a Cloud Storage.
Cuotas y límites
Todas las operaciones de copia tardan al menos una hora en completarse, sin importar la cantidad de datos que se copien.
Para copiar un volumen grande, por ejemplo, petabytes, divide la copia
en varias operaciones de copia con el campo timestamp en la
marca --log-filter.
El comando de copia no puede copiar entradas de registro cuya retención haya vencido.
Soluciona problemas
En esta sección, se describe cómo solucionar problemas de errores cuando se copian entradas de registro.
No se pudieron escribir los datos de exportación
Cuando veas el estado de una operación de copia con
gcloud logging operations describe,
es posible que se muestre el siguiente error:
done: true
error:
code: 7
message: Failed to write export data to the destination Cloud Storage bucket.
Este error se produce cuando Logging no puede escribir o finalizar archivos de registro en el bucket de Cloud Storage de destino. La escritura de archivos exportados durante la operación puede fallar por varios motivos:
- Un perímetro de servicio de los Controles del servicio de VPC bloquea las solicitudes al bucket de Cloud Storage de destino.
- Los permisos de IAM de la cuenta que inició la operación de copia se modificaron o revocaron mientras se ejecutaba la operación.
- La operación de copia se ejecutó durante el tiempo suficiente para que venzan las credenciales de autorización.
- El bucket de Cloud Storage de destino usa CMEK, y la clave de Cloud Key Management Service está inhabilitada o el agente de servicio de Cloud Storage no tiene permisos de encriptación.
- Un reintento de escritura intenta reemplazar un archivo existente que no se puede reemplazar. Por ejemplo, si se vuelve a intentar un lote de exportación después de un retraso transitorio o si se reinicia una operación de copia, es posible que el reintento intente reemplazar un archivo que ya se creó. Si ese archivo está protegido por una conservación de objetos activa o una política de retención bloqueada, Cloud Storage rechaza el reemplazo.
- Se borró el bucket de destino, entró en un estado bloqueado o el proyecto superó su cuota de recursos.
Para solucionar este problema, haz lo siguiente:
Revisa los Controles del servicio de VPC: Si tu organización usa los Controles del servicio de VPC, revisa los registros de auditoría de Cloud para ver las denegaciones de perímetro (
cloudaudit.googleapis.com/data_access). El perímetro del bucket de Cloud Storage de destino debe permitir el acceso desde el proyecto que ejecuta la operación de copia o configurar una regla de entrada y salida.Verifica los roles de IAM del bucket de destino: La cuenta que inició la operación de copia debe tener el rol de Creador de objetos de Storage (
roles/storage.objectCreator) en el bucket de destino.Verifica las claves de encriptación administradas por el cliente (CMEK): Si el bucket de destino usa CMEK para la encriptación predeterminada, verifica que la clave de Cloud KMS esté habilitada y que el agente de servicio de Cloud Storage tenga el rol de encriptador o desencriptador de CryptoKey de Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave.Divide las operaciones de copia grandes en intervalos de tiempo más cortos: Para evitar los tiempos de espera o el vencimiento de las credenciales cuando copies grandes volúmenes de entradas de registro, divide la operación en lotes más pequeños. Para dividir las entradas de registro en lotes, usa el campo
timestampen la marca--log-filter.Verifica que no existan conflictos de retención ni conservaciones de objetos: Asegúrate de que el bucket de destino no contenga objetos en la ruta de destino que estén protegidos por una conservación de objetos activa o una política de retención bloqueada.