Registros de acceso y registros de almacenamiento

En este documento, se explica cómo descargar y revisar los registros de acceso y la información de almacenamiento para tus depósitos de Cloud Storage, así como analizar los registros con Google BigQuery.

Introducción

Cloud Storage ofrece registros de acceso y almacenamiento en forma de archivos CSV que puedes descargar y ver. Los registros de acceso proporcionan información para todas las solicitudes realizadas en un depósito específico y se crean cada hora, mientras que los registros de almacenamiento diarios proporcionan información sobre el consumo de almacenamiento de ese depósito el último día. Los registros de acceso y almacenamiento se crean de forma automática como objetos nuevos en un depósito que especifiques.

Cuando configuras un depósito de Cloud Storage para simular el comportamiento de un sitio web estático, es posible que desees registrar la forma en la que se usan los recursos en el sitio web. Ten en cuenta que también puedes configurar los registros de acceso al depósito y los registros de almacenamiento para cualquier depósito de Cloud Storage.

¿Se deben usar los registros de acceso y almacenamiento o Cloud Audit Logging?

En la mayoría de los casos, Cloud Audit Logging es el método recomendado para generar registros que realicen un seguimiento de las operaciones de la API ejecutadas en Cloud Storage:

  • Cloud Audit Logging realiza de forma continua un seguimiento del acceso.
  • Cloud Audit Logging produce registros con los que es más fácil trabajar.
  • Cloud Audit Logging puede supervisar varios servicios de Google Cloud Platform, no solo de Cloud Storage.

En algunos casos, es posible que desees usar los registros de acceso y almacenamiento.

Es muy probable que desees usar los registros de acceso si ocurre lo siguiente:

  • Deseas realizar un seguimiento del acceso a objetos públicos.
  • Deseas realizar un seguimiento del acceso a los objetos cuando el acceso se otorgue de forma exclusiva debido a que las listas de control de acceso (LCA) están configuradas en los objetos.
  • Deseas realizar un seguimiento de los cambios que realizaron con la función Administración del ciclo de vida de los objetos.
  • Tienes la intensión de usar descargas del navegador autenticadas para tener acceso a los objetos en el depósito.
  • Deseas que tus registros incluyan información de latencia o el tamaño de solicitud y respuesta de solicitudes HTTP individuales.

Es muy probable que desees usar los registros de almacenamiento si ocurre lo siguiente:

  • Deseas realizar un seguimiento de la cantidad de datos almacenados en tus depósitos. Ten en cuenta que esta información también está disponible en Stackdriver, junto con los recuentos de objetos de un depósito.

Configura la entrega de los registros

En los siguientes pasos, se describe cómo configurar la entrega de los registros de un depósito específico con la herramienta gsutil, la API de XML y la API de JSON. Si no tienes la herramienta gsutil, puedes descargarla y luego instalarla como parte del paquete del SDK de Google Cloud o como producto independiente.

gsutil

  1. Crea un depósito para almacenar tus registros.

    Crea un depósito para almacenar tus registros con el siguiente comando:

    gsutil mb gs://example-logs-bucket
  2. Configura los permisos para otorgar a Cloud Storage el permiso de WRITE en el depósito.

    Cloud Storage debe tener permiso de WRITE para crear y almacenar tus registros como objetos nuevos. Para que Cloud Storage tenga acceso de WRITE en tu depósito, otorga al grupo cloud-storage-analytics@google.com acceso de escritura con el siguiente comando:

    gsutil acl ch -g cloud-storage-analytics@google.com:W gs://example-logs-bucket
  3. Los objetos de registro tendrán la LCA de objeto predeterminada del depósito de registros. Puedes configurar esta LCA del depósito de registros con gsutil. Por ejemplo, usa lo siguiente para configurar la LCA de objeto predeterminada en project-private:

    gsutil defacl set project-private gs://example-logs-bucket
  4. Habilita el registro para tu depósito.

    Puedes habilitar el registro para tu depósito con el comando logging:

    gsutil logging set on -b gs://example-logs-bucket [-o log_object_prefix ] gs://example-bucket

    De forma opcional, puedes configurar el prefijo log_object_prefix del objeto para tus objetos de registro. 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 depósito para el que están habilitados los registros.

API de XML

  1. Crea un depósito para almacenar tus registros.

    Crea un depósito para almacenar tus registros con la siguiente solicitud:

    PUT /example-logs-bucket HTTP/1.1
    Host: storage.googleapis.com
    
  2. Configura los permisos para otorgar a Cloud Storage el permiso de WRITE en el depósito.

    Cloud Storage debe tener permiso de WRITE para crear y almacenar tus registros como objetos nuevos. A fin de que Cloud Storage tenga acceso de WRITE en tu depósito, agrega una entrada de LCA para el depósito que otorga acceso de escritura al grupo cloud-storage-analytics@google.com. Asegúrate de incluir en la solicitud todas las LCA del depósito existentes, además de la LCA 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>
    
  3. Habilita el registro para tu depósito.

    Puedes habilitar el registro para tu depósito con el parámetro de consulta de registros:

    PUT /example-bucket?logging HTTP/1.1
    Host: storage.googleapis.com
    
    <Logging>
        <LogBucket>example-logs-bucket</LogBucket>
        <LogObjectPrefix>log_object_prefix</LogObjectPrefix>
    </Logging>
    

