Puedes copiar las entradas de registro almacenadas de los buckets de registros de Cloud Logging a los buckets de Cloud Storage para admitir 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 entre diferentes Google Cloud proyectos.
Las operaciones de copia enrutan las entradas de registro existentes de forma retroactiva con la CLI de gcloud. Por el contrario, los receptores enrutan las entradas de registro coincidentes automáticamente 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
Cuando se copian entradas de registro, se aplican las siguientes limitaciones:
Solo puedes copiar entradas de registro a buckets de Cloud 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 CLI de gcloud. Para obtener instrucciones sobre cómo instalar o actualizar gcloud CLI, consulta Administra los componentes de la CLI de Google Cloud.
-
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 estás copiando:
-
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 estás copiando.
Para recuperar el ID de bucket de registros y su ubicación, usa el
comando de gcloud CLI
gcloud logging buckets list. - El nombre del bucket de Cloud Storage al que estás copiando. Para obtener información sobre cómo recuperar el nombre del bucket de Cloud Storage, consulta Obtén información sobre el bucket de Cloud Storage.
- Un filtro para las entradas de registro que deseas copiar.
Para copiar entradas de registro, ejecuta el
gcloud logging copy comando:
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 Google Cloud proyecto de. Puedes omitir esta marca cuando la configuración activa de la gcloud CLI esté establecida en el proyecto correcto Google Cloud .
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 muestra 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 ubicación del bucket de registros desde el que estás copiando.
Visualiza y administra las operaciones de copia
Puedes ver y administrar tus operaciones de copia con los
gcloud logging operations
comandos, 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 operaciones 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 estás copiando
- Reemplaza PROJECT_ID por el ID del Google Cloud proyecto de.
El comando muestra 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 (0-100%).destination: Es el nombre del bucket de Cloud Storage al que la operación copia las entradas de registro.filter: Es el filtro que especifica qué entradas de registro se copiarán.name: Es el nombre del bucket de registros desde el 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 enumerados 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 estás copiando
- Reemplaza PROJECT_ID por el ID del Google Cloud proyecto de.
El comando muestra metadatos sobre la operación de copia. Por ejemplo, este es un resultado para 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 hacer 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 estás copiando
- Reemplaza PROJECT_ID por el ID del Google Cloud proyecto de.
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 gran volumen (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 errores cuando se copian entradas de registro.
No se pudieron escribir los datos de exportación
Cuando ves el estado de una operación de copia con gcloud logging operations describe, la operación puede mostrar 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 ni 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 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ó el tiempo suficiente para que vencieran 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 una demora transitoria o si se reinicia una operación de copia, el reintento podría intentar 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 en busca de 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 almacenamiento (
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/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 agotados o el vencimiento de las credenciales cuando se copian 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 conservaciones de objetos ni conflictos de retención: Verifica que el bucket de destino no contenga objetos en la ruta de destino de destino que estén protegidos por una conservación de objetos activa o una política de retención bloqueada.
Precios
Para obtener información sobre los precios, consulta la página de precios de Google Cloud Observability. Si enrutas datos de registro a otros Google Cloud servicios, consulta los siguientes documentos: