Nutzungs- und Speicherlogs

In diesem Dokument wird erklärt, wie Sie Nutzungslogs und Speicherinformationen für Cloud Storage-Buckets herunterladen und mit Google BigQuery analysieren.

Einführung

Cloud Storage bietet Nutzungs- und Speicherlogs in Form von CSV-Dateien, die Sie herunterladen und sich ansehen können. Die stündlich erstellten Nutzungslogs enthalten Informationen zu allen Anfragen, die an einen bestimmten Bucket gestellt wurden. Die täglichen Speicherlogs liefern Informationen zum Speicherverbrauch dieses Buckets für den letzten Tag.

Nutzungs- und Speicherlogs werden nach der Einrichtung automatisch in dem von Ihnen bestimmten Bucket als neue Objekte erstellt. Für Nutzungs- und Speicherlogs gelten dieselben Preise wie für andere in Cloud Storage gespeicherte Objekte.

Sollten Sie Nutzungslogs oder Cloud-Audit-Logs verwenden?

In den meisten Fällen ist Cloud-Audit-Logs die empfohlene Methode zum Erstellen von Logs, mit denen in Cloud Storage ausgeführte API-Vorgänge erfasst werden:

  • Cloud-Audit-Logs erfasst den Zugriff auf kontinuierliche Weise, wobei Ereignisse innerhalb von Sekunden nach ihrem Auftreten zugestellt werden.
  • Cloud-Audit-Logs erzeugt Logs, mit denen Sie einfacher arbeiten können.
  • Cloud-Audit-Logs können viele Ihrer Google Cloud-Dienste überwachen, nicht nur Cloud Storage.
  • In Cloud-Audit-Logs können optional detaillierte Informationen zu Anfragen und Antworten erfasst werden.

In einigen Fällen können Sie stattdessen Nutzungslogs verwenden. Die Verwendung von Nutzungslogs eignet sich in der Regel in folgenden Situationen:

  • Sie möchten den Zugriff verfolgen, weil eine Ressource allUsers oder allAuthenticatedUsers in den Einstellungen der Zugriffssteuerung enthält, z. B. Zugriff auf Assets in einem Bucket, den Sie als statische Website konfiguriert haben.
  • Sie möchten durch die Verwaltung des Objektlebenszyklus vorgenommene Änderungen verfolgen.
  • Sie möchten authentifizierte Browserdownloads verwenden, um auf Objekte im Bucket zuzugreifen.
  • Sie möchten, dass Ihre Logs Latenzinformationen, die Größe von Anfragen und Antworten einzelner HTTP-Anfragen oder den vollständigen URL-Pfad und jeden Abfrageparameter enthalten.

Beachten Sie, dass Nutzungslogs nur stündlich erstellt werden und verzögert sein können, insbesondere bei Berichten über Buckets mit hohen Anfrageraten.

Sollten Sie Speicherlogs oder Monitoring verwenden?

Im Allgemeinen sollten Sie keine Speicherlogs verwenden. Monitoring wird zur Messung des Speicherverbrauchs empfohlen. Es bietet Visualisierungstools sowie zusätzliche Messwerte zum Speicherverbrauch, die in Speicherlogs nicht berücksichtigt werden. Unter Größe eines Buckets ermitteln finden Sie eine Schritt-für-Schritt-Anleitung für Monitoring.

Logbereitstellung einrichten

Im Folgenden wird das Einrichten der Logbereitstellung für einen bestimmten Bucket mithilfe des gsutil-Tools, der XML API und der JSON API beschrieben. Falls Sie das gsutil-Tool nicht haben, können Sie es als Teil des Google Cloud SDK-Pakets oder als eigenständiges Produkt herunterladen und installieren.

