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 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 acceso y de almacenamiento se crean automáticamente como objetos nuevos en el depósito que especifiques.

¿Se deben usar registros de acceso o Cloud Audit Logs?

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 registra el acceso de forma continua.
  • Cloud Audit Logs produce registros con los que es más fácil trabajar.
  • Cloud Audit Logs puede supervisar muchos de tus servicios de Google Cloud Platform, no solo Cloud Storage.

En algunos casos, es posible que prefieras usar los registros de acceso. En particular, si ocurre lo siguiente:

  • Deseas realizar un seguimiento del acceso a objetos públicos, como los elementos de un depósito que hayas configurado como sitio web estático.
  • 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 se realizaron con la función Administración del ciclo de vida de los objetos.
  • Tienes la intenció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.

¿Se deben usar registros de almacenamiento o Stackdriver?

En general, no debes usar registros de almacenamiento. La herramienta recomendada para medir el consumo de almacenamiento es Stackdriver, que proporciona herramientas de visualización y métricas adicionales relacionadas con el consumo de almacenamiento que los registros de almacenamiento no ofrecen. Consulta Determina el tamaño de un depósito para obtener instrucciones paso a paso sobre el uso de Stackdriver.

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 de gsutil, la API de XML y la API de JSON. Si no tienes la herramienta de gsutil, puedes descargarla e 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 manera opcional, puedes establecer el prefijo de objeto log_object_prefix 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. Para que Cloud Storage tenga acceso de WRITE en tu depósito, agrega una entrada de LCA en 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. Para que Cloud Storage tenga acceso de WRITE en tu depósito, agrega una entrada de LCA en 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 mediante 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 que aparece a continuación:

<?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 que aparece a continuación:

{
}

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.

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

La forma más fácil de descargar tus registros de acceso y registros de almacenamiento es con Google Cloud Platform Console o mediante la herramienta de gsutil. Los registros de acceso están 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 realizado 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 registro.

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

gsutil

Ejecuta el comando siguiente:

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 sobre la herramienta de línea de comandos bq.

Carga registros en BigQuery

  1. Selecciona un proyecto predeterminado.

    Para obtener más información sobre cómo seleccionar un proyecto, consulta cómo trabajar 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 Formato de registro 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 los registros de uso y de almacenamiento del depósito example-logs-bucket.
    • Crea las 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.

    Como fue la primera vez que ejecutaste el comando load en este ejemplo, se crearon las tablas usage y storage. 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, el siguiente comando agrega datos de todos los registros que comienzan con "bucket_usuage_2014" a la tabla storage:

    $ 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.

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 algunos casos, te puede resultar útil procesar con anterioridad los registros de acceso antes de cargarlos a 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, se muestra como agregar el nombre del archivo de cada registro de acceso de almacenamiento al registro. Esto requiere modificar el esquema existente y cada archivo de registro.

  1. Modifica el esquema existente, cloud_storage_storage_schema_v0, para agregar el nombre del archivo como se muestra a continuación. Renombra el 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"}
    ]
    
  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 los registros están cargados en BigQuery, puedes consultar los registros de acceso 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 acceso de un depósito durante varios días y cargaste los registros como se muestra en la sección sobre la carga de registros de acceso en BigQuery. También puedes ejecutar las siguientes consultas 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 lo largo del 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, inhabilita el registro con el comando logging:

gsutil logging set off gs://example-bucket

Para verificar que el registro se haya inhabilitado correctamente, realiza una solicitud 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 para 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, 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.
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.