Log di utilizzo e log di archiviazione

Questo documento illustra come scaricare ed esaminare i log di utilizzo e lo spazio di archiviazione per i bucket Cloud Storage e analizzare i log utilizzando Google BigQuery

Introduzione

Cloud Storage offre log di utilizzo e log di archiviazione in formato CSV che puoi scaricare e visualizzare. I log di utilizzo forniscono informazioni per tutti delle richieste effettuate su un bucket specificato e vengono create ogni ora. Spazio di archiviazione log forniscono informazioni sul consumo dello spazio di archiviazione del bucket per all'ultimo giorno e vengono creati ogni giorno.

Al termine della configurazione, i log di utilizzo e quelli dell'archiviazione vengono creati automaticamente come nuovi in un bucket specificato.

I log di utilizzo e i log di archiviazione sono soggetti a agli stessi prezzi degli altri oggetti archiviati in Cloud Storage.

Dovresti usare i log di utilizzo o Cloud Audit Logs?

Nella maggior parte dei casi, Cloud Audit Logs è il metodo consigliato per generando log che tengono traccia delle operazioni API eseguite in Cloud Storage:

  • Cloud Audit Logs monitora l'accesso in modo continuo, con la distribuzione di eventi entro pochi secondi dal momento in cui si verificano.
  • Cloud Audit Logs produce log con cui è più facile lavorare.
  • Cloud Audit Logs può monitorare molti dei tuoi servizi Google Cloud, non solo di archiviazione ideale in Cloud Storage.
  • Facoltativamente, Cloud Audit Logs può registrare informazioni dettagliate su richieste e risposte.

In alcuni casi, potresti voler utilizzare i log di utilizzo anziché o in aggiunta utilizzando Cloud Audit Logs. Ti consigliamo di utilizzare i log di utilizzo se:

  • Vuoi monitorare l'accesso che si verifica perché una risorsa ha allUsers o allAuthenticatedUsers nelle sue impostazioni di controllo dell'accesso, come l'accesso a asset in un bucket che hai configurato come sito web statico.
  • Vuoi tenere traccia delle modifiche apportate dalla funzionalità Gestione del ciclo di vita degli oggetti oppure Funzionalità di Autoclass.
  • Intendi utilizzare i download autenticati del browser per accedere agli oggetti in nel bucket.
  • Vuoi che i log includano le informazioni sulla latenza, la richiesta delle singole richieste HTTP o il percorso URL completo e ogni parametro di query.
  • Vuoi monitorare l'accesso solo a determinati bucket nel tuo progetto, quindi non abilitare gli audit log di accesso ai dati, che monitorano l'accesso a tutti i bucket del progetto.

Tieni presente che i log di utilizzo vengono generati solo su base oraria e possono subire ritardi. in particolare quando si eseguono report su bucket con percentuali di richieste elevate.

Dovresti usare i log di archiviazione o Monitoring?

In genere, non dovresti utilizzare i log di archiviazione. Lo strumento consigliato per effettuare misurazioni il consumo dello spazio di archiviazione è Monitoring, che fornisce e metriche aggiuntive relative al consumo dello spazio di archiviazione al contrario. Consulta la scheda Console per determinare le dimensioni di un bucket per istruzioni passo passo sull'uso di Monitoring.

Configura la consegna dei log

Quando configuri la consegna dei log, vengono generati sia i log di utilizzo sia i log di archiviazione del bucket specificato. I passaggi seguenti spiegano come configurare la consegna dei log per un bucket. Se non hai ancora un bucket per il quale prevedi di utilizzarlo per l'archiviazione dei log, crea il bucket.