gsutil

  1. Erstellen Sie zur Speicherung Ihrer Logs ein Bucket mit folgendem Befehl:

    gsutil mb gs://example-logs-bucket
  2. Weisen Sie Cloud Storage die Rolle roles/storage.legacyBucketWriter für den Bucket zu:

    gsutil iam ch group:cloud-storage-analytics@google.com:legacyBucketWriter gs://example-logs-bucket

    Die Rolle gewährt Cloud Storage die Berechtigung, mit dem Alias cloud-storage-analytics@google.com Ihre Logs als neue Objekte zu erstellen und zu speichern.

    Logobjekte haben die Standard-Objekt-ACL des Log-Buckets, es sei denn, für den Bucket ist der einheitliche Zugriff auf Bucket-Ebene aktiviert.

  3. Aktivieren Sie mit dem Befehl logging das Logging für Ihren Bucket:

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

    Optional können Sie mit log_object_prefix ein Objektpräfix für Ihre Logobjekte festlegen. Dieses Präfix bildet den Anfang des Logobjektnamens. Es darf maximal 900 Zeichen umfassen und muss ein gültiger Objektname sein. Standardmäßig ist das Objektpräfix der Name des Buckets, für den die Logs aktiviert werden.

XML API

  1. Erstellen Sie zur Speicherung Ihrer Logs ein Bucket mit folgender Anfrage:

    PUT /example-logs-bucket HTTP/1.1
    Host: storage.googleapis.com
    
  2. Legen Sie Berechtigungen fest, um Cloud Storage die Berechtigung WRITE für den Bucket zu gewähren, damit Ihre Logs als neue Objekte erstellt und gespeichert werden. Sie müssen einen ACL-Eintrag für den Bucket hinzufügen, der der Gruppe cloud-storage-analytics@google.com Schreibzugriff gewährt. Achten Sie darauf, dass die Anfrage alle vorhandenen ACLs für den Bucket sowie die neue ACL enthält.

    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. Aktivieren Sie Logging für Ihren Bucket mithilfe des Logging-Abfrageparameters:

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

JSON API

  1. Erstellen Sie zur Speicherung Ihrer Logs ein Bucket mit folgender Anfrage:

    POST /storage/v1/b?project=project-id
    Host: storage.googleapis.com
    
    {
      "name": "example-logs-bucket"
    }
    
  2. Weisen Sie Cloud Storage die Rolle roles/storage.legacyBucketWriter für den Bucket zu. Wenn es für den Bucket zusätzliche IAM-Bindungen auf Bucket-Ebene gibt, achten Sie darauf, diese in die Anfrage aufzunehmen.

    POST /storage/v1/b/example-logs-bucket/iam
    Host: storage.googleapis.com
    {
      "bindings":[
        {
          "role": "roles/storage.legacyBucketWriter",
          "members":[
            "group-cloud-storage-analytics@google.com"
          ]
        }
      ]
    }
    

    Die Rolle gewährt Cloud Storage die Berechtigung, mit dem Alias cloud-storage-analytics@google.com Ihre Logs als neue Objekte zu erstellen und zu speichern.

    Logobjekte haben die Standard-Objekt-ACL des Log-Buckets, es sei denn, für den Bucket ist der einheitliche Zugriff auf Bucket-Ebene aktiviert.

  3. Aktivieren Sie mit der folgenden Anfrage Logging für Ihren Bucket:

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

Logging-Status prüfen

gsutil

In gsutil können Sie das Logging mit dem Befehl logging get prüfen:

gsutil logging get gs://example-bucket

Außerdem können Sie die Logging-Konfiguration in einer Datei speichern:

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

Wenn das Logging aktiviert ist, gibt der Server die Logging-Konfiguration in der Antwort zurück:

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

Ist das Logging nicht aktiviert, wird Folgendes zurückgegeben:

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

XML API

Mit der Cloud Storage-XML API können Sie eine GET-Bucket-Anfrage zum Abrufen der Logging-Konfiguration für den Bucket senden, wie im folgenden Beispiel gezeigt:

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

Wenn das Logging aktiviert ist, sendet der Server die Konfiguration in der Antwort. Diese könnte so aussehen:

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

Ist das Logging nicht aktiviert, wird eine leere Konfiguration zurückgegeben:

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

JSON API

Mit der Cloud Storage-JSON API können Sie eine GET-Anfrage zum Abrufen der Logging-Konfiguration für den Bucket senden, wie im folgenden Beispiel gezeigt:

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

Wenn das Logging aktiviert ist, sendet der Server die Konfiguration in der Antwort. Diese könnte so aussehen:

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

Ist das Logging nicht aktiviert, wird eine leere Konfiguration zurückgegeben:

{
}

Logs herunterladen

Speicherlogs werden einmal pro Tag erstellt und geben die Menge des Speicherplatzes an, die am Vortag genutzt wurde. In der Regel werden sie vor 19:00 Uhr MEZ generiert.