API de JSON

  1. Crea un depósito para almacenar tus registros.

    Crea un depósito para almacenar tus registros con la siguiente solicitud:

    POST /storage/v1/b?project=project-id
    Host: www.googleapis.com
    
    {
      "name": "example-logs-bucket"
    }
    
  2. Configura los permisos para otorgar a Cloud Storage el permiso de WRITE en el depósito.

    Cloud Storage debe tener permiso de WRITE para crear y almacenar tus registros como objetos nuevos. A fin de que Cloud Storage tenga acceso de WRITE en tu depósito, agrega una entrada de LCA para el depósito que otorga acceso de escritura al grupo cloud-storage-analytics@google.com. Puedes hacer esto con la siguiente solicitud al recurso BucketAccessControls para el depósito de registros:

    POST /storage/v1/b/example-logs-bucket/acl
    Host: www.googleapis.com
    {
     "entity": "group-cloud-storage-analytics@google.com",
     "role": "WRITER"
    }
    
  3. Habilita el registro para tu depósito.

    Puedes habilitar el registro para tu depósito con la siguiente solicitud:

    PATCH /storage/v1/b/example-bucket
    Host: www.googleapis.com
    
    {
     "logging": {
      "logBucket": "example-logs-bucket",
      "logObjectPrefix": "log_object_prefix"
     }
    }
    

Verifica el estado del registro

gsutil

Con gsutil, puedes verificar el registro si usas el comando logging get:

gsutil logging get gs://example-bucket

También puedes guardar las configuraciones de registro en un archivo como el siguiente:

gsutil logging get gs://example-bucket > your_logging_configuration_file

Si el registro está habilitado, el servidor muestra la configuración de registro en la siguiente respuesta:

{"logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix"}

Si el registro no está habilitado, se muestra lo siguiente:

gs://example-bucket/ has no logging configuration.

API de XML

Con la API de XML de Cloud Storage, puedes enviar una solicitud de depósito GET para la configuración de registro del depósito, 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 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 siguiente:

<?xml version="1.0" ?>
<Logging/>

API de JSON

Con la API de JSON de Cloud Storage, puedes enviar una solicitud GET para la configuración de registro del depósito, como se muestra en el siguiente ejemplo.

GET /storage/v1/b/example-bucket?fields=logging
Host: www.googleapis.com

Si el registro está habilitado, el servidor envía la configuración en la respuesta. Una respuesta puede 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 siguiente:

{
}

Descarga registros

Los registros de almacenamiento se generan una vez al día y contienen el uso de almacenamiento del 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 depósito supervisado. Por lo general, se crean 15 minutos después del final de la hora.

Una LCA controla el acceso a tus registros en los objetos de registro. Los objetos de registro tienen la LCA de objetos predeterminada del depósito de registros.

La manera más sencilla de descargar tus registros de acceso y almacenamiento es través de Google Cloud Platform Console o con el uso de la herramienta gsutil. Tus registros de acceso se encuentran en formato CSV y tienen la siguiente convención de nombres:

gs://<bucket_name>/<object_prefix>_usage_<timestamp>_<id>_v0

Por ejemplo, la siguiente convención es un objeto de registros de acceso de un depósito con el nombre gs://example-bucket, creado el 18 de junio de 2013 a las 2:00 p.m. y almacenado en el depósito gs://example-logs-bucket:

gs://example-logs-bucket/example-bucket_usage_2013_06_18_14_00_00_1702e6_v0

Los registros de almacenamiento se nombran con la siguiente convención:

gs://<bucket_name>/<object_prefix>_storage_<timestamp>_<id>_v0

Por ejemplo, la siguiente convención es un objeto de registro de almacenamiento del mismo depósito el 18 de junio de 2013:

gs://example-logs-bucket/example-bucket_storage_2013_06_18_07_00_00_1702e6_v0

Para descargar registros, realiza una de las siguientes acciones:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Abrir el navegador de Cloud Storage
  2. Selecciona tu depósito de registros.

  3. Haz clic en el objeto de registro adecuado para descargar o ver tus registros.

gsutil

Ejecuta el siguiente comando:

gsutil cp <logs_object> <destination_uri>

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 Herramienta de línea de comandos de BQ.

