Sie können eine Benachrichtigungsrichtlinie konfigurieren, damit Sie informiert werden, wenn eine bestimmte Nachricht wird in den enthaltenen Protokollen angezeigt. Wenn Sie beispielsweise wissen möchten, wann in einem Prüfprotokoll eine bestimmte Nachricht zum Datenzugriff aufgezeichnet wird, können Sie sich benachrichtigen lassen, wenn die Nachricht angezeigt wird. Diese Arten von Benachrichtigungsrichtlinien werden als logbasierte Benachrichtigungsrichtlinien In diesem Dokument wird beschrieben, wie Sie mit der Google Cloud Console und der Cloud Monitoring API Folgendes tun:
- Logbasierte Benachrichtigungsrichtlinie erstellen und testen
- Logbasierte Benachrichtigungsrichtlinie bearbeiten
- Logbasierte Benachrichtigungsrichtlinie löschen
Hinweise
Prüfen Sie den Benachrichtigungsvergleich, um zu ermitteln, ob logbasierte Benachrichtigungsrichtlinien für die Daten in Ihren Logs geeignet sind. Beispiel:
Logbasierte Benachrichtigungsrichtlinien funktionieren nicht bei ausgeschlossenen Logs.
Sie können keine logbasierten Benachrichtigungsrichtlinien verwenden, um Anzahlen aus Ihren Logs abzuleiten. Sie müssen stattdessen logbasierte Messwerte verwenden, um Anzahlen abzuleiten.
Damit Sie logbasierte Benachrichtigungsrichtlinien erstellen und verwalten können, muss Ihre Identity and Access Management-Rolle die unter Berechtigungen für logbasierte Benachrichtigungsrichtlinien beschriebenen Berechtigungen enthalten.
Logbasierte Benachrichtigungsrichtlinie mit dem Log-Explorer erstellen
Sie können logbasierte Benachrichtigungsrichtlinien auf der Seite Log-Explorer in der Google Cloud Console oder mithilfe der Monitoring API erstellen. In diesem Abschnitt wird beschrieben, wie Sie logbasierte Benachrichtigungsrichtlinien mit dem Log-Explorer erstellen. Informationen zur Monitoring API finden Sie unter Erstellen Sie mithilfe der Monitoring API eine logbasierte Benachrichtigungsrichtlinie.
Die Benutzeroberfläche des Log-Explorers führt Sie durch die folgenden Schritte:
- Geben Sie einen Namen und eine Beschreibung für die Benachrichtigungsrichtlinie ein.
- Wählen Sie die Logs aus, für die Sie eine Benachrichtigung erhalten möchten.
- Legen Sie die Zeit zwischen Benachrichtigungen fest.
- Legen Sie die Zeit für das automatische Schließen von Vorfällen fest.
- Geben Sie an, wer benachrichtigt werden soll.
Angenommen, Sie haben eine Anwendung, die einen syslog
-Logeintrag mit dem Schweregrad NOTICE
schreibt, wenn die Anwendung eine Netzwerkadresse ändert.
Die Logeinträge für Änderungen der Netzwerkadresse enthalten eine JSON-Nutzlast, die in etwa so aussieht:
"jsonPayload": { "type": "Configuration change", "action": "Set network address", "result": "IP_ADDRESS", }
Sie möchten eine logbasierte Benachrichtigungsrichtlinie erstellen, die Sie benachrichtigt, wenn eine ungültige IPv4-Adresse im Feld jsonPayload.result
von Logeinträgen in syslog
mit dem Schweregrad NOTICE
angezeigt wird.
So erstellen Sie diese Benachrichtigungsrichtlinie:
-
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Verwenden Sie den Bereich Query (Abfrage), um eine Abfrage zu erstellen, die der gewünschten Nachricht entspricht. die in Ihrer logbasierten Benachrichtigungsrichtlinie verwendet werden sollen.
Für die Suche nach Logeinträgen mit dem Schweregrad
NOTICE
im Logsyslog
mit ungültigen IP-Adressen in der JSON-Nutzlast können Sie beispielsweise die folgende Abfrage verwenden:log_id("syslog") severity = "NOTICE" jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
Klicken Sie auf Abfrage ausführen, um die Abfrage zu validieren.
Maximieren Sie in der Symbolleiste Abfrageergebnisse das Menü Aktionen und wählen Sie add_alert Logbenachrichtigung erstellen:
Geben Sie im Bereich Benachrichtigungsdetails einen Namen und eine Beschreibung für die Benachrichtigungsrichtlinie ein:
Geben Sie im Feld Name der Benachrichtigungsrichtlinie einen Namen für die Benachrichtigungsrichtlinie ein. Beispiel: „Netzwerkadresse: ungültiger IPv4-Wert“.
Wählen Sie im Menü Schweregrad der Richtlinie eine Option aus. Bei Vorfällen und Benachrichtigungen wird der Schweregrad angezeigt.
Geben Sie eine Beschreibung für Ihre Benachrichtigungsrichtlinie ein. Sie können auch informationen die dem Empfänger einer Benachrichtigung bei der Diagnose des Problems helfen. Der folgende String fasst den Grund für die Benachrichtigung zusammen:
Log-based alerting policy in project ${project} detected an invalid IPv4 value.
Informationen zum Formatieren und Anpassen des Inhalts dieses Felds finden Sie unter Markdown und Variablen in Dokumentationsvorlagen verwenden.
Um mit dem nächsten Schritt fortzufahren, klicken Sie auf Weiter.
Prüfen Sie im Bereich Logs auswählen, die in die Benachrichtigung aufgenommen werden sollen die Abfrage und die Ergebnisse. Klicken Sie dazu auf Logvorschau ansehen.
Wir empfehlen, die Abfrage im Bereich Abfrage des Log-Explorers zu erstellen. Die Abfrage, die Sie im Bereich Abfrage erstellt haben, wird in diesem Bereich ebenfalls angezeigt. Beispiel:
log_id("syslog") severity = "NOTICE" jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
Bei Bedarf können Sie die Abfrage in diesem Bereich bearbeiten. Wenn Sie das Feld Abfrage und prüfen Sie dann die Ergebnisse, indem Sie auf Logsvorschau klicken.
Klicken Sie auf Weiter.
Wählen Sie die Mindestdauer zwischen Benachrichtigungen aus. Dieser Wert können Sie festlegen, wie viele Benachrichtigungen Sie von Wird überwacht, ob diese Bedingung erfüllt ist und zwar mehrmals. Wählen Sie für dieses Beispiel 5 Min. aus den Optionen aus.
Optional: Wählen Sie die Dauer für das automatische Schließen des Vorfalls aus. Standardmäßig ist die Dauer für die automatische Schließung von Vorfällen auf 7 Tage festgelegt.
Klicken Sie auf Weiter.
Wählen Sie einen oder mehrere Benachrichtigungskanäle für die Benachrichtigungsrichtlinie aus. Wählen Sie für dieses Beispiel einen E-Mail-Benachrichtigungskanal aus.
Wenn Sie bereits einen E-Mail-Benachrichtigungskanal konfiguriert haben, können Sie ihn aus der Liste auswählen. Wenn nicht, klicken Sie auf Benachrichtigungskanäle verwalten und fügen Sie einen E-Mail-Kanal hinzu. Informationen zum Erstellen von Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.
Klicken Sie auf Speichern.
Ihre logbasierte Benachrichtigungsrichtlinie kann jetzt getestet werden.
Beispiel für eine logbasierte Benachrichtigungsrichtlinie testen
Zum Testen der von Ihnen erstellten Benachrichtigungsrichtlinie können Sie manuell einen Logeintrag schreiben, der mit der Abfrage übereinstimmt. So schreiben Sie den Logeintrag:
Konfigurieren Sie den folgenden Logeintrag, indem Sie die Variable
PROJECT_ID
ändern in Ihre Projekt-ID ein:{ "entries": [ { "logName": "projects/PROJECT_ID/logs/syslog", "jsonPayload": { "type": "Configuration change", "action": "Set network address", "result": "999.027.405.1", }, "severity": "NOTICE", "resource": { "type": "generic_task", "labels" : { "project_id": "PROJECT_ID", "location": "us-east1", "namespace": "fake-task-2", "job": "write-log-entry", "task_id": "11", }, }, }, ], }
Rufen Sie die Referenzseite
logEntries.write
auf oder klicken Sie auf die folgende Schaltfläche:Kopieren Sie den zuvor konfigurierten Logeintrag.
Führen Sie im Bereich API testen folgende Schritte aus:
Ersetzen Sie den Inhalt des Felds Anfragetext. in APIs Explorer mit dem Logeintrag, den Sie im vorherigen Schritt kopiert haben.
Klicken Sie auf Ausführen. Folgen Sie dem Authentifizierungsablauf, wenn Sie dazu aufgefordert werden.
Wenn der Aufruf
logEntries.write
erfolgreich ist, erhalten Sie einen HTTP200
-Antwortcode und einen leeren Antworttext:{}
. Weitere Informationen zum APIs Explorer finden Sie in der Monitoring-Dokumentation unter APIs Explorer verwenden. Der APIs Explorer funktioniert genauso wie die Logging API.
Der Logeintrag entspricht dem für die Benachrichtigungsrichtlinie angegebenen Filter auf folgende Arten:
- Der
logName
-Wert gibt dassyslog
-Log in Ihrem Google Cloud-Projekt an. - Der
severity
-Wert für diesen Logeintrag istNOTICE
. - Der
jsonPayload.result
-Wert ist keine gültige IPv4-Adresse.
Nach dem Schreiben des Logeintrags tritt die folgende Sequenz auf:
- Der neue Logeintrag wird im Log-Explorer angezeigt. Der Logeintrag erfüllt die Bedingung der Benachrichtigungsrichtlinie.
- Ein Vorfall wird in Cloud Monitoring geöffnet.
Sie erhalten dann eine Benachrichtigung für den Vorfall. Wenn Sie eine E-Mail-Adresse konfiguriert haben angezeigt wird, sieht die Benachrichtigung so aus: folgenden Screenshot:
Sie können in der E-Mail auf Vorfall ansehen klicken, um den Vorfall in Cloud Monitoring aufzurufen. Weitere Informationen zu Vorfällen finden Sie unter Vorfälle für logbasierte Benachrichtigungsrichtlinien verwalten.
Andere Szenarien: Benachrichtigungen zu Audit-Logs
Das Beispiel im Abschnitt Das Erstellen einer logbasierten Benachrichtigungsrichtlinie artificial; erstellen Sie normalerweise keine Benachrichtigungsrichtlinie und Logeinträge schreiben, die die Bedingung der Benachrichtigungsrichtlinie erfüllen Logeinträge werden normalerweise von Anwendungen oder anderen Diensten geschrieben. Die Quelle der Logeinträge ist nicht wichtig; Bei logbasierten Benachrichtigungsrichtlinien ist die Abfrage wichtig, mit denen Sie die Logeinträge auswählen.
In den folgenden Abschnitten werden realistische Szenarien für Richtlinien für logbasierte Benachrichtigungen beschrieben, die auf dem Inhalt von Audit-Logs basieren. Jedes Szenario veranschaulicht, Erstellen Sie eine Abfrage, mit der die entsprechenden Audit-Logeinträge ausgewählt werden. Ansonsten ist das Verfahren zum Erstellen logbasierter Benachrichtigungsrichtlinien dasselbe wie unter Logbasierte Benachrichtigung erstellen beschrieben.
Benachrichtigungsrichtlinien, die den menschlichen Zugriff auf Secrets überwachen
Angenommen, Ihr Projekt speichert Secrets in Secret Manager und einige dieser Secrets sind nur für die Verwendung durch Dienstkonten vorgesehen. Außer in ungewöhnlichen Umständen dass menschliche Benutzer nie auf diese Geheimnisse zugreifen.
Wenn Sie Audit-Logging für Secret Manager, dann jeweils Bei erfolgreichen Versuchen, auf ein Secret zuzugreifen, wird ein Audit-Logeintrag erstellt. Jeder Eintrag enthält den Namen des Secrets und die Identität des Aufrufers.
Sie können eine logbasierte Benachrichtigungsrichtlinie erstellen, die Sie benachrichtigt, wenn ein menschlicher Nutzer auf ein Secret zugreift.
Das folgende Beispiel zeigt einen Auszug aus einem Audit-Logeintrag, der von Secret Manager geschrieben wurde. Der Auszug zeigt die Felder, die zum Erstellen der Abfrage für eine logbasierte Benachrichtigung nützlich sind:
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "serviceName": "secretmanager.googleapis.com", "methodName": "google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion", "authenticationInfo": { "principalEmail": "my-svc-account@PROJECT_ID.iam.gserviceaccount.com", "serviceAccountDelegationInfo": [], "principalSubject": "serviceAccount:my-svc-account@PROJECT_ID.iam.gserviceaccount.com" }, ... }, ... }
Die folgenden protoPayload
-Unterfelder sind von besonderem Interesse:
@type
: Gibt an, dass dieser Logeintrag ein Audit-Logeintrag ist.serviceName
: Zeichnet den Dienst auf, der den Audit-Logeintrag geschrieben hat. Verwenden Sie dieses Feld, um Einträge zu identifizieren, die von Secret Manager geschrieben wurden.methodName
: Gibt die Methode an, für die dieser Audit-Logeintrag geschrieben wurde. Mit diesem Feld können Sie die Aktion identifizieren, die zur Erstellung dieses Eintrags geführt hat. In diesem Beispiel ist es die MethodeAccessSecretVersion
.authenticationInfo.principalEmail
: Zeichnet das Konto auf, das die Methode im FeldmethodName
aufgerufen hat. Der erwartete Wert für dieses Feld ist ein Dienstkonto, das mitgserviceaccount.com
endet.
Suchen Sie nach Audit-Logeinträgen, die von Secret Manager geschrieben wurden, um Logeinträge für den Secret-Zugriff durch einen menschlichen Nutzer zu finden. Sie möchten die Logeinträge finden, in denen die Methode AccessSecretVersion
von einem Hauptkonto aufgerufen wurde, das nicht mit gserviceaccount.com
endet.
Die folgende Abfrage isoliert diese Logeinträge:
protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.serviceName = "secretmanager.googleapis.com" protoPayload.methodName =~ "AccessSecretVersion$" protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"
Verwenden Sie Folgendes, um eine logbasierte Benachrichtigungsrichtlinie für den menschlichen Zugriff auf Secrets zu erstellen: im Bereich Logs für die Benachrichtigung auswählen auswählen.
Benachrichtigungsrichtlinien zur Überwachung von Entschlüsselungsereignissen
Die Analyse im vorherigen Beispiel kann an andere Dienste angepasst werden. Beispiel: Wenn Sie den Cloud Key Management Service zum Verschlüsseln und Entschlüsseln verwenden, sensible Daten enthält, können Sie Audit-Logs verwenden, Cloud KMS, um zu erkennen, ein Nutzer einen Wert entschlüsselt.
Suchen Sie nach Audit-Logeinträgen von Cloud KMS, um Logeinträge für Entschlüsselungen zu finden, die von Nutzern durchgeführt wurden. Sie müssen die Logeinträge finden, in denen die Methode Decrypt
von einem Hauptkonto aufgerufen wurde, das nicht mit gserviceaccount.com
endet. Dies gibt ein Dienstkonto an.
Die folgende Abfrage isoliert diese Logeinträge:
protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.serviceName = "cloudkms.googleapis.com" protoPayload.methodName = "Decrypt" protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"
Verwenden Sie diese Abfrage im Bereich Logs auswählen, die in die Benachrichtigung aufgenommen werden sollen, um eine logbasierte Benachrichtigungsrichtlinie für die Entschlüsselung durch einen menschlichen Nutzer zu erstellen.
Logbasierte Benachrichtigungsrichtlinien in Monitoring verwalten
Sie können logbasierte Benachrichtigungsrichtlinien mit der Google Cloud Console für die Überwachung oder mit der Monitoring API aufrufen, bearbeiten und löschen. In diesem Dokument wird beschrieben, wie Sie Benachrichtigungsrichtlinien mit der Google Cloud Console verwalten. Informationen zur Verwendung der Monitoring API zum Verwalten von Benachrichtigungsrichtlinien finden Sie unter Benachrichtigungsrichtlinien über API verwalten.
Führen Sie einen der folgenden Schritte aus, um eine Liste aller Benachrichtigungsrichtlinien in Ihrem Google Cloud-Projekt aufzurufen:
So navigieren Sie über Logging:
-
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Maximieren Sie in der Symbolleiste Abfrageergebnisse das Menü Aktionen und wählen Sie edit Logbenachrichtigungen verwalten aus.
-
So navigieren Sie über Monitoring:
-
Rufen Sie in der Google Cloud Console die Seite notifications Benachrichtigungen auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Um alle Richtlinien zu sehen und Filter zu aktivieren, gehen Sie im Bereich Richtlinien so vor: Klicken Sie auf Alle Richtlinien ansehen.
-
Mit beiden Aktionen gelangen Sie zur Seite Monitoring-Richtlinien, auf der alle Benachrichtigungsrichtlinien Ihres Google Cloud-Projekts aufgeführt sind.
Fügen Sie Filter hinzu, um die aufgeführten Benachrichtigungsrichtlinien einzuschränken.
Jeder Filter besteht aus einem Namen und einem Wert. Beispiel:
können Sie festlegen, dass der Wert
einem Richtliniennamen genau entspricht,
oder eine teilweise Übereinstimmung. Bei Übereinstimmungen wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Wenn Sie mehrere Filter angeben, werden sie implizit durch den logischen Wert AND
verbunden, sofern Sie nicht den Filter OR
einfügen.
Im folgenden Screenshot sind die Benachrichtigungsrichtlinien aufgeführt, die aktiviert sind und
die nach dem 1. Januar 2021 erstellt wurden:
Auf der Seite Richtlinien können Sie eine Benachrichtigungsrichtlinie bearbeiten, löschen, kopieren, aktivieren oder deaktivieren:
Klicken Sie zum Bearbeiten oder Kopieren einer Richtlinie auf more_vert Mehr Optionen und wählen Sie eine Option aus. Beim Bearbeiten und Kopieren einer Richtlinie gehen Sie ähnlich wie unter Logbasierte Benachrichtigungsrichtlinie erstellen beschrieben vor. Sie können die Werte in den Feldern ändern und in einigen Fällen löschen. Wenn Sie fertig sind, klicken Sie auf Save (Speichern).
Sie können eine logbasierte Benachrichtigungsrichtlinie auch bearbeiten, indem Sie auf ihren Namen klicken in der Liste der Richtlinien.
Klicken Sie zum Löschen einer Richtlinie auf Mehr Optionen more_vert und wählen Sie Löschen aus. Wählen Sie im Bestätigungsdialogfeld noch einmal Löschen aus.
Klicken Sie zum Aktivieren oder Deaktivieren der Benachrichtigungsrichtlinie auf die Ein/Aus-Schaltfläche unter der Überschrift Aktiviert.
Logbasierte Benachrichtigungsrichtlinie mit der Monitoring API erstellen
Sie können logbasierte Benachrichtigungsrichtlinien mit der Monitoring API erstellen. Sie stellen der Monitoring API dieselben Informationen zur Verfügung wie wenn Sie den Log-Explorer in der Google Cloud Console verwenden:
- Ein Name und eine Beschreibung für die Benachrichtigungsrichtlinie.
- Die Logs, für die Sie eine Benachrichtigung erhalten möchten
- Die Zeit zwischen den Benachrichtigungen
- Die Zeit für das automatische Schließen von Vorfällen.
- Wer benachrichtigt werden soll
Zum Erstellen von Benachrichtigungsrichtlinien mithilfe der Monitoring API erstellen Sie ein AlertPolicy
-Objekt und senden es an die Methode alertPolicies.create
.
Bevor Sie die Monitoring API verwenden können, müssen Sie die API aktivieren und die Berechtigung zu ihrer Verwendung haben. Weitere Informationen erhalten Sie in dieser Dokumentation:
Struktur von Benachrichtigungsrichtlinien
Die Monitoring API stellt eine Benachrichtigungsrichtlinie mithilfe der Methode
AlertPolicy
-Struktur.
Die AlertPolicy
-Struktur hat mehrere eingebettete Strukturen, darunter eine
Beschreibung der Bedingung der Benachrichtigungsrichtlinie. Logbasierte Benachrichtigungsrichtlinien unterscheiden sich in folgenden Punkten von messwertbasierten Benachrichtigungsrichtlinien:
- Die Bedingung wird von Ihnen mithilfe des
LogMatch
-Bedingungstyps beschrieben. Messwertbasierte Benachrichtigungsrichtlinien verwenden unterschiedliche Bedingungstypen. - Eine logbasierte Benachrichtigungsrichtlinie kann nur eine Bedingung haben.
- Sie geben die Zeit zwischen Benachrichtigungen und der automatischen Schließung des Vorfalls an.
indem Sie eine
AlertStrategy
-Struktur einfügen. Messwertbasierte Benachrichtigungsrichtlinien enthalten keine Zeit zwischen Benachrichtigungen.
In diesem Abschnitt wird beschrieben, wie Sie eine logbasierte Benachrichtigungsrichtlinie erstellen. Diese Richtlinien unterscheiden sich von messwertbasierten Benachrichtigungsrichtlinien beim Typ der verwendeten Bedingung. Bei logbasierten Benachrichtigungsrichtlinien ist der Bedingungstyp LogMatch
. Wenn Sie die Monitoring API zum Verwalten von Benachrichtigungsrichtlinien verwenden, gibt es keine Unterschiede beim Auflisten, Bearbeiten oder Löschen von messwertbasierten und logbasierten Richtlinien.
Unter Benachrichtigungsrichtlinien über API verwalten wird beschrieben, wie Sie Benachrichtigungsrichtlinien mithilfe der Monitoring API erstellen, auflisten, bearbeiten und löschen.
Benachrichtigungsregeln
Wenn Sie eine logbasierte Benachrichtigungsrichtlinie erstellen, wird im Logging-System ein internes Objekt namens Benachrichtigungsregel erstellt. Protokollieren
verwendet die Benachrichtigungsregel zum Abgleich des eingehenden Protokolls
in den Filter Ihrer Benachrichtigungsrichtlinie ein, um eine Benachrichtigung
Ein Eintrag entspricht den Filterkriterien. Sie interagieren nicht direkt mit der Benachrichtigungsregel. Um eine logbasierte Benachrichtigungsrichtlinie zu erstellen,
benötigen Sie die Berechtigung logging.notificationRules.create
.
Benachrichtigungsrichtlinie entwerfen
Im Abschnitt Logbasierte Benachrichtigungsrichtlinie mit dem Log-Explorer erstellen wird eine Möglichkeit zum Erstellen einer logbasierten Benachrichtigungsrichtlinie beschrieben.
In diesem Abschnitt wird beschrieben, wie Sie eine logbasierte Benachrichtigungsrichtlinie erstellen, die Sie benachrichtigt, wenn ein syslog
-Logeintrag den Schweregrad NOTICE
und eine ungültige IPv4-Adresse im Feld jsonPayload.result
hat.
So erstellen Sie dieselbe logbasierte Benachrichtigungsrichtlinie mithilfe der Methode
Monitoring API können Sie
Erstellen Sie ein AlertPolicy
-Objekt, das wie die folgende JSON-Struktur aussieht:
{ "displayName": "Network address: invalid IPv4 value (API)", "documentation": { "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.", "mimeType": "text/markdown" }, "conditions": [ { "displayName": "Log match condition: invalid IP addr (API)", "conditionMatchedLog": { "filter": "log_id(\"syslog\") severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"", }, } ], "combiner": "OR", "alertStrategy": { "notificationRateLimit": { "period": "300s" }, "autoClose": "604800s", }, "notificationChannels": [ "projects/PROJECT_ID/notificationChannels/CHANNEL_ID" ] }
Dieser JSON-Code gibt dieselben Informationen an, die Sie beim Erstellen einer logbasierten Benachrichtigungsrichtlinie mit dem Log-Explorer angeben. In den folgenden Abschnitten wird der Inhalt dieser AlertPolicy
-Struktur den Schritten zugeordnet, die Sie ausführen, wenn Sie mit dem Log-Explorer eine logbasierte Benachrichtigung erstellen. Der Wert des Felds conditionMatchedLog
ist eine LogMatch
-Struktur.
Namen und Beschreibung angeben
Eine Benachrichtigungsrichtlinie hat einen Anzeigenamen und eine zugehörige Dokumentation, die mit Benachrichtigungen bereitgestellt wird, um Empfängern zu helfen. Im Log-Explorer werden diese Felder als Benachrichtigungsname und Benachrichtigungsbeschreibung bezeichnet. Sie stellen diese Werte in einer AlertPolicy
-Struktur so dar:
{ "displayName": "Network address: invalid IPv4 value (API)", "documentation": { "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.", "mimeType": "text/markdown" }, ... }
In diesem Beispiel enthält der Wert für displayName
„(API)“, damit Sie beim Aufrufen der Liste der Richtlinien in der Google Cloud Console zwischen den beiden Beispielrichtlinien unterscheiden können. Auf der Monitoring-Seite Richtlinien werden Richtlinien nach angezeigtem Namen aufgelistet und es wird angegeben, ob die Richtlinie auf Messwerten oder Logs basiert. Weitere Informationen
Siehe
Logbasierte Benachrichtigungsrichtlinien in Monitoring verwalten
Das Feld documentation
enthält im Unterfeld content
die Beschreibung, die Sie bei der Verwendung von Log-Explorer angeben können. Das zweite untergeordnete Feld,
mimeType
ist erforderlich, wenn Sie einen Wert für das Feld documentation
angeben.
Der einzige gültige Wert ist "text/markdown"
.
Logs auswählen, für die Sie eine Benachrichtigung erhalten möchten
Eine logbasierte Benachrichtigungsrichtlinie hat eine einzelne Bedingung. Im Log-Explorer geben Sie die Bedingung an, wenn Sie eine Abfrage im Feld Logeinträge für gewünschte Benachrichtigungen definieren angeben. Sie stellen diese Werte in einer AlertPolicy
-Struktur so dar:
{ ... "conditions": [ { "displayName": "Log match condition: invalid IP addr (API)", "conditionMatchedLog": { "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"", }, } ], "combiner": "OR", ... }
Im Feld conditions
wird eine Liste von Condition
-Strukturen verwendet, wobei eine logbasierte Benachrichtigungsrichtlinie nur eine Bedingung enthalten darf. Jedes Condition
hat einen Anzeigenamen und eine Beschreibung:
die Bedingung.
Der Wert des Felds
displayName
ist eine kurze Beschreibung der Bedingung. Wenn Sie mit dem Log-Explorer logbasierte Benachrichtigungsrichtlinien erstellen, Anzeigename immer „Bedingung für Logübereinstimmung“ ist. Wenn Sie die Monitoring API verwenden, können Sie einen genaueren Anzeigenamen angeben. Ein Wert ist erforderlich.Der Wert des Feldes
conditionMatchedLog
ist einLogMatch
-Struktur und der Wert derfilter
ist die Abfrage, die Sie im Log-Explorer angeben. Da diese Abfrage als Wert eines JSON-Felds bereitgestellt wird, wird die gesamte Abfrage in Anführungszeichen gesetzt. Alle Anführungszeichen in der Abfrage selbst müssen mit einem umgekehrten Schrägstrich (\
) maskiert werden.Die
LogMatch
-Struktur enthält auch eine optionalelabelExtractors
. Mit Label-Extractorn können Sie benutzerdefinierte Labels aus Ihren Protokolleinträgen erstellen und dann in Ihren Benachrichtigungen darauf verweisen.Um beispielsweise den Wert des Labels zu extrahieren,
labels."compute.googleapis.com/resource_id"
aus Ihrem Logeintrag in dem Labelvm_identifier
, dem kann wie folgt aussehen:"conditions": [ { "displayName": "Log match condition: invalid IP addr (API)", "conditionMatchedLog": { "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"", "labelExtractors": { "vm_identifier": "EXTRACT(labels.\"compute.googleapis.com/resource_id\")" } }, } ],
Verwenden Sie die Funktion
EXTRACT
, um den gesamten Wert abzugleichen, oder verwenden Sie die FunktionREGEXP_EXTRACT
, um Teilstrings basierend auf regulären Ausdrücken abzugleichen. Dies ist dieselbe Funktion, die auch für die Labelextraktion in logbasierten metrics; Weitere Informationen finden Sie unter Labels erstellen.Sie können diese extrahierten Labels in der Dokumentation der Benachrichtigungsrichtlinie verwenden, damit sie in Benachrichtigungen gemeldet werden. Im Feld
documentation
Ihrer Benachrichtigungsrichtlinie verweisen Sie auf die extrahierten Labels mit einer Variablen vom Typ${log.extracted_label.KEY}
, wobei KEY der Name ist, den Sie dem extrahierten Label gegeben haben.Im folgenden Beispiel wird gezeigt, wie Sie auf den Schlüssel für das extrahierte Label
vm_identifier
verweisen, damit der Wert des Protokolllabelslabels."compute.googleapis.com/resource_id"
in den Benachrichtigungen enthalten ist:"documentation": { "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value on VM with ID ${log.extracted_label.vm_identifier}.", "mimeType": "text/markdown" },
Der Wert für das Feld combiner
gibt an, wie die Ergebnisse mehrerer Bedingungen in messwertbasierten Benachrichtigungsrichtlinien kombiniert werden sollen. Sie können nur eine Bedingung in logbasierten Benachrichtigungsrichtlinien verwenden und müssen das Feld combiner
mit dem Wert "OR"
angeben. Sie können keine logbasierten Benachrichtigungsrichtlinien mit mehreren Bedingungen erstellen.
Werte für Benachrichtigungen und für das automatische Schließen festlegen
Eine logbasierte Benachrichtigungsrichtlinie gibt die Mindestzeit zwischen Benachrichtigungen an. Im Log-Explorer wählen Sie im Menü Zeit zwischen Benachrichtigungen einen Wert aus.
Sie stellen diesen Wert in einer AlertPolicy
-Struktur dar, indem Sie einen Wert in Sekunden für das Feld period
einer NotificationRateLimit
-Struktur angeben, die in eine AlertStrategy
-Struktur eingebettet ist.
Analog enthält die Benachrichtigungsrichtlinie den Zeitraum für die automatische
des Abschlusses von Vorfällen. Der Standardwert ist 7 Tage.
Im Log-Explorer können Sie einen anderen Wert aus dem Feld
Menü Dauer des automatischen Schließens für Vorfälle: Die Option entspricht der
autoclose
in der API-Struktur AlertStrategy
verwenden.
Wenn Sie dieses Feld verwenden, geben Sie den Wert in Sekunden an. Der Mindestwert beträgt 1.800 Sekunden (30 Minuten).
{ ... "alertStrategy": { "notificationRateLimit": { "period": "300s" }, "autoClose": "604800s", }, ... }
Der Wert 300s
für das Feld period
in diesem Beispiel entspricht 5 Minuten. Der Wert für autoclose
(604800s
) entspricht 7 Tagen.
Angeben, wer benachrichtigt werden soll
Eine Benachrichtigungsrichtlinie kann eine Liste mit Benachrichtigungskanälen enthalten.
Im Log-Explorer wählen Sie Kanäle aus einem Menü aus.
Sie stellen diese Werte in einer AlertPolicy
-Struktur dar, indem Sie eine Liste mit einem oder mehreren Ressourcennamen für konfigurierte NotificationChannel
-Objekte angeben:
{ ... "notificationChannels": [ "projects/PROJECT_ID/notificationChannels/CHANNEL_ID" ] }
Wenn Sie einen Benachrichtigungskanal erstellen, wird ihm ein Ressourcenname zugewiesen. Informationen zum Abrufen der Liste der verfügbaren Benachrichtigungskanäle, einschließlich ihrer Ressourcennamen, finden Sie in der Monitoring-Dokumentation unter Kanäle abrufen. Du kannst die Kanal-IDs nicht mit dem Google Cloud Console
Benachrichtigungsrichtlinie an die Monitoring API senden
Zum Erstellen einer Benachrichtigungsrichtlinie mit der Monitoring API erstellen Sie ein AlertPolicy
-Objekt und senden es an die Methode alertPolicies.create
. Sie können alertPolicies.create
mit der Google Cloud CLI aufrufen, indem Sie die Monitoring API direkt aufrufen.
Sie können auch Richtlinien für logbasierte Benachrichtigungen mithilfe der Clientbibliotheken für C#, Go, Java, Python und Ruby erstellen. Sie können eventuell auch andere Clientbibliotheken verwenden. Die Bibliothek für Ihre Sprache muss den Bedingungstyp LogMatch
enthalten.
Führen Sie zum Erstellen einer Benachrichtigungsrichtlinie mit der gcloud CLI Folgendes aus: Folgendes:
Fügen Sie die JSON-Darstellung Ihrer Benachrichtigungsrichtlinie in eine Textdatei ein, z. B. in eine Datei namens
alert-invalid-ip.json
.Übergeben Sie diese JSON-Datei mit dem folgenden Befehl an die gcloud CLI:
gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
Bei Erfolg gibt dieser Befehl den Ressourcennamen der neuen Richtlinie zurück. Beispiel:
Created alerting policy [projects/PROJECT_ID/alertPolicies/POLICY_ID].
Zum Erstellen einer Benachrichtigungsrichtlinie durch direktes Aufrufen von alertPolicies.create
können Sie das APIs Explorer-Tool so verwenden:
Rufen Sie die Referenzseite
alertPolicies.create
auf.Führen Sie im Bereich API testen folgende Schritte aus:
Geben Sie im Feld
name
den folgenden Wert ein:projects/PROJECT_ID
Kopieren Sie die JSON-Darstellung der Benachrichtigungsrichtlinie und ersetzen Sie den Inhalt des Felds Anfragetext in APIs Explorer durch die kopierte Benachrichtigungsrichtlinie.
Klicken Sie auf Ausführen.
Wenn der Aufruf
alertPolicies.create
erfolgreich ist, erhalten Sie einen HTTP200
-Antwortcode und einen leeren Antworttext:{}
. Weitere Informationen zu APIs Explorer finden Sie in der Monitoring-Dokumentation unter APIs Explorer verwenden.
Weitere Informationen zum Erstellen von Benachrichtigungsrichtlinien mithilfe der Monitoring API finden Sie unter Richtlinien erstellen. Dort werden in den Beispielen Bedingungstypen für messwertbasierte Benachrichtigungsrichtlinien verwendet. Die Prinzipien sind jedoch identisch.
Benachrichtigungsrichtlinie testen
Zum Testen der neuen Benachrichtigungsrichtlinie können Sie das gleiche Verfahren verwenden, das unter Logbasierte Beispielbenachrichtigung testen beschrieben wird.
Beispiel: Benachrichtigungsrichtlinie erstellen, wenn ein Logeintrag einen Textstring enthält
In diesem Beispiel wird in der Google Cloud Console eine Benachrichtigungsrichtlinie erstellt, im Log-Explorer werden Logeinträge angezeigt und mit der Google Cloud CLI wird ein Logeintrag geschrieben:
-
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Geben Sie im Bereich Abfrage die folgende Abfrage ein, nachdem Sie den Wert von PROJECT_ID aktualisiert haben:
logName="projects/PROJECT_ID/logs/test-log" textPayload:"Oops"
Bei der Abfrage wird im Protokoll mit dem Namen
test-log
nach Logeinträgen gesucht, die eintextPayload
-Feld mit dem String „Oops“ enthalten.Maximieren Sie in der Symbolleiste Abfrageergebnisse das Menü Aktionen und wählen Sie add_alert Logbenachrichtigung erstellen: Füllen Sie dann das Dialogfeld aus.
Sie müssen einen Namen für die Richtlinie eingeben, z. B.
Alert on Oops
. Die Abfrage, die Sie im vorherigen Schritt eingegeben haben, wird automatisch in die Benachrichtigungsrichtlinie aufgenommen.Öffnen Sie Cloud Shell und dann führen Sie den folgenden Befehl aus:
gcloud logging write test-log --severity=ERROR --payload-type=text 'This log entry contains Oops'
Mit dem vorherigen Befehl wird ein Eintrag mit dem Namen
test-log
in das Log geschrieben. Die Eintrag hat die WichtigkeitsstufeERROR
und enthält das FeldtextPayload
.Klicken Sie im Log-Explorer auf Abfrage ausführen.
Nachdem die Anzeige aktualisiert wurde, können Sie die Details des Log-Eintrags aufrufen, den Sie im vorherigen Schritt erstellt haben.
-
Rufen Sie in der Google Cloud Console die Seite notifications Benachrichtigungen auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Im Bereich Vorfälle werden der Vorfall und Details zur Benachrichtigungsrichtlinie angezeigt.
Wenn Sie beim Öffnen der Seite Benachrichtigungen keinen Vorfall sehen, warten Sie einige Minuten und aktualisieren Sie dann die Seite.
Sie erhalten keinen weiteren Vorfall und keine weitere Benachrichtigung, wenn Sie den Google Cloud CLI-Befehl sofort wiederholen. In den Einstellungen für die Benachrichtigungsrichtlinie wird die Mindestzeitspanne zwischen Vorfällen angegeben. Sie können diese aufrufen und ändern. indem Sie die Richtlinie bearbeiten.