Riga di comando

  1. Concedi a Cloud Storage il roles/storage.objectCreator per il bucket:

    gcloud storage buckets add-iam-policy-binding gs://example-logs-bucket --member=group:[email protected] --role=roles/storage.objectCreator

    Il ruolo assegna a Cloud Storage, sotto forma di gruppo, [email protected], autorizzazione per creare e archiviare i log come nuovi oggetti.

    Gli oggetti di log hanno l'oggetto predefinito acl del bucket di log, a meno che nel bucket non sia abilitato l'accesso uniforme a livello di bucket.

  2. Abilita il logging per il tuo bucket utilizzando il flag --log-bucket:

    gcloud storage buckets update gs://example-bucket --log-bucket=gs://example-logs-bucket [--log-object-prefix=log_object_prefix]

    Facoltativamente, puoi impostare un prefisso oggetto per gli oggetti di log utilizzando il flag --log-object-prefix. Il prefisso dell'oggetto costituisce all'inizio del nome dell'oggetto log. Può contenere un massimo di 900 caratteri e deve essere un nome oggetto valido. Per impostazione predefinita, il prefisso dell'oggetto indica il nome del bucket per il quale sono abilitati i log.

API REST

API JSON

  1. Concedi a Cloud Storage il roles/storage.objectCreator per il bucket. Se a livello di bucket esistono Associazioni IAM per il bucket, assicurati di includerle nella richiesta.

    POST /storage/v1/b/example-logs-bucket/iam
    Host: storage.googleapis.com
    {
      "bindings":[
        {
          "role": "roles/storage.objectCreator",
          "members":[
            "[email protected]"
          ]
        }
      ]
    }
    

    Il ruolo assegna a Cloud Storage, sotto forma di gruppo, [email protected], autorizzazione per creare e archiviare i log come nuovi oggetti.

    Gli oggetti di log hanno l'oggetto predefinito acl del bucket di log, a meno che nel bucket non sia abilitato l'accesso uniforme a livello di bucket.

  2. Abilita il logging per il tuo bucket utilizzando la richiesta seguente:

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

API XML

  1. Imposta le autorizzazioni per concedere l'autorizzazione WRITE in Cloud Storage al bucket per creare e archiviare i log come nuovi oggetti. Devi aggiungere una voce ACL per il bucket che concede al gruppo [email protected] accesso in scrittura. Assicurati di includi tutti gli ACL esistenti per il bucket, oltre ai nuovi ACL, nella richiesta.

    PUT /example-logs-bucket?acl HTTP/1.1
    Host: storage.googleapis.com
    
    <AccessControlList>
      <Entries>
        <Entry>
          <Scope type="GroupByEmail">
            <EmailAddress>[email protected]</EmailAddress>
          </Scope>
         <Permission>WRITE</Permission>
        </Entry>
        <!-- include other existing ACL entries here-->
      </Entries>
    </AccessControlList>
    
  2. Abilita il logging per il tuo bucket utilizzando il parametro di query di logging:

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

Controlla lo stato del logging

Riga di comando

Controlla il logging utilizzando il comando buckets describe con Flag --format:

gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"

Puoi anche salvare le configurazioni di logging in un file:

gcloud storage buckets describe gs://example-bucket > your_logging_configuration_file --format="default(logging_config)"

Se il logging è abilitato, il server restituisce la configurazione del logging in la risposta:

logging:
  logBucket: example-logs-bucket
  logObjectPrefix: log_object_prefix

Se il logging non è abilitato, viene restituito quanto segue:

null

API REST

API JSON

Invia una richiesta GET per la configurazione di logging del bucket come mostrato nel seguente esempio:

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

Se il logging è abilitato, il server invia la configurazione risposta. Una risposta potrebbe essere simile alla seguente:

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

Se il logging non è abilitato, viene restituita una configurazione vuota:

{}

API XML

Invia una richiesta GET Bucket per la configurazione di logging del bucket come mostrato nell'esempio seguente:

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

Se il logging è abilitato, il server invia la configurazione risposta. Una risposta potrebbe essere simile alla seguente:

<?xml version="1.0" ?>
<Logging>
    <LogBucket>
        example-logs-bucket
    </LogBucket>
    <LogObjectPrefix>
        log_object_prefix
    </LogObjectPrefix>
</Logging>

Se il logging non è abilitato, viene restituita una configurazione vuota:

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

Scarica i log

I log di archiviazione vengono generati una volta al giorno e contengono la quantità di spazio di archiviazione utilizzato del giorno precedente. In genere vengono creati prima delle 10:00 PST.