Carga registros en BigQuery

  1. Selecciona un proyecto predeterminado.

    Para obtener más información sobre cómo seleccionar un proyecto, consulta Trabaja con proyectos.

  2. Crea un conjunto de datos nuevo.

    $ bq mk storageanalysis
    Dataset 'storageanalysis' successfully created.
    
  3. Haz una lista de los conjuntos de datos en el proyecto:

    $ bq ls
    
    datasetId
    -----------------
    storageanalysis
    
  4. Guarda 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 Formatos de registros de acceso y almacenamiento.

  5. Carga los registros de acceso 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, se realizan las siguientes acciones:

    • Carga registros de uso y almacenamiento desde el depósito example-logs-bucket.
    • Crea tablas usage y storage en el conjunto de datos storageanalysis.
    • 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.

    En el ejemplo que se muestra aquí, se crearon las tablas usage y storage debido a que fue la primera vez que ejecutaste el comando de carga. Podrías agregar datos a estas tablas con los comandos de carga posteriores de nombres diferentes de archivos de registro de acceso o con comodines. Por ejemplo, con el siguiente comando, se agregan a la tabla storage datos desde todos los registros que comienzan con "bucket_usuage_2014":

    $ bq load --skip_leading_rows=1 storageanalysis.usage \
          gs://example-logs-bucket/bucket_usage_2014* \
          ./cloud_storage_usage_schema.json
    

    Cuando usas comodines, es posible que desees mover los registros que ya se subieron a BigQuery a otro directorio (p. ej., gs://example-logs-bucket/processed) para no subir datos desde un registro más de una vez.

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 acceso

En algunas situaciones, puede resultarte útil procesar de manera previa los registros de acceso antes de cargarlos en BigQuery. Por ejemplo, puedes agregar información adicional a los registros de acceso para facilitar el análisis de consultas en BigQuery. En esta sección, te mostraremos la forma en la que puedes agregar al registro el nombre de archivo de cada registro de acceso al almacenamiento. Esto requiere que modifiques el esquema existente y cada archivo de registro.

  1. Modifica el esquema existente, cloud_storage_storage_schema_v0, para agregar el nombre de archivo como se muestra a continuación. Asigna un nombre nuevo al esquema nuevo, 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"}
    ]
    
  2. Procesa de manera previa los archivos de registro de acceso al 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):

    gsutil 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 gsutil, 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"
    
  3. Cuando cargues los registros de acceso al 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 tus registros se cargan en BigQuery, puedes consultar tus registros de acceso para mostrar información sobre tus depósitos registrados. En el siguiente ejemplo, se muestra cómo usar la herramienta de BQ en una situación donde tienes registros de acceso de un depósito durante varios días y cargaste los registros como se muestra en Carga registros de acceso en BigQuery. También puedes ejecutar las consultas a continuación con la herramienta de navegación de BigQuery.

  1. En la herramienta de BQ, ingresa el modo interactivo.

    $ bq shell
    
  2. 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 depósito registrado cambia a tiempo. Se supone que modificaste los registros de acceso al almacenamiento como se describe en Modifica el esquema de registro de acceso 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
    
  3. 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 depósito 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 |
    +-----------+-------+
    
  4. Sal de la shell interactiva de la herramienta de BQ.

    project-name> quit
    

Inhabilita el registro

gsutil

Con gsutil, usa el comando logging para inhabilitar el registro:

gsutil logging set off gs://example-bucket

Para comprobar que el registro se haya inhabilitado correctamente, realiza una consulta logging get:

gsutil logging get gs://example-bucket

Si el registro se inhabilita, se muestra lo siguiente:

gs://example-bucket/ has no logging configuration.

API de XML

Con la API de XML de Cloud Storage, envía una solicitud PUT a la configuración de registro del depósito para inhabilitar el registro, como se muestra en el siguiente ejemplo:

PUT /example-bucket?logging HTTP/1.1
Host: storage.googleapis.com

<Logging/>

API de JSON

Con la API de JSON de Cloud Storage, envía una solicitud PATCH a la configuración de registro del depósito para inhabilitar el registro, como se muestra en el siguiente ejemplo:

PATCH /example-bucket?logging HTTP/1.1
Host: storage.googleapis.com

{
 "logging": null
}

Formato de registro de acceso y almacenamiento

Los registros de acceso y almacenamiento pueden proporcionar una cantidad excesiva de información. Puedes usar las siguientes tablas que te ayudan a identificar toda la información proporcionada en estos registros.

Campos de registro de acceso:

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:
  • Un valor de 1 indica que se trata de una dirección IPV4.
  • Un valor de 2 indica que se trata de una dirección IPv6.
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, que se mide 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 que se realizan con la 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.
cs_bucket string El depósito especificado en la solicitud. Si se trata de una solicitud de depósitos de lista, esta puede ser nula.
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 depósito.
storage_byte_hours número entero Tamaño promedio del depósito en bytes por hora durante un período de 24 horas. Para obtener el tamaño total del depósito, divide el byte por hora entre 24.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.