Kurzanleitung mit Python

In dieser Kurzanleitung führen Sie Python-Programme aus, um Logeinträge zu schreiben, zu lesen, zu löschen und zu exportieren.

Hinweise

Sie benötigen ein Google Cloud-Projekt mit aktivierter Abrechnungsfunktion, um diese Kurzanleitung durchzuarbeiten. Wenn Sie kein Google Cloud-Projekt haben oder die Abrechnung für Ihr Projekt nicht aktiviert ist, gehen Sie so vor:
  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Cloud Console auf der Seite für die Projektauswahl ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

In dieser Kurzanleitung werden Cloud Logging und Cloud Storage verwendet. Die Verwendung dieser Ressourcen kann Kosten für Sie verursachen. Löschen Sie die erstellten Ressourcen, nachdem Sie diese Kurzanleitung abgeschlossen haben, um fortlaufende Kosten zu vermeiden. Weitere Informationen finden Sie unter Bereinigen.

Einstieg

Sie können die Cloud Shell-Umgebung oder eine generische Linux-Umgebung für diese Kurzanleitung verwenden.

Cloud Shell

  1. Die Python-Versionen 2.7 und 3.5 sind in Cloud Shell vorinstalliert. Sie müssen keine andere Software installieren oder konfigurieren.

  2. Öffnen Sie Cloud Shell und prüfen Sie die Projektkonfiguration:

    1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren in der oberen rechten Ecke:

      Cloud Shell aktivieren

      Cloud Shell wird in einem Fenster geöffnet und eine Begrüßungsnachricht wird angezeigt:

      Willkommen bei Cloud Shell

    2. Die Begrüßungsnachricht gibt die konfigurierte Projekt-ID wieder. Handelt es sich nicht um das gewünschte Projekt, führen Sie den folgenden Befehl aus und ersetzen Sie dabei [PROJECT_ID] durch Ihre Projekt-ID:

       gcloud config set project [PROJECT_ID]
      

Linux

  1. Installieren und konfigurieren Sie Python. Sie können die Python-Versionen 2 oder 3 für diese Kurzanleitung verwenden. Weitere Informationen finden Sie unter Python-Entwicklungsumgebung einrichten.

  2. Richten Sie die Berechtigungen für die Identitäts- und Zugriffsverwaltung für Ihr Projekt ein. Mit den folgenden Schritten erstellen Sie ein Dienstkonto für Ihr Projekt und generieren bzw. laden eine Datei auf Ihre Linux-Workstation.

    1. Wechseln Sie in der Cloud Console zu IAM & Verwaltung > Dienstkonten:

      Weiter zu Dienstkonten

    2. Wählen Sie Ihr Schnellstartprojekt aus und klicken Sie dann auf Dienstkonto erstellen:

      • Geben Sie einen Kontonamen ein.
      • Geben Sie eine Kontobeschreibung ein.
      • Klicken Sie auf Erstellen.
    3. Wählen Sie im Bereich Dienstkontoberechtigungen (optional) für die Rolle die Option Logging-Administrator aus der Drop-down-Liste aus. Klicken Sie auf Weiter.

    4. Überspringen Sie die Option, um Nutzern Zugriff auf das Dienstkonto zu gewähren.

    5. Erstellen Sie eine Schlüsseldatei und laden Sie sie auf Ihre Workstation herunter:

      • Klicken Sie im Bereich Schlüssel erstellen (optional) auf Schlüssel erstellen.
      • Wählen Sie als Schlüsseltyp JSON aus und klicken Sie dann auf Erstellen. Nach kurzer Zeit wird in einem Pop-up-Fenster eine Nachricht wie die folgende angezeigt:

        Privater Schlüssel gespeichert

    6. Klicken Sie zum Abschließen der Erstellung Ihres Dienstkontos auf Fertig.

  3. Geben Sie in der Linux-Workstation die Anmeldedaten zur Authentifizierung für Ihre Anwendung an. Dazu legen Sie für die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS den Pfad zur Schlüsseldatei fest. Beispiel:

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
    

    Diese Umgebungsvariable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable noch einmal festlegen.

