Logeinträge mit einem Python-Script schreiben und abfragen
Diese Kurzanleitung stellt Ihnen einige der Funktionen von Cloud Logging vor und zeigt Ihnen, wie Sie Folgendes tun können:
- Logeinträge mit einem Python-Script schreiben.
- Logeinträge mit einem Python-Skript aufrufen.
- Logeinträge mit einem Python-Script löschen.
- Logs an einen Cloud Storage-Bucket weiterleiten.
Logging kann Logeinträge an folgende Ziele weiterleiten:
- Cloud Storage-Buckets
- BigQuery-Datasets
- Pub/Sub
- Logging-Buckets
- Google Cloud-Projekte
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 Google Cloud-Projekt nicht aktiviert ist, gehen Sie so vor:- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
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 auf dieser Seite unter Bereinigen.
Erste Schritte
Sie können die Cloud Shell-Umgebung oder eine generische Linux-Umgebung für diese Kurzanleitung verwenden. Python ist in Cloud Shell vorinstalliert.
Cloud Shell
Öffnen Sie Cloud Shell und überprüfen Sie die Google Cloud-Projektkonfiguration:
Klicken Sie in der Google Cloud Console auf terminal Cloud Shell aktivieren.
Cloud Shell wird in einem Fenster geöffnet und eine Begrüßungsnachricht wird angezeigt.
Die Willkommensnachricht gibt die konfigurierte Google Cloud-Projekt-ID wieder. Wenn dies nicht das gewünschte Google Cloud-Projekt ist, führen Sie den folgenden Befehl aus und ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts:
gcloud config set project PROJECT_ID
Linux
Prüfen Sie, ob Python installiert und konfiguriert ist. Informationen zur Vorbereitung Ihres Rechners für die Python-Entwicklung finden Sie unter Python-Entwicklungsumgebung einrichten.
Installieren Sie die Cloud Logging-Clientbibliothek:
pip install --upgrade google-cloud-logging
Richten Sie die Berechtigungen für Identity and Access Management für Ihr Google Cloud-Projekt ein. Mit den folgenden Schritten erstellen Sie ein Dienstkonto für Ihr Google Cloud-Projekt und generieren bzw. laden eine Datei auf Ihre Linux-Workstation.
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM & Admin ist.
Wählen Sie Ihr Google Cloud-Schnellstartprojekt aus und klicken Sie dann auf Dienstkonto erstellen:
- Geben Sie einen Kontonamen ein.
- Geben Sie eine Kontobeschreibung ein.
- Klicken Sie auf Erstellen und fortfahren.
Klicken Sie auf das Feld Rolle auswählen und wählen Sie Logging Admin aus.
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
Erstellen Sie eine Schlüsseldatei und laden Sie sie auf Ihre Workstation herunter:
- Klicken Sie für Ihr Dienstkonto auf more_vert Weitere Optionen und wählen Sie Schlüssel verwalten aus.
- Klicken Sie im Bereich Schlüssel auf Schlüssel hinzufügen.
- Klicken Sie auf Neuen Schlüssel erstellen.
Wählen Sie als Schlüsseltyp JSON aus und klicken Sie dann auf Erstellen. Nach kurzer Zeit wird in einem Fenster eine Nachricht wie die folgende angezeigt:
-
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
So konfigurieren Sie Cloud Shell für diese Kurzanleitung:
Klonen Sie das GitHub-Projekt
python-logging
:git clone https://github.com/googleapis/python-logging
Das Verzeichnis
samples/snippets
enthält die beiden in dieser Kurzanleitung verwendeten Skripts:- Mit
snippets.py
können Sie Einträge in einem Log verwalten. - Mit
export.py
können Sie Logexporte verwalten.
- Mit
Wechseln Sie in das Verzeichnis
snippets
:cd python-logging/samples/snippets
Logeinträge schreiben
Das snippets.py
-Skript verwendet die Python-Clientbibliotheken, um Logeinträge in das Logging zu schreiben. Wenn die Option write
in der Befehlszeile angegeben ist, schreibt das Skript 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
-Skript mit der Option write
aus:
python snippets.py my-log write
Logeinträge aufrufen
Führen Sie das snippets.py
-Skript mit der Option list
aus, um die Logeinträge in der Cloud Shell zu sehen:
python snippets.py my-log list
Der Befehl wird mit folgendem Ergebnis abgeschlossen:
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 dem Log-Explorer aufrufen. Weitere Informationen finden Sie unter Logs mit dem Log-Explorer aufrufen.
Logeinträge löschen
Wenn Sie alle Logeinträge im Log my-log
löschen möchten, führen Sie das snippets.py
-Skript mit der Option delete
aus:
python snippets.py my-log delete
Der Befehl wird mit folgendem Ergebnis abgeschlossen:
Deleted all logging entries for my-log
.
Logs weiterleiten
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 überprüfen
Zielort erstellen
Das Exportziel für diese Kurzanleitung ist ein Cloud Storage-Bucket. So erstellen Sie einen Cloud Storage-Bucket:
-
Rufen Sie in der Google Cloud Console die Seite Buckets auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Cloud Storage lautet.
- Klicken Sie auf Bucket erstellen.
- Geben Sie einen Namen für den Bucket ein.
- Wählen Sie als Standorttyp die Option Region aus, um einen Bucket-Standort mit der geringsten Latenz auszuwählen.
- Wählen Sie für Standard-Speicherklasse die Option Standard aus.
- Wählen Sie für Zugriffssteuerung die Option Detailliert aus.
- Wählen Sie unter Schutztools die Option Keine aus und 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 weiterleitet. Eine Senke hat drei Attribute:
- Name
- Ziel
- Filter
Weitere Informationen zu Senken finden Sie unter Senken.
Wenn ein neu eingetroffener Logeintrag die Abfragebedingungen erfüllt, wird dieser Logeintrag an den Zielort weitergeleitet.
Das Skript 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 Skript export.py
mit der Option list
aus, um sich die Senken anzeigen zu lassen:
python export.py list
Das Script gibt Folgendes zurück:
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 Script export.py
nicht.
Sie müssen die Berechtigungseinstellungen Ihres Cloud Storage-Buckets ändern, um der Senke Schreibberechtigung zu erteilen. Informationen zu Dienstkonten, Zugriffsbereichen und Rollen für die Identitäts- und Zugriffsverwaltung finden Sie unter Dienstkonten.
So aktualisieren Sie die Berechtigungen für Ihren Cloud Storage-Bucket:
Ermitteln Sie die Identität des Autors für die Senke:
-
Rufen Sie in der Google Cloud Console die Seite Log Router auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
Eine Zusammenfassungstabelle Ihrer Senken wird angezeigt.
Suchen Sie die Senke in der Tabelle, wählen Sie more_vert Menü und dann Senkendetails ansehen aus.
Kopieren Sie die Identität des Autors in die Zwischenablage.
-
-
Rufen Sie in der Google Cloud Console die Seite Buckets auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Cloud Storage lautet.
Klicken Sie zum Öffnen der Detailansicht auf den Namen Ihres Buckets.
Wählen Sie Berechtigungen aus und klicken Sie auf Zugriff gewähren.
Fügen Sie die Identität des Autors in das Feld Neue Hauptkonten ein. Entfernen Sie das Präfix
serviceAccount:
aus der Adresse der Identität des Autors.Legen Sie als Rolle
Storage Object Creator
fest und klicken Sie dann auf Speichern.
Weitere Informationen finden Sie unter Zielberechtigungen festlegen.
Senke validieren
So prüfen Sie, ob Ihre Senke und Ihr Ziel ordnungsgemäß konfiguriert sind:
Schreiben Sie neue Logeinträge in das Log
my-log
:python snippets.py my-log write
Sehen Sie sich den Inhalt Ihres Cloud Storage-Buckets an:
-
Rufen Sie in der Google Cloud Console die Seite Buckets auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Cloud Storage lautet.
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 Zu spät eintreffende Protokolleinträge 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.
Nachdem Ihr Bucket Daten erhalten hat, zeigt die Detailansicht ein Ergebnis wie das folgende an:
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-log
und dann durch die Unterordner für Jahr, Monat und Tag, bis Sie eine Datei mit der Endungjson
finden: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 WichtigkeitsstufeINFO
ü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 alsINFO
ist.
-
Fehlerbehebung
Es gibt mehrere Gründe, warum ein Cloud Storage-Bucket möglicherweise leer ist:
Der Bucket hat keine Daten empfangen. 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 Zu spät eingehende Logeinträge.
Ein Konfigurationsfehler ist aufgetreten. In diesem Fall erhalten Sie eine E-Mail-Nachricht mit einer Betreffzeile ähnlich der folgenden:
[ACTION REQUIRED] Logging export config error in myloggingproject.
Der Inhalt des E-Mail-Texts beschreibt das Konfigurationsproblem. Wenn Sie beispielsweise Ihre Zielberechtigungen nicht aktualisieren, wird in der E-Mail der folgende Fehlercode aufgeführt:
bucket_permission_denied
Informationen zum Korrigieren dieses Fehlers finden Sie auf dieser Seite unter Zielberechtigungen aktualisieren.
Nach dem Erstellen der Senke wurden keine Logeinträge geschrieben. 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 Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
(Optional) Löschen Sie die Logeinträge, die Sie erstellt haben. Wenn Sie Ihre Logeinträge nicht löschen, verfallen sie und werden entfernt. Siehe Kontingente und Limits.
Führen Sie den folgenden Befehl aus, um alle Logeinträge im Log
my-log
zu löschen:python snippets.py my-log delete
Löschen Sie Ihr Google Cloud-Projekt oder löschen Sie Ihre Schnellstartressourcen.
Wenn Sie Ihr Google Cloud-Projekt löschen möchten, klicken Sie im Bereich Projektinformationen der Google Cloud Console auf Zu den Projekteinstellungen und dann auf Herunterfahren.
So löschen Sie Ihre Schnellstartressourcen:
Löschen Sie Ihre Senke mit dem folgenden Befehl:
python export.py delete mysink
Löschen Sie den Cloud Storage-Bucket. Wechseln Sie zur Google Cloud Console und klicken Sie auf Storage > Buckets. Klicken Sie das Kästchen neben Ihrem Bucket-Namen an und klicken Sie auf Löschen.
Nächste Schritte
- Informationen zum Lesen, Schreiben und Konfigurieren der Logs von Anwendungen finden Sie unter Cloud Logging API.
- Informationen zum Log-Explorer finden Sie unter Logs mit dem Log-Explorer ansehen.
- Informationen zum Weiterleiten Ihrer Logdaten an unterstützte Ziele finden Sie unter Routing und Speicherübersicht.
- Informationen zum Erfassen von Logeinträgen aus VM-Instanzen finden Sie unter Ops-Agent – Übersicht.
- Informationen zu Auditing und Compliance finden Sie unter Cloud-Audit-Logs – Übersicht.