Nutzungslogs werden stündlich erstellt, wenn es in dem überwachten Bucket Aktivitäten gibt. Nutzungslogs werden normalerweise 15 Minuten nach Ablauf der Stunde generiert.

Der Zugriff auf Ihre Logs wird durch die ACL für die Log-Objekte gesteuert. Diese haben die Standardobjekt-ACL des Log-Buckets.

Am einfachsten können Sie Nutzungs- und Speicherlogs über die Google Cloud Console oder mit dem gsutil-Tool herunterladen. Die Nutzungslogs werden im CSV-Format erstellt und so benannt:

gs://BUCKET_NAME/OBJECT_PREFIX_usage_TIMESTAMP_ID_v0

Das unten stehende Beispiel zeigt ein Nutzungslogobjekt für den Bucket "gs://example-bucket", das am 18. Juni 2013 um 14:00 Uhr UTC erstellt wurde und im Bucket "gs://example-logs-bucket" gespeichert ist:

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

Speicherlogs werden folgendermaßen benannt:

gs://BUCKET_NAME/OBJECT_PREFIX_storage_TIMESTAMP_ID_v0

Das folgende Beispiel zeigt ein Speicher-Log-Objekt für denselben Bucket am 18. Juni 2013:

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

So laden Sie Logs herunter:

Console

  1. Wechseln Sie in der Cloud Console zum Cloud Storage-Browser.

    Browser aufrufen

  2. Wählen Sie Ihren Log-Bucket aus.

  3. Laden Sie Ihre Logs herunter oder zeigen Sie sie an, indem Sie auf das entsprechende Log-Objekt klicken.

gsutil

Führen Sie den folgenden Befehl aus:

gsutil cp LOGS_OBJECT DESTINATION_URI

Logs in BigQuery analysieren

Um Ihre Cloud Storage-Nutzung und Speicher-Logs abzufragen, können Sie Google BigQuery verwenden, das schnelle, SQL-ähnliche Abfragen in Tabellen ermöglicht, für die nur Anfügungen zulässig sind. Das BigQuery-Befehlszeilentool bq basiert auf Python und ermöglicht es Ihnen, über die Befehlszeile auf BigQuery zuzugreifen. Informationen zum Herunterladen und Verwenden von bq finden Sie auf der Referenzseite zum bq-Befehlszeilentool.