Quellcode klonen

Klonen Sie das GitHub-Projekt python-docs-samples:

git clone https://github.com/GoogleCloudPlatform/python-docs-samples

Das Verzeichnis python-docs-samples/logging/cloud-client enthält die beiden in dieser Kurzanleitung verwendeten Programme:

  • Mit snippets.py können Sie Einträge in einem Log verwalten.
  • Mit export.py können Sie Logexporte verwalten.

Führen Sie den folgenden Befehl aus, um zum Programmverzeichnis zu wechseln:

cd python-docs-samples/logging/cloud-client

Logeinträge schreiben

Das snippets.py-Programm verwendet die Python-Clientbibliotheken, um Logeinträge in das Logging zu schreiben. Wenn die Option write in der Befehlszeile angegeben ist, schreibt das Programm die folgenden Logeinträge:

  • Einen Eintrag mit unstrukturierten Daten und ohne angegebene Wichtigkeitsstufe
  • Einen Eintrag mit unstrukturierten Daten und der Wichtigkeitsstufe ERROR
  • Einen Eintrag mit strukturierten JSON-Daten und ohne angegebene Wichtigkeitsstufe

Zum Schreiben neuer Logeinträge in das Log my-log führen Sie das snippets.py-Programm mit der Option write aus:

python snippets.py my-log write

Logeinträge aufrufen

Führen Sie das snippets.py-Programm mit der Option list aus, um die Logeinträge in der Cloud Shell zu sehen:

python snippets.py my-log list

Nach wenigen Augenblicken ist der Befehl abgeschlossen und das Ergebnis sieht etwa so aus:

    Listing entries for logger my-log:
    * 2018-11-15T16:05:35.548471+00:00: Hello, world!
    * 2018-11-15T16:05:35.647190+00:00: Goodbye, world!
    * 2018-11-15T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

Wenn das Ergebnis keine Einträge enthält, wiederholen Sie den Befehl. Es dauert einige Momente, bis Stackdriver Logging Logeinträge empfängt und verarbeitet.

Sie können Ihre Logeinträge auch mit der Loganzeige aufrufen. Weitere Informationen finden Sie unter Logs in der Loganzeige ansehen.

Logeinträge löschen

Wenn Sie alle Logeinträge im Log my-list löschen möchten, führen Sie das snippets.py-Programm mit der Option delete aus:

python snippets.py my-log delete

Nach wenigen Augenblicken ist der Befehl mit folgendem Ergebnis abgeschlossen:

Deleted all logging entries for my-log

Logs exportieren

Logging kann Logeinträge nach Cloud Storage-Buckets, BigQuery-Datasets und Pub/Sub exportieren. Ausführliche Informationen zum Exportieren finden Sie unter Übersicht über Logexporte.

In diesem Abschnitt tun Sie Folgendes:

  • Einen Cloud Storage-Bucket als Zielort für Ihre Daten erstellen
  • Eine Datensenke erstellen, die neue Logeinträge zum Ziel kopiert
  • Die Berechtigungen Ihres Cloud Storage-Buckets aktualisieren
  • Logeinträge in Logging schreiben
  • Optional den Inhalt Ihres Cloud Storage-Buckets prüfen

Zielort erstellen

Das Exportziel für diese Kurzanleitung ist ein Cloud Storage-Bucket. So erstellen Sie einen Cloud Storage-Bucket:

  1. Wechseln Sie in der Cloud Console zu Speicher > Browser:

    Browser aufrufen

  2. Klicken Sie auf Bucket erstellen.

  3. Wählen Sie einen Namen für Ihren Bucket aus.

  4. Wählen Sie Regional sowie die nächstgelegene geografische Option für den Standort aus.

  5. Wählen Sie für das Zugriffssteuerungsmodell die Option Berechtigungen auf Objekt- und Bucket-Ebene festlegen aus.

  6. Belassen Sie alle anderen Einstellungen bei ihrem Standardwert. Klicken Sie auf Erstellen.

In dieser Kurzanleitung wird der Cloud Storage-Bucket-Name myloggingproject-1 verwendet.

Senke erstellen

