En este documento, se explica cómo descargar y revisar los registros de uso y la información de almacenamiento para tus depósitos de Cloud Storage, así como analizar los registros mediante Google BigQuery.
Introducción
Cloud Storage ofrece registros de uso y de almacenamiento en forma de archivos CSV que puedes descargar y ver. Los registros de uso proporcionan información para todas las solicitudes realizadas en un bucket especificado y se crean cada hora. Los registros de almacenamiento proporcionan información sobre el consumo de almacenamiento de ese depósito para el último día y se crean a diario.
Una vez configurados, los registros de uso y de almacenamiento se generan automáticamente para el bucket especificado y se almacenan como objetos nuevos en el bucket que especifiques.
Los registros de uso y almacenamiento están sujetos a los mismos precios que otros objetos almacenados en Cloud Storage.
¿Se deben usar registros de uso o registros de auditoría de Cloud?
En la mayoría de los casos, se recomienda Cloud Audit Logs para generar registros que rastreen las operaciones de API realizadas en Cloud Storage:
- Cloud Audit Logs hace un seguimiento del acceso de forma continua y entrega eventos en cuestión de segundos después de que ocurren.
- Cloud Audit Logs produce registros con los que es más fácil trabajar.
- Los registros de auditoría de Cloud pueden supervisar muchos de tus servicios de Google Cloud, no solo Cloud Storage.
- De manera opcional, los registros de auditoría de Cloud pueden registrar información detallada de solicitudes y respuestas.
En algunos casos, es posible que desees usar los registros de uso en lugar de los Registros de auditoría de Cloud o además de ellos. En particular, es preferible usarlos si ocurre lo siguiente:
- Deseas realizar un seguimiento del acceso que se produce cuando un recurso tiene
allUsers
oallAuthenticatedUsers
en su configuración de control de acceso, como acceso a los elementos en un bucket que hayas configurado como sitio web estático. - Deseas realizar un seguimiento de los cambios que realizaron las funciones la Administración del ciclo de vida de los objetos o Autoclass.
- Deseas que tus registros incluyan información de latencia, el tamaño de solicitud y respuesta de solicitudes HTTP individuales, o la ruta completa de URL y todos parámetros de búsqueda.
- Quieres realizar un seguimiento del acceso solo a ciertos buckets del proyecto y, por lo tanto, no quieres habilitar los registros de auditoría de acceso a los datos, que realiza un seguimiento del acceso a todos los buckets del proyecto.
Ten en cuenta que los registros de uso solo se generan por hora y pueden retrasarse, en especial cuando se informan en buckets que tienen porcentajes de solicitudes altos.
¿Se deben usar registros de almacenamiento o Monitoring?
En general, no debes usar registros de almacenamiento. La herramienta recomendada para medir el consumo de almacenamiento es Monitoring, que proporciona herramientas de visualización y métricas adicionales relacionadas con el consumo de almacenamiento que los registros de almacenamiento no ofrecen. Consulta la pestaña Console para determinar el tamaño de un bucket a fin de obtener instrucciones paso a paso sobre el uso de Monitoring.
Configura la entrega de los registros
Antes de configurar la entrega de registros, debes tener un bucket para almacenarlos. Este bucket debe cumplir con los siguientes requisitos, de lo contrario, se producirá un error de registro:
El bucket que almacena los registros debe existir en la misma organización que el bucket que se registra.
- Si el bucket que se registra no está contenido en ninguna organización, el bucket que almacena los registros debe existir en el mismo proyecto que el bucket que se registra.
Si usas o habilitas los Controles del servicio de VPC, el bucket que almacena los registros debe residir dentro del mismo perímetro de seguridad que el bucket que se registra.
Si aún no tienes un bucket que cumpla con estos requisitos, crea uno.
En los siguientes pasos, se describe cómo configurar la entrega de registros para un bucket:
Línea de comandos
Asigna a Cloud Storage el rol
roles/storage.objectCreator
para el bucket.gcloud storage buckets add-iam-policy-binding gs://example-logs-bucket --member=group:cloud-storage-analytics@google.com --role=roles/storage.objectCreator
Este rol le otorga permiso a Cloud Storage, en forma de grupo
cloud-storage-analytics@google.com
, para crear y almacenar tus registros como objetos nuevos.Los objetos de registro tienen la LCA de objeto predeterminada del bucket de registros, a menos que el bucket tenga habilitado el acceso uniforme a nivel de bucket .
Habilita el registro para tu bucket con la marca
--log-bucket
:gcloud storage buckets update gs://example-bucket --log-bucket=gs://example-logs-bucket [--log-object-prefix=log_object_prefix]
De manera opcional, puedes establecer un prefijo de objeto para tus objetos de registro a través de la marca
--log-object-prefix
. El prefijo del objeto es el comienzo del nombre del objeto de registro. Puede tener un máximo de 900 caracteres y debe ser un nombre de objeto válido. Según la configuración predeterminada, el prefijo del objeto es el nombre del bucket en el que están habilitados los registros.
API de REST
API de JSON
Asigna a Cloud Storage el rol
roles/storage.objectCreator
para el bucket. Si en el bucket hay vinculaciones adicionales de IAM a nivel de bucket, asegúrate de incluirlas 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 le otorga permiso a Cloud Storage, en forma de grupo
cloud-storage-analytics@google.com
, para crear y almacenar tus registros como objetos nuevos.Los objetos de registro tienen la LCA de objeto predeterminada del bucket de registros, a menos que el bucket tenga habilitado el acceso uniforme a nivel de bucket .
Habilita el registro para tu bucket con la siguiente solicitud:
PATCH /storage/v1/b/example-bucket Host: storage.googleapis.com { "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
API de XML
Establece permisos para otorgar el permiso
WRITE
de Cloud Storage al bucket a fin de crear y almacenar tus registros como objetos nuevos. Debes agregar una entrada de LCA para el bucket que otorga acceso de escritura grupal decloud-storage-analytics@google.com
. Asegúrate de incluir en la solicitud todas las LCA existentes del bucket, 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 para tu bucket con el parámetro de búsqueda de registro:
PUT /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com <Logging> <LogBucket>example-logs-bucket</LogBucket> <LogObjectPrefix>log_object_prefix</LogObjectPrefix> </Logging>
Verifica el estado del registro
Línea de comandos
Verifica el registro mediante 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 registro en un archivo como se muestra a continuación:
gcloud storage buckets describe gs://example-bucket > your_logging_configuration_file --format="default(logging_config)"
Si el registro está habilitado, el servidor muestra la configuración de registro en la siguiente respuesta:
logging: logBucket: example-logs-bucket logObjectPrefix: log_object_prefix
Si el registro no está habilitado, se muestra lo siguiente:
null
API de REST
API de JSON
Envía una solicitud GET para la configuración de registro del bucket 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. La respuesta podría ser similar a la que se muestra a continuación:
{ "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
Si el registro no está habilitado, se muestra una configuración vacía como la que aparece a continuación:
{}
API de XML
Envía una solicitud de bucket GET para la configuración de registro del bucket, 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. La respuesta podría ser similar a la que se muestra a continuación:
<?xml version="1.0" ?> <Logging> <LogBucket> example-logs-bucket </LogBucket> <LogObjectPrefix> log_object_prefix </LogObjectPrefix> </Logging>
Si el registro no está habilitado, se muestra una configuración vacía como la que aparece a continuación:
<?xml version="1.0" ?> <Logging/>
Descargar registros
Los registros de almacenamiento se generan una vez al día y contienen la cantidad de almacenamiento que se usó el día anterior. Por lo general, se crean antes de las 10:00 a.m. PST.
Los registros de uso se generan cada hora cuando hay actividad que informar en el bucket supervisado. Por lo general, se crean 15 minutos después del final de la hora.
La forma más fácil de descargar los registros de uso y de almacenamiento del bucket en el que están almacenados es a través de la consola de Google Cloud o la CLI de gcloud storage
. Los registros de uso están en formato CSV y tienen la siguiente convención de nombres:
OBJECT_PREFIX_usage_TIMESTAMP_ID_v0
De forma similar, los registros de almacenamiento se nombran según la siguiente convención:
OBJECT_PREFIX_storage_TIMESTAMP_ID_v0
Por ejemplo, el siguiente es el nombre de un objeto de registro de uso que usa el prefijo de objeto predeterminado, informa el uso del bucket llamado example-bucket
y se creó el 18 de junio de 2022 a las 14:00 UTC:
example-bucket_usage_2022_06_18_14_00_00_1702e6_v0
De manera similar, el siguiente es el nombre del objeto de registro de almacenamiento que usa el prefijo de objeto predeterminado y se creó el 18 de junio de 2022 para el mismo bucket:
example-bucket_storage_2022_06_18_07_00_00_1702e6_v0
Para descargar registros, realiza una de las siguientes acciones:
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
Selecciona el bucket en el que se almacenan tus registros.
Haz clic en el objeto de registro adecuado para descargar o ver tus registros.
Línea de comandos
Ejecuta el siguiente comando:
gcloud storage cp gs://BUCKET_NAME/LOGS_OBJECT DESTINATION
Donde:
BUCKET_NAME
es el nombre del bucket en el que se almacenan los registros. Por ejemplo,example-logs-bucket
LOGS_OBJECT
es el nombre del registro de uso o de almacenamiento que se descarga. Por ejemplo,example-bucket_usage_2022_06_18_14_00_00_1702e6_v0
DESTINATION
es la ubicación en la que se descarga el registro. Por ejemplo,Desktop/Logs
Analiza registros en BigQuery
Para consultar los registros de uso y almacenamiento de Cloud Storage, puedes usar Google BigQuery, que habilita consultas rápidas similares a las de SQL en tablas que solo permiten anexar. 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 más información sobre cómo descargar y usar bq, consulta la página de referencia sobre la herramienta de línea de comandos bq.
Carga los registros en BigQuery
Selecciona un proyecto predeterminado.
Para obtener más información sobre cómo seleccionar un proyecto, consulta Trabaja con proyectos.
Crea un conjunto de datos nuevo.
$ bq mk storageanalysis Dataset 'storageanalysis' successfully created.
Haz una lista de los conjuntos de datos en el proyecto:
$ bq ls datasetId
-----------------
storageanalysisGuarda los esquemas de uso y almacenamiento en tu computadora local para usarlos con el comando de carga.
Puedes encontrar los esquemas que se usarán 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 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
Con estos comandos, realiza las siguientes acciones:
- Carga los registros de uso y de almacenamiento del bucket
example-logs-bucket
. - Crea las tablas
usage
ystorage
en el conjunto de datosstorageanalysis
. - Lee los datos del esquema (archivo .json) desde el mismo directorio donde se ejecuta el comando de bq.
- Omite la primera fila de cada archivo de registro debido a que contiene descripciones de columna.
Como fue la primera vez que ejecutaste el comando de carga en este ejemplo, se crearon las tablas
usage
ystorage
. Podrías agregar datos a estas tablas con comandos de carga posteriores con nombres de archivos de registro de uso diferentes o mediante comodines. Por ejemplo, el siguiente comando agrega datos de todos los registros que comienzan con “bucket_usuage_2014” a la tablastorage
:$ bq load --skip_leading_rows=1 storageanalysis.usage \ gs://example-logs-bucket/bucket_usage_2014* \ ./cloud_storage_usage_schema.json
Cuando uses comodines, mueve a otro directorio los registros que ya se subieron a BigQuery (p. ej.,
gs://example-logs-bucket/processed
) para evitar la carga de datos de un registro más de una vez.- Carga los registros de uso y de almacenamiento del bucket
También se puede acceder a la funcionalidad de BigQuery mediante la herramienta de navegación de BigQuery. Con la herramienta de navegación, puedes cargar datos a través del proceso de creación de tablas.
Para obtener información adicional sobre cómo cargar datos desde Cloud Storage, lo que incluye cargar datos de manera programática, consulta Carga datos desde Cloud Storage.
Modifica el esquema de registro de uso
En algunos casos, te puede resultar útil procesar con anterioridad los registros de uso antes de cargarlos a BigQuery. Por ejemplo, puedes agregar información adicional a los registros de uso para facilitar el análisis de consultas en BigQuery. En esta sección, se muestra como agregar el nombre del archivo de cada registro de uso de almacenamiento al registro. Esto requiere modificar el esquema existente y cada archivo de registro.
Modifica el esquema existente, cloud_storage_storage_schema_v0, para agregar el nombre de archivo como se muestra a continuación. Asigna otro nombre al esquema nuevo, por ejemplo, cloud_storage_storage_schema_custom.json, para diferenciarlo del original.
[ {"name": "bucket", "type": "string", "mode": "REQUIRED"}, {"name": "storage_byte_hours","type": "integer","mode": "REQUIRED"}, {"name": "filename","type": "string","mode": "REQUIRED"} ]
Procesa de manera previa los archivos de registro de uso de almacenamiento basados en el esquema nuevo antes de cargarlos en BigQuery.
Por ejemplo, los siguientes comandos se pueden usar en un entorno de 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
Con el comando
gcloud storage
, los archivos se copian en tu directorio de trabajo. Con el segundo comando, se repiten indefinidamente los archivos de registro y se agrega "filename" a la fila de descripción (primera fila) y el nombre del 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 de almacenamiento en BigQuery, carga tus registros modificados de manera local 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
Consulta registros en BigQuery
Una vez que los registros están cargados en BigQuery, puedes consultar los registros de uso para que muestren información sobre tus depósitos registrados. En el siguiente ejemplo, se muestra cómo usar la herramienta de bq en una situación en la que tienes registros de uso de un bucket durante varios días y cargaste los registros como se muestra en Carga registros de uso en BigQuery. También puedes ejecutar las siguientes consultas a través de la herramienta de navegación de BigQuery.
En la herramienta de BQ, ingresa el modo interactivo.
$ bq shell
Ejecuta una consulta en la tabla de registro de almacenamiento.
Por ejemplo, en la siguiente consulta, se muestra la forma en la que el almacenamiento de un bucket registrado cambia a tiempo. Se supone que modificaste los registros de uso de almacenamiento como se describe en Modifica el esquema de registro de uso y que los archivos de registro tienen el nombre “logstorage*”.
project-name>SELECT SUBSTRING(filename, 13, 10) as day, storage_byte_hours/24 as size FROM [storageanalysis.storage] ORDER BY filename LIMIT 100
Este es un resultado de ejemplo 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 modificaste el esquema y usas 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, en la siguiente consulta se muestra la forma de resumir los métodos de solicitud que los clientes usan para acceder a los recursos en el bucket registrado.
project-name>SELECT cs_method, COUNT(*) AS count FROM [storageanalysis.usage] GROUP BY cs_method
Este es un resultado de ejemplo 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 | +-----------+-------+
Sal de la shell interactiva de la herramienta de bq.
project-name> quit
Inhabilita 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 verificar que el registro se haya inhabilitado correctamente, usa el comando buckets describe
:
gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"
Si el registro se inhabilita, se muestra lo siguiente:
null
API de REST
API de JSON
Para inhabilitar el registro, envía una solicitud PATCH a la configuración de registro del bucket, como se muestra en el siguiente ejemplo.
PATCH /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com { "logging": null }
API de 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 registro de uso y almacenamiento
Los registros de uso y almacenamiento pueden proporcionar una cantidad excesiva 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 |
número entero | El tiempo en microsegundos en el que se completó la solicitud a partir del ciclo de entrenamiento de Unix. |
c_ip |
string | La dirección IP desde la que se realizó la solicitud. El prefijo "c" indica que se trata de información del cliente. |
c_ip_type |
número entero | El tipo de IP en el campo c_ip:
|
c_ip_region |
string | Se reserva para usarlo más adelante. |
cs_method |
string | El método HTTP de esta solicitud. El prefijo "cs" indica que esta información se envió del cliente al servidor. |
cs_uri |
string | El URI de la solicitud. |
sc_status |
número entero | El código de estado HTTP que el servidor envió en respuesta. El prefijo "sc" indica que esta información se envió del servidor al cliente. |
cs_bytes |
número entero | El número de bytes enviados en la solicitud. |
sc_bytes |
número entero | El número de bytes enviados en la respuesta. |
time_taken_micros |
número entero | El tiempo en microsegundos que tardó en entregarse la solicitud, medido desde que se recibe el primer byte hasta que se envía la respuesta. Ten en cuenta que para las cargas reanudables, el punto final se determina con la respuesta a la solicitud de carga final que formó parte de la carga reanudable. |
cs_host |
string | El host en la solicitud original. |
cs_referer |
string | El referente HTTP para la solicitud. |
cs_user_agent |
string | El usuario-agente de la solicitud. El valor es GCS Lifecycle Management para las solicitudes realizadas por administración del ciclo de vida . |
s_request_id |
string | El identificador de la solicitud. |
cs_operation |
string | La operación de Cloud Storage, p. ej., GET_Object . Puede ser nulo. |
cs_bucket |
string | Es el bucket especificado en la solicitud. |
cs_object |
string | El objeto especificado en esta solicitud. Puede ser nulo. |
Campos de registro de almacenamiento:
Campo | Tipo | Descripción |
---|---|---|
bucket |
string | El nombre del bucket. |
storage_byte_hours |
número entero | Tamaño promedio del bucket en bytes por hora durante un período de 24 horas. Para obtener el tamaño total del bucket, divide el byte por hora entre 24. |