I log di utilizzo vengono generati su base oraria quando c'è attività da segnalare nel di un bucket monitorato. I log di utilizzo vengono in genere creati 15 minuti dopo la fine ogni ora.

Il modo più semplice per scaricare i log di utilizzo e di archiviazione dal bucket in archiviati tramite la console Google Cloud o interfaccia a riga di comando gcloud storage. I log di utilizzo sono in formato CSV e presentano seguente convenzione di denominazione:

OBJECT_PREFIX_usage_TIMESTAMP_ID_v0

Analogamente, i log di archiviazione vengono denominati utilizzando la seguente convenzione:

OBJECT_PREFIX_storage_TIMESTAMP_ID_v0

Ad esempio, di seguito è il nome di un oggetto log di utilizzo che utilizza il prefisso dell'oggetto predefinito, riporta l'utilizzo per il bucket denominato example-bucket è stato creato il 18 giugno 2022 alle 14:00 UTC:

example-bucket_usage_2022_06_18_14_00_00_1702e6_v0

Analogamente, di seguito è riportato il nome dell'oggetto log di archiviazione che utilizza prefisso oggetto predefinito ed è stato creato il 18 giugno 2022 per lo stesso bucket:

example-bucket_storage_2022_06_18_07_00_00_1702e6_v0

Per scaricare i log:

Console

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Seleziona il bucket in cui sono archiviati i tuoi log.

  3. Scarica o visualizza i log facendo clic sull'oggetto log appropriato.

Riga di comando

Esegui questo comando:

gcloud storage cp gs://BUCKET_NAME/LOGS_OBJECT DESTINATION

Dove:

  • BUCKET_NAME è il nome del bucket in cui sono archiviati i log. Ad esempio, example-logs-bucket.

  • LOGS_OBJECT è il nome del log di utilizzo oppure di archiviazione del log scaricato. Ad esempio: example-bucket_usage_2022_06_18_14_00_00_1702e6_v0.

  • DESTINATION è la posizione in cui il log è in fase di download. Ad esempio, Desktop/Logs.

Analizzare i log in BigQuery

Per eseguire query sui log di utilizzo e archiviazione di Cloud Storage, puoi usare Google BigQuery che consente di eseguire query rapide di tipo SQL tabelle. Lo strumento a riga di comando di BigQuery, bq, è basato su Python consente di accedere a BigQuery dalla riga di comando. Per informazioni su scaricando e utilizzando bq, consulta la pagina di riferimento dello strumento a riga di comando bq.

Carica i log in BigQuery

  1. Seleziona un progetto predefinito.

    Per maggiori dettagli sulla selezione di un progetto, consulta Utilizzo dei progetti.

  2. Crea un nuovo set di dati.

    $ bq mk storageanalysis
    Dataset 'storageanalysis' successfully created.
    
  3. Elenca i set di dati nel progetto:

    $ bq ls
     
    datasetId
    -----------------
    storageanalysis
    
  4. Salva gli schemi di utilizzo e archiviazione sul tuo computer locale per utilizzarli nell' il comando di caricamento.

    Puoi trovare gli schemi da utilizzare nelle seguenti posizioni: cloud_storage_usage_schema_v0 . cloud_storage_storage_schema_v0. Gli schemi sono descritti anche nel sezione Formato dei log di utilizzo e archiviazione.

  5. Carica i log di utilizzo nel set di dati.

    $ 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
    

    Questi comandi:

    • Carica i log di utilizzo e archiviazione dal bucket example-logs-bucket.
    • Crea le tabelle usage e storage nel set di dati storageanalysis.
    • Leggi i dati di schema (file .json) dalla stessa directory in cui viene eseguito il comando bq.
    • Salta la prima riga di ogni file di log perché contiene descrizioni di colonne.

    Perché è stata la prima volta che hai eseguito il comando di caricamento nell'esempio qui, sono state create le tabelle usage e storage. Puoi continuare da aggiungere a queste tabelle con comandi di caricamento successivi con nomi dei file di log di utilizzo o l'uso di caratteri jolly. Ad esempio, aggiunge i dati da tutti i log che iniziano con "bucket_usuage_2014", alla tabella storage:

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

    Quando utilizzi i caratteri jolly, potrebbe essere opportuno spostare i log già caricati BigQuery in un'altra directory (ad es. gs://example-logs-bucket/processed) per evitare di caricare i dati di un log più di una volta.