Eine Senke ist eine Regel, die bestimmt, ob Stackdriver Logging einen neu eingetroffenen Logeintrag an einen Zielort exportiert. Eine Senke hat drei Attribute:

  • Name
  • Ziel
  • Query

Wenn ein neu eingetroffener Logeintrag die Abfragebedingungen erfüllt, wird dieser Logeintrag an den Zielort exportiert.

Das Programm export.py verwendet die Python-Clientbibliotheken zum Erstellen, Auflisten, Ändern und Löschen von Senken. Führen Sie den folgenden Befehl aus, um die Senke mysink zu erstellen, die alle Logeinträge mit einem Schweregrad von mindestens INFO an den Cloud Storage-Bucket myloggingproject-1 sendet:

python export.py create mysink myloggingproject-1 "severity>=INFO"

Führen Sie das Programm export.py mit der Option list aus, um sich die Senken anzeigen zu lassen:

python export.py list

Das Ergebnis sieht so aus:

    mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

Zielberechtigungen aktualisieren

Die Berechtigungen des Ziels, in diesem Fall Ihres Cloud Storage-Buckets, ändern sich beim Erstellen einer Senke mit dem Programm export.py nicht. Sie müssen die Berechtigungseinstellungen Ihres Cloud Storage-Buckets ändern, um der Senke Schreibberechtigung zu erteilen.

So aktualisieren Sie die Berechtigungen für Ihren Cloud Storage-Bucket:

  1. Ermitteln Sie die Identität des Autors für Ihre Senke:

    1. Rufen Sie die Seite Loganzeige auf:

      Zur Loganzeige

    2. Wählen Sie Logs Router aus, um eine Übersicht über Ihre Senken aufzurufen, einschließlich der Identität des Autors für jede Senke.

  2. Klicken Sie in der Cloud Console auf Speicher > Browser:

    Browser aufrufen

  3. Klicken Sie zum Öffnen der Detailansicht auf den Namen Ihres Buckets.

  4. Wählen Sie Berechtigungen aus und klicken Sie auf Mitglieder hinzufügen.

  5. Legen Sie die Rolle auf Storage Object Creator fest und geben Sie die Identität des Autors für die Senke an.

Weitere Informationen finden Sie unter "Zielberechtigungen".

Senke validieren

So prüfen Sie, ob Ihre Senke und Ihr Ziel ordnungsgemäß konfiguriert sind:

  1. Schreiben Sie neue Logeinträge in das Log my-log:

    python snippets.py my-log write
    
  2. Sehen Sie sich den Inhalt Ihres Cloud Storage-Buckets an:

    1. Klicken Sie in der Cloud Console auf Speicher > Browser:

      Browser aufrufen

    2. Klicken Sie zum Öffnen der Detailansicht auf den Namen Ihres Buckets. In der Detailansicht werden die Ordner aufgelistet, die Daten enthalten. Wenn sich in Ihrem Bucket keine Daten befinden, wird die folgende Meldung angezeigt:

      There are no live objects in this bucket.

      Wie unter Verfügbarkeit von exportierten Logs beschrieben, kann es zwei bis drei Stunden dauern, bis die ersten Einträge am Ziel angezeigt werden oder bis Sie über einen Konfigurationsfehler benachrichtigt werden.

    3. Nachdem Ihr Bucket Daten erhalten hat, zeigt die Detailansicht ein Ergebnis wie das folgende an:

      Bucket-Inhalte

    4. Die Daten in jedem Bucket sind in einer Reihe von Ordnern organisiert. Diese sind folgendermaßen benannt: der Ordner auf der obersten Ebene nach dem Lognamen und die Ordner auf den untergeordneten Ebenen anschließend nacheinander nach Jahr, Monat und Tag. Wenn Sie die von Ihrer Senke exportierten Daten sehen möchten, klicken Sie auf den Ordnernamen my-logs und dann durch die Unterordner für Jahr, Monat und Tag, bis Sie eine Datei mit der Endung json finden:

      Bucket-Inhalte

    5. Die JSON-Datei enthält die Logeinträge, die in Ihren Cloud Storage-Bucket exportiert wurden. Klicken Sie auf den Namen der JSON-Datei, um den Inhalt anzuzeigen. Er sieht etwa so aus:

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      Da die Wichtigkeitsstufe ERROR die Wichtigkeitsstufe INFO übersteigt, wird der Log-Eintrag mit dem String "Goodbye, world!" an den Zielort der Senke exportiert. Die anderen geschriebenen Logeinträge wurden nicht an das Ziel exportiert, da ihre Wichtigkeitsstufe auf den Standardwert gesetzt war und die Standard-Wichtigkeitsstufe niedriger als INFO ist.

