En este documento se explica cómo descargar y revisar los registros de uso y la información de almacenamiento de tus segmentos de Cloud Storage, así como analizar los registros con Google BigQuery.
Introducción
Cloud Storage ofrece registros de uso y de almacenamiento en forma de archivos CSV que puedes descargar y consultar. Los registros de uso proporcionan información sobre todas las solicitudes realizadas en un segmento concreto y se crean cada hora. Los registros de almacenamiento proporcionan información sobre el consumo de almacenamiento de ese segmento durante el último día y se crean a diario.
Una vez configurados, se generan automáticamente registros de uso y de almacenamiento para el segmento especificado, y se almacenan como objetos nuevos en un segmento que indiques.
Los registros de uso y de almacenamiento están sujetos a los mismos precios que otros objetos almacenados en Cloud Storage.
¿Deberías usar registros de uso o registros de auditoría de Cloud?
En la mayoría de los casos, Registros de auditoría de Cloud es el método recomendado para generar registros que monitoricen las operaciones de la API realizadas en Cloud Storage:
- Registros de auditoría de Cloud monitoriza el acceso de forma continua y envía los eventos pocos segundos después de que se produzcan.
- Registros de auditoría de Cloud genera registros con los que es más fácil trabajar.
- Cloud Audit Logs puede monitorizar muchos de tus Google Cloud servicios, no solo Cloud Storage.
- Cloud Audit Logs puede registrar información detallada sobre las solicitudes y las respuestas de forma opcional.
En algunos casos, puede que quieras usar registros de uso en lugar de registros de auditoría de Cloud o además de ellos. Lo más probable es que quieras usar los registros de uso si:
- Quieres monitorizar el acceso que se produce porque un recurso tiene
allUsers
oallAuthenticatedUsers
en su configuración de control de acceso, como el acceso a recursos de un contenedor que has configurado para que sea un sitio web estático. - Quieres monitorizar los cambios realizados por las funciones Administración del ciclo de vida de los objetos o Autoclass.
- Quieres que tus registros incluyan información sobre la latencia, el tamaño de la solicitud y la respuesta de las solicitudes HTTP individuales, o la ruta de URL completa y todos los parámetros de consulta.
- Solo quieres monitorizar el acceso a determinados segmentos de tu proyecto, por lo que no quieres habilitar los registros de auditoría de acceso a los datos, que monitorizan el acceso a todos los segmentos de tu proyecto.
Ten en cuenta que los registros de uso solo se generan cada hora y pueden sufrir retrasos, sobre todo cuando se trata de los segmentos que experimentan altas tasas de solicitudes.
¿Deberías usar los registros de almacenamiento o la monitorización?
Por lo general, no deberías usar registros de almacenamiento. La herramienta recomendada para medir el consumo de almacenamiento es Monitoring, que proporciona herramientas de visualización, así como métricas adicionales relacionadas con el consumo de almacenamiento que no se incluyen en los registros de almacenamiento. Consulta la pestaña Consola para determinar el tamaño de un contenedor para ver instrucciones detalladas sobre cómo usar Monitoring.
Configurar la entrega de registros
Antes de configurar el envío de registros, debes tener un contenedor para almacenarlos. Este cubo debe cumplir los siguientes requisitos; de lo contrario, se producirá un error en el registro:
El segmento que almacena los registros debe estar en la misma organización que el segmento del que se registran los datos.
- Si el segmento del que se registran datos no está incluido en ninguna organización, el segmento que almacena los registros debe estar en el mismo proyecto que el segmento del que se registran datos.
Si usas o habilitas Controles de Servicio de VPC, el cubo que almacena los registros debe estar en el mismo perímetro de seguridad que el cubo del que se están registrando los datos.
Si aún no tienes un contenedor que cumpla estos requisitos, créalo.
En los siguientes pasos se describe cómo configurar la entrega de registros de un segmento:
Línea de comandos
Asigna a Cloud Storage el rol
roles/storage.objectCreator
del segmento:gcloud storage buckets add-iam-policy-binding gs://example-logs-bucket --member=group:cloud-storage-analytics@google.com --role=roles/storage.objectCreator
Este rol otorga a Cloud Storage, en forma de grupo
cloud-storage-analytics@google.com
, permiso para crear y almacenar tus registros como objetos nuevos.Los objetos de registro tienen la LCA de objeto predeterminada del segmento de registro, a menos que se haya habilitado el acceso uniforme a nivel de segmento en el segmento.
Habilita el registro de tu segmento con la marca
--log-bucket
:gcloud storage buckets update gs://example-bucket --log-bucket=gs://example-logs-bucket [--log-object-prefix=log_object_prefix]
También puede definir un prefijo de objeto para los objetos de registro mediante la marca
--log-object-prefix
. El prefijo de objeto forma el principio del nombre del objeto de registro. Puede tener 900 caracteres como máximo y debe ser un nombre de objeto válido. De forma predeterminada, el prefijo de objeto es el nombre del segmento para el que están habilitados los registros.
APIs REST
API JSON
Asigna a Cloud Storage el rol
roles/storage.objectCreator
del segmento. Si hay enlaces de IAM adicionales a nivel de contenedor, asegúrese de incluirlos en la solicitud.POST /storage/v1/b/example-logs-bucket/iam Host: storage.googleapis.com { "bindings":[ { "role": "roles/storage.objectCreator", "members":[ "group-cloud-storage-analytics@google.com" ] } ] }
Este rol otorga a Cloud Storage, en forma de grupo
cloud-storage-analytics@google.com
, permiso para crear y almacenar tus registros como objetos nuevos.Los objetos de registro tienen la LCA de objeto predeterminada del segmento de registro, a menos que se haya habilitado el acceso uniforme a nivel de segmento en el segmento.
Habilita el registro de tu segmento con la siguiente solicitud:
PATCH /storage/v1/b/example-bucket Host: storage.googleapis.com { "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
API XML
Define los permisos para permitir que Cloud Storage tenga permiso
WRITE
en el segmento para crear y almacenar tus registros como objetos nuevos. Debe añadir una entrada de ACL para el segmento que conceda al grupocloud-storage-analytics@google.com
acceso de escritura. Asegúrate de incluir en la solicitud todas las LCAs del segmento, además de la nueva.PUT /example-logs-bucket?acl HTTP/1.1 Host: storage.googleapis.com <AccessControlList> <Entries> <Entry> <Scope type="GroupByEmail"> <EmailAddress>cloud-storage-analytics@google.com</EmailAddress> </Scope> <Permission>WRITE</Permission> </Entry> <!-- include other existing ACL entries here--> </Entries> </AccessControlList>
Habilita el registro de tu segmento con el parámetro de consulta logging:
PUT /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com <Logging> <LogBucket>example-logs-bucket</LogBucket> <LogObjectPrefix>log_object_prefix</LogObjectPrefix> </Logging>
Comprobar el estado del registro
Línea de comandos
Para comprobar el registro, usa el comando buckets describe
con la marca --format
:
gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"
También puedes guardar las configuraciones de creación de registros en un archivo:
gcloud storage buckets describe gs://example-bucket > your_logging_configuration_file --format="default(logging_config)"
Si el registro está habilitado, el servidor devuelve la configuración de registro en la respuesta:
logging: logBucket: example-logs-bucket logObjectPrefix: log_object_prefix
Si el registro no está habilitado, se devuelve lo siguiente:
null
APIs REST
API JSON
Envía una solicitud GET para obtener la configuración de registro del contenedor, tal como se muestra en el siguiente ejemplo:
GET /storage/v1/b/example-bucket?fields=logging Host: storage.googleapis.com
Si el registro está habilitado, el servidor envía la configuración en la respuesta. Una respuesta puede tener un aspecto similar a este:
{ "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
Si el registro no está habilitado, se devuelve una configuración vacía:
{}
API XML
Envía una solicitud GET Bucket para obtener la configuración de registro del contenedor, tal como se muestra en el siguiente ejemplo:
GET /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com
Si el registro está habilitado, el servidor envía la configuración en la respuesta. Una respuesta puede tener un aspecto similar a este:
<?xml version="1.0" ?> <Logging> <LogBucket> example-logs-bucket </LogBucket> <LogObjectPrefix> log_object_prefix </LogObjectPrefix> </Logging>
Si el registro no está habilitado, se devuelve una configuración vacía:
<?xml version="1.0" ?> <Logging/>
Descargar registros
Los registros de almacenamiento se generan una vez al día y contienen la cantidad de almacenamiento utilizada el día anterior. Normalmente, se crean antes de las 10:00 (PST).
Los registros de uso se generan cada hora cuando hay actividad que registrar en el cubo monitorizado. Los registros de uso suelen crearse 15 minutos después de que termine la hora.
La forma más sencilla de descargar los registros de uso y de almacenamiento del bucket en el que se almacenan es a través de la Google Cloud consola o de la gcloud storage
CLI. Los registros de uso están en formato CSV y siguen la siguiente convención de nomenclatura:
OBJECT_PREFIX_usage_TIMESTAMP_ID_v0
Del mismo modo, los registros de almacenamiento se denominan siguiendo la siguiente convención:
OBJECT_PREFIX_storage_TIMESTAMP_ID_v0
Por ejemplo, este es el nombre de un objeto de registro de uso que usa el prefijo de objeto predeterminado, informa del uso del bucket llamado example-bucket
y se creó el 18 de junio del 2022 a las 14:00 UTC:
example-bucket_usage_2022_06_18_14_00_00_1702e6_v0
Del mismo modo, este es el nombre del objeto de registro de almacenamiento que usa el prefijo de objeto predeterminado y se creó el 18 de junio del 2022 para el mismo cubo:
example-bucket_storage_2022_06_18_07_00_00_1702e6_v0
Para descargar los registros, sigue estos pasos:
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
Selecciona el segmento en el que se almacenan tus registros.
Para descargar o ver los registros, haga clic en el objeto de registro correspondiente.
Línea de comandos
Ejecuta el siguiente comando:
gcloud storage cp gs://BUCKET_NAME/LOGS_OBJECT DESTINATION
Donde:
BUCKET_NAME
es el nombre del segmento en el que se almacenan los registros. Por ejemplo,example-logs-bucket
.LOGS_OBJECT
es el nombre del registro de uso o del registro de almacenamiento que estás descargando. Por ejemplo,example-bucket_usage_2022_06_18_14_00_00_1702e6_v0
.DESTINATION
es la ubicación en la que se está descargando el registro. Por ejemplo,Desktop/Logs
.
Analizar registros en BigQuery
Para consultar el uso de Cloud Storage y los registros de almacenamiento, puede usar Google BigQuery, que permite hacer consultas rápidas similares a SQL en tablas de solo anexión. La herramienta de línea de comandos de BigQuery, bq
, es una herramienta basada en Python que te permite acceder a BigQuery desde la línea de comandos. Para obtener información sobre cómo descargar y usar bq, consulta la página de referencia de la herramienta de línea de comandos bq.
Cargar registros en BigQuery
Selecciona un proyecto predeterminado.
Para obtener más información sobre cómo seleccionar un proyecto, consulta el artículo Trabajar con proyectos.
Crea un conjunto de datos.
$ bq mk storageanalysis Dataset 'storageanalysis' successfully created.
Muestra los conjuntos de datos del proyecto:
$ bq ls datasetId
-----------------
storageanalysisGuarda los esquemas de uso y almacenamiento en tu ordenador local para usarlos en el comando load.
Puedes encontrar los esquemas que se van a usar en estas ubicaciones: cloud_storage_usage_schema_v0 y cloud_storage_storage_schema_v0. Los esquemas también se describen en la sección Formato de los registros de uso y almacenamiento.
Carga los registros de uso en el conjunto de datos.
$ bq load --skip_leading_rows=1 storageanalysis.usage \ gs://example-logs-bucket/example-bucket_usage_2014_01_15_14_00_00_1702e6_v0 \ ./cloud_storage_usage_schema_v0.json $ bq load --skip_leading_rows=1 storageanalysis.storage \ gs://example-logs-bucket/example-bucket_storage_2014_01_05_14_00_00_091c5f_v0 \ ./cloud_storage_storage_schema_v0.json
Estos comandos hacen lo siguiente:
- Carga los registros de uso y de almacenamiento del segmento
example-logs-bucket
. - Crea las tablas
usage
ystorage
en el conjunto de datosstorageanalysis
. - Lee los datos de esquema (archivo .json) del mismo directorio en el que se ejecuta el comando bq.
- Omita la primera fila de cada archivo de registro, ya que contiene descripciones de las columnas.
Como es la primera vez que ejecutas el comando de carga en este ejemplo, se han creado las tablas
usage
ystorage
. Podrías seguir añadiendo datos a estas tablas con comandos de carga posteriores con nombres de archivo de registro de uso diferentes o usando comodines. Por ejemplo, el siguiente comando añade datos de todos los registros que empiezan por "bucket_usage_2014" a la tablastorage
:$ bq load --skip_leading_rows=1 storageanalysis.usage \ gs://example-logs-bucket/bucket_usage_2014* \ ./cloud_storage_usage_schema_v0.json
Cuando uses comodines, puede que quieras mover los registros que ya se hayan subido a BigQuery a otro directorio (por ejemplo,
gs://example-logs-bucket/processed
) para evitar subir datos de un registro más de una vez.- Carga los registros de uso y de almacenamiento del segmento
También se puede acceder a las funciones de BigQuery a través de la herramienta de navegador de BigQuery. Con la herramienta del navegador, puede cargar datos mediante el proceso de creación de tablas.
Para obtener más información sobre cómo cargar datos desde Cloud Storage, incluida la carga de datos mediante programación, consulta el artículo Cargar datos desde Cloud Storage.
Modificar el esquema del registro de uso
En algunos casos, puede ser útil preprocesar los registros de uso antes de cargarlos en BigQuery. Por ejemplo, puedes añadir información adicional a los registros de uso para facilitar el análisis de las consultas en BigQuery. En esta sección, te mostraremos cómo puedes añadir el nombre de archivo de cada registro de uso del almacenamiento al registro. Para ello, es necesario modificar el esquema y cada archivo de registro.
Modifica el esquema cloud_storage_storage_schema_v0 para añadir el nombre de archivo, tal como se muestra a continuación. Asigna un nombre al nuevo esquema, por ejemplo, cloud_storage_storage_schema_custom.json, para distinguirlo del original.
[ {"name": "bucket", "type": "string", "mode": "REQUIRED"}, {"name": "storage_byte_hours","type": "integer","mode": "REQUIRED"}, {"name": "filename","type": "string","mode": "REQUIRED"} ]
Preprocesa los archivos de registro de uso del almacenamiento según el nuevo esquema antes de cargarlos en BigQuery.
Por ejemplo, los siguientes comandos se pueden usar en un entorno Linux, macOS o Windows (Cygwin):
gcloud storage cp gs://example-logs-bucket/example-bucket_storage\* . for f in example-bucket_storage\*; do sed -i -e "1s/$/,\"filename\"/" -e "2s/$/,\""$f"\"/" $f; done
El comando
gcloud storage
copia los archivos en tu directorio de trabajo. El segundo comando recorre los archivos de registro y añade "filename" a la fila de descripción (primera fila) y el nombre de archivo real a la fila de datos (segunda fila). A continuación se muestra un ejemplo de un archivo de registro modificado:"bucket","storage_byte_hours","filename" "example-bucket","5532482018","example-bucket_storage_2014_01_05_08_00_00_021fd_v0"
Cuando cargues los registros de uso del almacenamiento en BigQuery, carga los registros modificados localmente y usa el esquema personalizado.
for f in example-bucket_storage\*; \ do ./bq.py load --skip_leading_rows=1 storageanalysis.storage $f ./cloud_storage_storage_schema_custom.json; done
Consultar registros en BigQuery
Una vez que los registros se hayan cargado en BigQuery, puede consultar los registros de uso para obtener información sobre los cubos registrados. En el siguiente ejemplo se muestra cómo usar la herramienta bq en un caso práctico en el que tienes registros de uso de un cubo durante varios días y los has cargado tal como se indica en Cargar registros de uso en BigQuery. También puedes ejecutar las consultas que se indican a continuación con la herramienta de navegador de BigQuery.
En la herramienta bq, accede al modo interactivo.
$ bq shell
Ejecuta una consulta en la tabla de registro de almacenamiento.
Por ejemplo, la siguiente consulta muestra cómo cambia el almacenamiento de un segmento registrado a lo largo del tiempo. Se presupone que ha modificado los registros de uso del almacenamiento tal como se describe en Modificar el esquema del registro de uso y que los archivos de registro se denominan "logstorage*".
project-name>SELECT SUBSTRING(filename, 13, 10) as day, storage_byte_hours/24 as size FROM [storageanalysis.storage] ORDER BY filename LIMIT 100
Ejemplo de resultado de la consulta:
Waiting on bqjob_r36fbf5c164a966e8_0000014379bc199c_1 ... (0s) Current status: DONE +------------+----------------------+ | day | size | +------------+----------------------+ | 2014_01_05 | 2.3052008408333334E8 | | 2014_01_06 | 2.3012297245833334E8 | | 2014_01_07 | 3.3477797120833334E8 | | 2014_01_08 | 4.4183686058333334E8 | +-----------------------------------+
Si no has modificado el esquema y estás usando el predeterminado, puedes ejecutar la siguiente consulta:
project-name>SELECT storage_byte_hours FROM [storageanalysis.storage] LIMIT 100
Ejecuta una consulta en la tabla de registro de uso.
Por ejemplo, la siguiente consulta muestra cómo resumir los métodos de solicitud que usan los clientes para acceder a los recursos del segmento registrado.
project-name>SELECT cs_method, COUNT(*) AS count FROM [storageanalysis.usage] GROUP BY cs_method
Ejemplo de resultado de la consulta:
Waiting on bqjob_r1a6b4596bd9c29fb_000001437d6f8a52_1 ... (0s) Current status: DONE +-----------+-------+ | cs_method | count | +-----------+-------+ | PUT | 8002 | | GET | 12631 | | POST | 2737 | | HEAD | 2173 | | DELETE | 7290 | +-----------+-------+
Cierra el shell interactivo de la herramienta bq.
project-name> quit
Inhabilitar el registro
Línea de comandos
Inhabilita el registro con la marca --clear-log-bucket
en el comando buckets update
:
gcloud storage buckets update gs://example-bucket --clear-log-bucket
Para comprobar que el registro se ha inhabilitado correctamente, usa el comando buckets describe
:
gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"
Si el registro está inhabilitado, se devuelve lo siguiente:
null
APIs REST
API JSON
Para inhabilitar el registro, envía una solicitud PATCH a la configuración de registro del cubo, tal como se muestra en el siguiente ejemplo.
PATCH /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com { "logging": null }
API XML
Para inhabilitar el registro, envía una solicitud PUT a la configuración de registro del bucket, como se muestra en el siguiente ejemplo:
PUT /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com <Logging/>
Formato de los registros de uso y almacenamiento
Los registros de uso y de almacenamiento pueden proporcionar una cantidad abrumadora de información. Puedes usar las siguientes tablas para identificar toda la información proporcionada en estos registros.
Campos de registro de uso:
Campo | Tipo | Descripción |
---|---|---|
time_micros |
entero | La hora en la que finalizó la solicitud, en microsegundos desde la era Unix. |
c_ip |
cadena | La dirección IP desde la que se presentó la solicitud. El prefijo "c" indica que esta información se refiere al cliente. |
c_ip_type |
entero | El tipo de IP del campo c_ip:
|
c_ip_region |
cadena | Reservado para uso futuro. |
cs_method |
cadena | El método HTTP de esta solicitud. El prefijo "cs" indica que la información se envió del cliente al servidor. |
cs_uri |
cadena | El URI de la solicitud. |
sc_status |
entero | El código de estado HTTP que el servidor envió como respuesta. El prefijo "sc" indica que la información se envió del servidor al cliente. |
cs_bytes |
entero | El número de bytes enviados en la solicitud. |
sc_bytes |
entero | El número de bytes enviados como respuesta. |
time_taken_micros |
entero | Tiempo que se ha tardado en atender la solicitud en microsegundos, medido desde que se recibe el primer byte hasta que se envía la respuesta. Ten en cuenta que, en el caso de las subidas reanudables, el punto final se determina mediante la respuesta a la solicitud de subida final que formaba parte de la subida reanudable. |
cs_host |
cadena | El host de la solicitud original. |
cs_referer |
cadena | El referente HTTP de la solicitud. |
cs_user_agent |
cadena | El user-agent de la solicitud. El valor es GCS Lifecycle Management para las solicitudes realizadas por la gestión del ciclo de vida. |
s_request_id |
cadena | El identificador de la solicitud. |
cs_operation |
cadena | La operación de Cloud Storage, por ejemplo, GET_Object . Puede ser nulo. |
cs_bucket |
cadena | El segmento especificado en la solicitud. |
cs_object |
cadena | El objeto especificado en la solicitud. Puede ser nulo. |
Campos de registro de almacenamiento:
Campo | Tipo | Descripción |
---|---|---|
bucket |
cadena | El nombre del depósito. |
storage_byte_hours |
entero | Tamaño medio en bytes-hora del segmento durante un periodo de 24 horas. Para obtener el tamaño total del contenedor, divide las horas-byte entre 24. |