È possibile accedere alla funzionalità BigQuery anche tramite lo strumento di navigazione BigQuery. Con lo strumento del browser, puoi caricare i dati tramite il processo di creazione della tabella.

Per ulteriori informazioni sul caricamento dei dati da Cloud Storage, tra cui: per il caricamento programmatico dei dati, vedi Caricamento di dati da Cloud Storage.

Modifica lo schema del log di utilizzo

In alcuni scenari, può essere utile pre-elaborare i log di utilizzo prima caricamento in BigQuery. Ad esempio, puoi aggiungere ulteriori informazioni log di utilizzo per semplificare l'analisi delle query in BigQuery. In questa sezione, vedremo come aggiungere al log il nome file di ogni log relativo all'utilizzo dello spazio di archiviazione. Questa operazione richiede la modifica dello schema esistente e di ogni file di log.

  1. Modifica lo schema esistente, cloud_storage_storage_schema_v0, per aggiungere il nome del file come mostrato di seguito. Dai al nuovo schema un nuovo nome, ad esempio cloud_storage_storage_schema_custom.json, per distinguerlo dall'originale.

    [  {"name": "bucket", "type": "string", "mode": "REQUIRED"},
    {"name": "storage_byte_hours","type": "integer","mode": "REQUIRED"},
    {"name": "filename","type": "string","mode": "REQUIRED"}
    ]
    
  2. Pre-elabora i file di log sull'utilizzo dello spazio di archiviazione in base al nuovo schema prima di e caricarli in BigQuery.

    Ad esempio, i seguenti comandi possono essere utilizzati in Linux, macOS o Ambiente 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
    

    Il comando gcloud storage copia i file nella directory di lavoro. Il secondo comando esegue il loop dei file di log e aggiunge "filename" alla riga della descrizione (prima riga) e il nome effettivo del file nella riga di dati. (seconda riga). Ecco un esempio di file di log modificato:

    "bucket","storage_byte_hours","filename"
    "example-bucket","5532482018","example-bucket_storage_2014_01_05_08_00_00_021fd_v0"
    
  3. Quando carichi in BigQuery i log relativi all'utilizzo dello spazio di archiviazione, carica il file log modificati e utilizza lo schema personalizzato.

    for f in example-bucket_storage\*; \
    do ./bq.py load --skip_leading_rows=1 storageanalysis.storage $f ./cloud_storage_storage_schema_custom.json; done
    

Log delle query in BigQuery

Dopo aver caricato i log in BigQuery, puoi eseguire query su di essi per restituiscono informazioni sui bucket registrati. L'esempio seguente mostra come usare lo strumento bq in uno scenario in cui sono presenti log di utilizzo per un bucket in diversi giorni e hai caricato i log come mostrato in Caricamento dei log di utilizzo in BigQuery Puoi anche eseguire le query di seguito utilizzando lo strumento del browser BigQuery.

  1. Nello strumento bq, attiva la modalità interattiva.

    $ bq shell
    
  2. Eseguire una query sulla tabella dei log di archiviazione.

    Ad esempio, la seguente query mostra in che modo lo spazio di archiviazione di un bucket registrato cambiamenti nel tempo. Si presuppone che tu abbia modificato i log di utilizzo dello spazio di archiviazione descritta in Modifica dello schema dei log di utilizzo e che i file di log sono denominate "logstorage*".

    project-name>SELECT SUBSTRING(filename, 13, 10) as day, storage_byte_hours/24 as size FROM [storageanalysis.storage] ORDER BY filename LIMIT 100
    

    Output di esempio della query:

    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 |
    +-----------------------------------+
    

    Se non hai modificato lo schema e stai utilizzando quello predefinito, puoi esegui questa query:

    project-name>SELECT storage_byte_hours FROM [storageanalysis.storage] LIMIT 100
    
  3. Eseguire una query sulla tabella dei log di utilizzo.

    Ad esempio, la seguente query mostra come riepilogare i metodi di richiesta usate dai client per accedere alle risorse nel bucket registrato.

    project-name>SELECT cs_method, COUNT(*) AS count FROM [storageanalysis.usage] GROUP BY cs_method
    

    Output di esempio della query:

    Waiting on bqjob_r1a6b4596bd9c29fb_000001437d6f8a52_1 ... (0s) Current status: DONE
    +-----------+-------+
    | cs_method | count |
    +-----------+-------+
    | PUT       |  8002 |
    | GET       | 12631 |
    | POST      |  2737 |
    | HEAD      |  2173 |
    | DELETE    |  7290 |
    +-----------+-------+
    
  4. Esci dalla shell interattiva dello strumento bq.

    project-name> quit
    