Fehlerbehebung

Es gibt mehrere Gründe, warum ein Cloud Storage-Bucket möglicherweise leer ist:

  • Sie haben nicht lange genug gewartet, bis die Daten im Bucket angezeigt werden. Es kann zwei bis drei Stunden dauern, bis die ersten Einträge am Ziel vorhanden sind oder Sie über einen Konfigurationsfehler informiert werden. Weitere Informationen finden Sie unter Verfügbarkeit von exportierten Logs.

  • Ein Konfigurationsfehler ist aufgetreten. In diesem Fall erhalten Sie eine E-Mail-Nachricht mit einer Betreffzeile ähnlich der folgenden:

     [ACTION REQUIRED] Stackdriver Logging export config error in myloggingproject.

    Der Inhalt des E-Mail-Texts beschreibt das Konfigurationsproblem. Wenn Sie beispielsweise Ihre Zielberechtigungen nicht aktualisiert haben, wird der folgende Fehlercode angegeben:

     bucket_permission_denied

    Informationen zum Korrigieren dieses Fehlers finden Sie unter Zielberechtigungen aktualisieren.

  • Sie haben keine Logeinträge geschrieben, nachdem Sie die Senke erstellt haben. Die Senke wird nur auf neue Logeinträge angewendet. Wenn Sie diese Situation korrigieren möchten, schreiben Sie neue Logeinträge:

     python snippets.py my-log write
    

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Kurzanleitung verwendeten Ressourcen in Rechnung gestellt werden:

  1. (Optional) Löschen Sie die Logeinträge, die Sie erstellt haben. Wenn Sie Ihre Logeinträge nicht löschen, verfallen sie und werden entfernt. Weitere Informationen erhalten Sie im Abschnitt zur Kontingentrichtlinie. Führen Sie den folgenden Befehl aus, um alle Logeinträge im Log my-log zu löschen:

     python snippets.py my-log delete
    
  2. Löschen Sie Ihr Projekt oder löschen Sie Ihre Kurzanleitungsressourcen.

    • Zum Löschen Ihres Projekts klicken Sie im Bereich Projektinformationen der Cloud Console auf Zu den Projekteinstellungen und dann auf Herunterfahren.

    • So löschen Sie Ihre Kurzanleitungsressourcen:

      1. Löschen Sie Ihre Senke mit dem folgenden Befehl:

        python export.py delete mysink
        
      2. Löschen Sie den Cloud Storage-Bucket. Wechseln Sie zur Cloud Console und klicken Sie auf Storage > Browser. Klicken Sie das Kästchen neben Ihrem Bucket-Namen an und klicken Sie auf Löschen.

Weitere Informationen

  • Unter Dienstkonten erfahren Sie mehr über Dienstkonten, Zugriffsbereiche und Rollen für die Identitäts- und Zugriffsverwaltung.
  • Im Abschnitt "Loganzeige" erfahren Sie mehr zur Loganzeige.
  • Unter Logs exportieren erfahren Sie, wie Sie Ihre Logeinträge nach Cloud Storage, BigQuery und Pub/Sub exportieren.
  • Unter "Logging-Agent" erfahren Sie mehr über das Erfassen von Logeinträgen aus den VM-Instanzen in Logging.
  • Unter "Audit-Logs" erfahren Sie mehr zu Audit- und Compliance-Anforderungen.
  • Unter Cloud Logging API erfahren Sie mehr über das Lesen, Schreiben und Konfigurieren der Logs von Anwendungen.