Logs in BigQuery laden

  1. Wählen Sie ein Standardprojekt aus.

    Weitere Informationen zum Auswählen eines Projekts finden Sie unter Mit Projekten arbeiten.

  2. Erstellen Sie ein neues Dataset.

    $ bq mk storageanalysis
    Dataset 'storageanalysis' successfully created.
    
  3. Listen Sie die Datasets im Projekt auf.

    $ bq ls
     
    datasetId
    -----------------
    storageanalysis
    
  4. Speichern Sie die Nutzungs-und Speicherschemas auf Ihrem lokalen Computer, um sie im Ladebefehl verwenden zu können.

    Die zu verwendenden Schemas finden Sie unter cloud_storage_usage_schema_v0 und cloud_storage_storage_schema_v0. Diese werden auch im Abschnitt Format von Nutzungs- und Speicherlogs beschrieben.

  5. Laden Sie die Nutzungslogs in das Dataset.

    $ 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
    

    Mit diesen Befehlen erledigen Sie Folgendes:

    • Nutzungs- und Speicherlogs aus dem Bucket example-logs-bucket laden
    • Die Tabellen usage und storage im Dataset storageanalysis erstellen.
    • Schemadaten (.json-Datei) aus demselben Verzeichnis lesen, in dem der Befehl bq ausgeführt wird
    • Erste Zeile jeder Logdatei überspringen, da sie Spaltenbeschreibungen enthält

    Weil Sie in diesem Beispiel den Ladebefehl zum ersten Mal ausgeführt haben, wurden die Tabellen usage und storage erstellt. Sie können durch weitere Ladebefehle mit anderen Nutzungslogdateinamen oder Platzhaltern weiter Daten an diese Tabellen anfügen. Mit dem folgenden Befehl hängen Sie zum Beispiel Daten aus allen Logs, die mit "bucket_usuage_2014" beginnen, an die Tabelle storage an:

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

    Bei der Verwendung von Platzhaltern sollten Sie bereits in BiqQuery hochgeladene Logs in ein anderes Verzeichnis verschieben (z. B. gs://example-logs-bucket/processed), um Daten aus einem Log nicht mehrfach hochzuladen.

Auf die Funktionen von BiqQuery können Sie auch über das BigQuery-Browsertool zugreifen. Damit können Sie Daten im Rahmen des Prozesses zum Erstellen von Tabellen laden.

Weitere Informationen zum Laden von Daten aus Cloud Storage, einschließlich des programmatischen Ladens, finden Sie in Daten aus Cloud Storage laden.

Nutzungslog-Schema ändern

In manchen Fällen kann es hilfreich sein, Nutzungslogs vorzuverarbeiten, bevor sie in BigQuery geladen werden. Dabei können Sie beispielsweise zusätzliche Informationen zu den Nutzungslogs hinzufügen, um die Abfrageanalyse in BigQuery zu vereinfachen. In diesem Abschnitt erfahren Sie, wie Sie den Dateinamen jedes Speichernutzungslogs zum Log hinzufügen. Dazu müssen das vorhandene Schema und die Logdateien geändert werden.

  1. Ändern Sie das vorhandene Schema cloud_storage_storage_schema_v0, um den Dateinamen wie unten gezeigt hinzuzufügen. Geben Sie dem Schema einen neuen Namen, zum Beispiel cloud_storage_storage_schema_custom.json, damit Sie es vom Original unterscheiden können.

    [  {"name": "bucket", "type": "string", "mode": "REQUIRED"},
    {"name": "storage_byte_hours","type": "integer","mode": "REQUIRED"},
    {"name": "filename","type": "string","mode": "REQUIRED"}
    ]
    
  2. Vorverarbeiten Sie die Speichernutzungslogdateien basierend auf dem neuen Schema, bevor Sie sie in BigQuery laden.

    Die folgenden Befehle können beispielsweise in einer Linux-, macOS- oder Windows-Umgebung (Cygwin) verwendet werden:

    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
    

    Mit dem gsutil-Befehl werden die Dateien in Ihr Arbeitsverzeichnis kopiert. Der zweite Befehl geht die Log-Dateien durch und fügt der Beschreibungszeile (erste Zeile) die Information "filename" sowie der Datenzeile (zweite Zeile) den eigentlichen Dateinamen hinzu. Hier sehen Sie ein Beispiel einer geänderten Log-Datei:

    "bucket","storage_byte_hours","filename"
    "example-bucket","5532482018","example-bucket_storage_2014_01_05_08_00_00_021fd_v0"
    
  3. Laden Sie Ihre lokal geänderten Logs beim Laden der Speichernutzungslogs in BigQuery unter Verwendung des angepassten Schemas.

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

Logs in BigQuery abfragen

Sobald die Logs in BigQuery geladen sind, können Sie die Nutzungslogs abfragen, um Informationen zu Ihren protokollierten Buckets zu erhalten. Das folgende Beispiel zeigt, wie Sie das bq-Tool in einem Szenario einsetzen, in dem Sie über die Nutzungslogs mehrerer Tage für einen Bucket verfügen und sie, wie unter Logs in BigQuery laden erklärt, geladen haben. Die unten stehenden Abfragen können Sie auch mit dem BigQuery-Browsertool ausführen.

  1. Wechseln Sie im bq-Tool in den interaktiven Modus.

    $ bq shell
    
  2. Fragen Sie die Speicher-Log-Tabelle ab.

    Die folgende Abfrage zeigt beispielsweise, wie sich die Speichernutzung eines protokollierten Buckets im Zeitverlauf ändert. Es wird davon ausgegangen, dass Sie die Speichernutzungslogs geändert haben, wie unter Nutzungslog-Schema ändern beschrieben, und dass die Logdateien "logstorage*" heißen.

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

    Beispielausgabe der Abfrage:

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

    Falls Sie das Schema nicht geändert haben und das Standardschema verwenden, können Sie die folgende Abfrage ausführen:

    project-name>SELECT storage_byte_hours FROM [storageanalysis.storage] LIMIT 100
    
  3. Fragen Sie die Nutzungs-Log-Tabelle ab.

    Die folgende Abfrage zeigt beispielsweise, wie die Anfragemethoden, die Clients für den Zugriff auf Ressourcen im protokollierten Bucket verwenden, zusammengefasst werden.

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

    Beispielausgabe der Abfrage:

    Waiting on bqjob_r1a6b4596bd9c29fb_000001437d6f8a52_1 ... (0s) Current status: DONE
    +-----------+-------+
    | cs_method | count |
    +-----------+-------+
    | PUT       |  8002 |
    | GET       | 12631 |
    | POST      |  2737 |
    | HEAD      |  2173 |
    | DELETE    |  7290 |
    +-----------+-------+
    
  4. Beenden Sie die interaktive Shell des bq-Tools.

    project-name> quit
    

Logging deaktivieren

gsutil

In gsutil deaktivieren Sie das Logging mit dem Befehl logging:

gsutil logging set off gs://example-bucket

Führen Sie die Anfrage logging get aus, um zu prüfen, ob das Logging erfolgreich deaktiviert wurde:

gsutil logging get gs://example-bucket

Wenn das Logging deaktiviert ist, wird Folgendes zurückgegeben:

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

XML API

In der Cloud Storage-XML API deaktivieren Sie das Logging, indem Sie eine PUT-Anfrage an die Logging-Konfiguration des Buckets senden, wie im folgenden Beispiel gezeigt:

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

<Logging/>

JSON API

In der Cloud Storage JSON API deaktivieren Sie das Logging, indem Sie eine PATCH-Anfrage an die Logging-Konfiguration des Buckets senden, wie im folgenden Beispiel gezeigt:

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

{
 "logging": null
}

Format von Nutzungs- und Speicherlogs

Die Nutzungs- und Speicherlogs können enorme Informationsmengen enthalten. Die folgenden Tabellen zeigen, welche Informationen Sie darin finden.

Nutzungslogfelder:

Feld Typ Beschreibung
time_micros Integer Die Zeit, in der die Anfrage abgeschlossen wurde, in Mikrosekunden seit der Unixzeit.
c_ip String Die IP-Adresse, von der die Anfrage gesendet wurde. Das Präfix "c" gibt an, dass es sich um Informationen über den Client handelt.
c_ip_type Integer Die Art der IP-Adresse im Feld "c_ip":
  • Der Wert 1 weist auf eine IPV4-Adresse hin.
  • Der Wert 2 steht für eine IPV6-Adresse.
c_ip_region String Reserviert für zukünftige Verwendungen.
cs_method String Die HTTP-Methode der Anfrage. Das Präfix "cs" gibt an, dass diese Informationen vom Client an den Server gesendet wurden.
cs_uri String Der URI der Anfrage.
sc_status Integer Der HTTP-Statuscode, den der Server als Antwort gesendet hat. Das Präfix "sc" gibt an, dass diese Information vom Server an den Client gesendet wurde.
cs_bytes Integer Die Anzahl der in der Anfrage gesendeten Byte.
sc_bytes Integer Die Anzahl der in der Antwort gesendeten Byte.
time_taken_micros Integer Die Zeit für das Verarbeiten der Anfrage in Mikrosekunden ab dem Zeitpunkt, als das erste Byte empfangen wurde, bis zum Senden der Antwort. Bei fortsetzbaren Uploads hängt der Endpunkt von der Antwort auf die letzte Upload-Anfrage ab, die Teil des fortsetzbaren Uploads war.
cs_host String Der Host in der ursprünglichen Anfrage.
cs_referer String Die HTTP-Verweis-URL für die Anfrage.
cs_user_agent String Der User-Agent der Anfrage. Bei Anfragen durch die Lebenszyklusverwaltung lautet der Wert GCS Lifecycle Management.
s_request_id String Die Anfragekennung.
cs_operation String Die Cloud Storage-Operation, z. B. GET_Object
cs_bucket String Der in der Anfrage angegebene Bucket. Bei einer Anfrage zum Auflisten von Buckets kann der Wert null sein.
cs_object String Das in der Anfrage angegebene Objekt. Es kann null sein.

Speicherlogfelder:

Feld Typ Beschreibung
bucket String Der Name des Buckets.
storage_byte_hours Integer Durchschnittliche Größe des Buckets in Byte-Stunden über einen Zeitraum von 24 Stunden. Die Gesamtgröße erhalten Sie, indem Sie die Byte-Stunden durch 24 teilen.