Disabilita il logging

Riga di comando

Disabilita il logging con il flag --clear-log-bucket nella sezione Comando buckets update:

gcloud storage buckets update gs://example-bucket --clear-log-bucket

Per verificare che il logging sia stato disabilitato correttamente, utilizza il Comando buckets describe:

gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"

Se il logging è disattivato, viene restituito quanto segue:

null

API REST

API JSON

Disabilita il logging inviando una richiesta PATCH al logging del bucket come mostrato nell'esempio seguente.

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

{
 "logging": null
}

API XML

Disabilita il logging inviando una richiesta PUT al logging del bucket come mostrato nell'esempio seguente:

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

<Logging/>

Formato dei log relativi a utilizzo e archiviazione

I log di utilizzo e di archiviazione possono fornire una quantità enorme di informazioni. Puoi utilizzare le seguenti tabelle per identificare tutti i fornite in questi log.

Campi dei log di utilizzo:

Campo Tipo Descrizione
time_micros integer L'ora in cui la richiesta è stata completata, in microsecondi dall'epoca Unix.
c_ip string L'indirizzo IP da cui è stata effettuata la richiesta. La "c" indica che si tratta di informazioni relative al client.
c_ip_type integer Il tipo di IP nel campo c_ip:
  • Il valore 1 indica un indirizzo IPV4.
  • Il valore 2 indica un indirizzo IPV6.
c_ip_region string Riservato per un uso futuro.
cs_method string Il metodo HTTP di questa richiesta. La "cs" indica che queste informazioni sono state inviate dal client al server.
cs_uri string L'URI della richiesta.
sc_status integer Il codice di stato HTTP che il server ha inviato in risposta. La sezione "sc" indica che queste informazioni sono state inviate dal server al client.
cs_bytes integer Il numero di byte inviati nella richiesta.
sc_bytes integer Il numero di byte inviati nella risposta.
time_taken_micros integer Il tempo necessario per gestire la richiesta in microsecondi, misurato da quando viene ricevuto il primo byte al momento dell'invio della risposta. Tieni presente che per e ripristinabili, il punto finale è determinato dalla risposta al prompt richiesta di caricamento che faceva parte di un caricamento ripristinabile.
cs_host string L'host nella richiesta originale.
cs_referer string Il referrer HTTP per la richiesta.
cs_user_agent string Lo User-Agent della richiesta. Il valore è GCS Lifecycle Management per le richieste effettuate dalla gestione del ciclo di vita.
s_request_id string L'identificatore della richiesta.
cs_operation string L'operazione Cloud Storage, ad esempio GET_Object. Questo può essere nullo.
cs_bucket string Il bucket specificato nella richiesta.
cs_object string L'oggetto specificato in questa richiesta. Questo valore può essere nullo.

Campi del log di Storage:

Campo Tipo Descrizione
bucket string Il nome del bucket.
storage_byte_hours integer Dimensione media in byte/ore in un periodo di 24 ore del bucket. Per ottenere la dimensione totale del bucket, dividi le ore byte per 24.