In diesem Dokument wird beschrieben, wie Sie eine Benachrichtigungsrichtlinie erstellen, um die Ergebnisse einer Abfrage in Log Analytics zu überwachen. Diese Abfragen sind in SQL geschrieben und müssen eine Protokollansicht abfragen. Die Benachrichtigungsrichtlinie benachrichtigt Sie, wenn das Abfrageergebnis die von Ihnen angegebenen Bedingungen erfüllt. Sie können beispielsweise eine Benachrichtigungsrichtlinie so konfigurieren, dass Sie benachrichtigt werden, wenn mindestens 25% der Protokolleinträge in einem bestimmten Zeitraum die Schwere ERROR
haben.
Benachrichtigungsrichtlinien, die Sie auf der Seite Log Analytics erstellen, werden in einer BigQuery-Engine ausgeführt. Daher müssen die abgefragten Daten über ein verknüpftes BigQuery-Dataset zugänglich sein.
Allgemeine Informationen zu Log Analytics finden Sie unter Logs mit Log Analytics abfragen und analysieren.
Funktionsweise von Benachrichtigungsrichtlinien
In einer Benachrichtigungsrichtlinie wird beschrieben, unter welchen Umständen und wie Sie über einen Vorfall benachrichtigt werden möchten. Es gibt drei verschiedene Möglichkeiten, sich benachrichtigen zu lassen, wenn Inhalte oder Muster in Ihren Protokolldaten auftreten:
Wenn Sie einzelne Logeinträge auf einen bestimmten Begriff prüfen möchten, erstellen Sie eine logbasierte Benachrichtigungsrichtlinie. Verwenden Sie diese Benachrichtigungsrichtlinien, wenn Sie über Dinge wie sicherheitsrelevante Ereignisse benachrichtigt werden möchten.
Wenn Sie Ereignisse in Ihren Logeintragsdaten überwachen möchten, können Sie einen logbasierten Messwert und dann eine Benachrichtigungsrichtlinie zum Überwachen des Messwerts erstellen. Diese Arten von Benachrichtigungsrichtlinien sind effektiv, wenn Sie Trends bei Protokolleintragsdaten im Zeitverlauf beobachten möchten. Sie sind jedoch weniger effektiv, wenn Sie nur wenige Ereignisse erwarten.
Wenn Sie eine zusammengefasste Analyse Ihrer Protokolleintragsdaten überwachen möchten, kombinieren Sie Log Analytics mit Benachrichtigungsrichtlinien. In diesem Szenario aktualisieren Sie einen Log-Bucket für die Verwendung von Log Analytics und erstellen ein verknüpftes BigQuery-Dataset für diesen Log-Bucket. Als Nächstes verwenden Sie Log Analytics, das SQL-Abfragen unterstützt, um eine Protokollansicht im Protokoll-Bucket abzufragen. Anschließend erstellen Sie die Benachrichtigungsrichtlinie, um die Ergebnisse der SQL-Abfrage zu überwachen. Diese Art von Benachrichtigungsrichtlinie wird als SQL-basierte Benachrichtigungsrichtlinie bezeichnet.
SQL-basierte Benachrichtigungsrichtlinien eignen sich am besten für die Auswertung exakter Werte in mehreren Logeinträgen. Wenn Sie einzelne Logeinträge auswerten möchten, erstellen Sie eine logbasierte Benachrichtigungsrichtlinie.
Im Rest dieses Dokuments wird beschrieben, wie Sie SQL-basierte Benachrichtigungsrichtlinien verwenden.
Komponenten von Benachrichtigungsrichtlinien
Eine SQL-basierte Benachrichtigungsrichtlinie enthält eine Bedingung und einen Zeitplan:
Die Bedingung enthält die Abfrage, eine SQL-Abfrage, die eine Protokollansicht abfragt. Die Bedingung definiert auch die Umstände, unter denen das Abfrageergebnis dazu führt, dass in Monitoring ein Vorfall erstellt wird.
Mit dem Zeitplan wird festgelegt, wie oft die Abfrage der Benachrichtigungsrichtlinie ausgeführt wird. Im Zeitplan wird auch die Größe des Lookback-Windows definiert. Dabei handelt es sich um einen Filter, mit dem nur die Logeinträge ausgewählt werden, die seit der letzten Auswertung der Abfrage eingegangen sind. Wenn Sie beispielsweise 60 Minuten festlegen, wird die Abfrage alle 60 Minuten mit einem Rückschaufenster ausgeführt, in dem die Logeinträge der letzten 60 Minuten ausgewählt werden.
Benachrichtigungsrichtlinien enthalten auch eine Liste der Benachrichtigungskanäle. Wenn die Bedingung der Benachrichtigungsrichtlinie erfüllt ist, erstellt Cloud Monitoring einen Vorfall und sendet dann Benachrichtigungen über den Vorfall über diese Kanäle. Ein Vorfall ist ein Datensatz mit den Daten, die zur Erfüllung der Bedingung geführt haben, sowie anderen relevanten Informationen. Anhand dieser Informationen können Sie die Probleme beheben, die den Vorfall verursacht haben. Sie können den Vorfall in der Google Cloud Console aufrufen.
Bewertungstypen für SQL-basierte Benachrichtigungsrichtlinien
Bedingungen, die ein SQL-Ergebnis überwachen, unterstützen zwei Arten der Auswertung:
Grenzwert für die Zeilenanzahl: Die Bedingung ist erfüllt, wenn die Anzahl der Zeilen im Abfrageergebnis größer, gleich oder kleiner als ein Grenzwert ist.
Angenommen, Sie möchten benachrichtigt werden, wenn mehr als 50 Logeinträge im Lookback-Window eine Schwere von über 200 haben. Sie erstellen eine Abfrage, die Logeinträge mit einer Schwere von über 200 meldet. Konfigurieren Sie dann eine Bedingung, wählen Sie den Schwellenwert für die Zeilenanzahl aus und legen Sie den Schwellenwert auf 50 fest.
Boolescher Wert: Die Bedingung ist erfüllt, wenn eine bestimmte boolesche Spalte in der Ergebnistabelle der Abfrage eine Zeile mit dem Wert
true
enthält.Angenommen, Sie möchten benachrichtigt werden, wenn mehr als 25% der Logeinträge im Rückblickszeitraum den Schweregrad
ERROR
haben. Sie erstellen eine Abfrage, mit der der Prozentsatz der Logeinträge berechnet wird, deren SchweregradERROR
ist. In den Abfrageergebnissen wirdtrue
in die Spaltenotify
geschrieben, wenn dieser Prozentsatz 25 % überschreitet. Als Nächstes erstellen Sie eine Bedingung, legen den Typ auf Boolescher Wert fest und konfigurieren die Bedingung so, dass die Spaltenotify
überwacht wird.
Benachrichtigungsrichtlinien, die das Ergebnis einer SQL-Abfrage überwachen, dürfen nur eine Bedingung haben.
Benachrichtigungsrichtlinien und BigQuery
Wenn für eine Benachrichtigungsrichtlinie eine SQL-Abfrage ausgeführt wird, wird diese mit reservierten BigQuery-Slots im Google Cloud-Projekt ausgeführt, in dem die Benachrichtigungsrichtlinie definiert ist. Weitere Informationen finden Sie unter Mit Slotreservierungen arbeiten.
Damit eine Benachrichtigungsrichtlinie reservierte BigQuery-Slots zum Abfragen einer Log-Ansicht verwenden kann, muss der Log-Bucket, in dem die Log-Ansicht gehostet wird, so konfiguriert sein, dass er ein verknüpftes BigQuery-Dataset hat. Über verknüpfte Datensätze können die Daten im Protokoll-Bucket in BigQuery gelesen und BigQuery-Funktionen auf die von Ihrer SQL-Abfrage zurückgegebenen Daten angewendet werden.
Hinweise
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihre Log-Buckets oder Log-Ansichten zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung von Log Analytics benötigen:
-
So rufen Sie die Log-Buckets
_Required
und_Default
ab: Loganzeige (roles/logging.viewer
). -
So rufen Sie alle Logansichten in einem Projekt ab:
Zugriffsberechtigter für Logbetrachtung (
roles/logging.viewAccessor
). -
So rufen Sie Logs in einer bestimmten Loganzeige ab:
Erstellen Sie eine IAM-Richtlinie für die Loganzeige oder beschränken Sie die Rolle „Zugriffsberechtigter für Loganzeige“ (
roles/logging.viewAccessor
) auf eine bestimmte Loganzeige. Weitere Informationen finden Sie unter Zugriff auf eine Logansicht steuern.
-
So rufen Sie die Log-Buckets
- Rufen Sie für die Log-Ansichten, die Sie abfragen möchten, die Seite Logspeicher auf und prüfen Sie, ob die Log-Buckets, in denen diese Log-Ansichten gespeichert sind, auf Log Analytics umgestellt wurden. Aktualisieren Sie gegebenenfalls den Log-Bucket.
- So aktivieren Sie das Ausführen von Abfragen auf reservierten BigQuery-Slots:
- Wenn der Log-Bucket, den Sie abfragen möchten, kein verknüpftes Dataset hat, erstellen Sie ein verknüpftes Dataset.
- Konfigurieren Sie reservierte BigQuery-Slots und weisen Sie sie Ihrem Google Cloud-Projekt zu.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von SQL-basierten Benachrichtigungsrichtlinien benötigen:
-
Monitoring-Bearbeiter (
roles/monitoring.editor
) für Ihr Projekt -
Logging SqlAlertWriter (
roles/logging.sqlAlertWriter
) für Ihr Projekt -
BigQuery-Jobnutzer (
roles/bigquery.jobUser
) für Ihr Projekt -
BigQuery-Datenbetrachter (
roles/bigquery.dataViewer
) für das verknüpfte Dataset
Informationen zum Gewähren von Zugriff auf ein Dataset finden Sie unter Zugriff auf ein Dataset gewähren.
-
Monitoring-Bearbeiter (
Das Monitoring-Dienstkonto muss vorhanden sein und die folgenden Rollen haben:
- Die Rolle Monitoring-Dienst-Agent (
monitoring.notificationServiceAgent
) für Ihr Projekt - Die Rolle „BigQuery-Datenbetrachter“ (
roles/bigquery.dataViewer
) für das verknüpfte Dataset
Wenn das Monitoring-Dienstkonto nicht vorhanden ist, lesen Sie den Hilfeartikel Fehlerbehebung: Kein Monitoring-Dienstkonto.
- Die Rolle Monitoring-Dienst-Agent (
- Konfigurieren Sie die Benachrichtigungskanäle, über die Sie Benachrichtigungen zu Vorfällen erhalten möchten. Aus Gründen der Redundanz empfehlen wir, mehrere Benachrichtigungskanäle zu erstellen. Weitere Informationen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.
Rufen Sie in der Google Cloud Console die Seite Logspeicher auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
SQL-basierte Benachrichtigungsrichtlinie erstellen
So erstellen Sie eine SQL-basierte Benachrichtigungsrichtlinie:
Google Cloud Console
-
Rufen Sie in der Google Cloud Console die Seite Log Analytics auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
Geben Sie auf der Seite Log Analytics im Abfrageeditor eine SQL-Abfrage für eine Protokollansicht ein.
Weitere Informationen zum Erstellen von SQL-Abfragen für Logansichten finden Sie unter Logansicht abfragen.
Klicken Sie in der Symbolleiste auf In BigQuery ausführen.
In Log Analytics wird Ihre Abfrage in der BigQuery-Engine ausgeführt und die Ergebnisse werden in der Tabelle Ergebnisse angezeigt.
Wenn In BigQuery ausführen nicht angezeigt wird, klicken Sie auf settings Abfrage-Engine auswählen und dann auf BigQuery. Die Schaltfläche Abfrage ausführen ändert sich in In BigQuery ausführen.
Klicken Sie auf der Seite Log Analytics in der Tabelle Ergebnisse auf add_alert Benachrichtigung erstellen.
Auf der Seite Log Analytics wird das Fenster SQL-Benachrichtigungsrichtlinie erstellen angezeigt. Ihre Abfrage wird im Bereich SQL-Abfrage angezeigt.
Konfigurieren Sie im Bereich Benachrichtigungsbedingung die Bedingung und den Zeitplan Ihrer Benachrichtigungsrichtlinie.
Konfigurieren Sie die Details der Benachrichtigung Ihrer Benachrichtigungsrichtlinie.
Optional: Fügen Sie Labels für Benachrichtigungsrichtlinien und Dokumentation hinzu.
Fügen Sie Benachrichtigungskanäle hinzu und klicken Sie dann auf Weiter.
Überprüfen Sie die Benachrichtigungsrichtlinie und klicken Sie dann auf Speichern, um sie zu erstellen.
Cloud Monitoring API
Mit der Methode alertPolicies.create
können Sie Benachrichtigungsrichtlinien programmatisch erstellen. Der Condition
-Typ Ihrer Benachrichtigungsrichtlinie muss conditionSql
sein, eine Instanz von SqlCondition
.
Mit diesem Bedingungstyp können die Bedingungen Ihrer Benachrichtigungsrichtlinie mit SQL definiert werden.
Um den Zeitplan zu definieren, legen Sie einen periodicity
-Wert für eines der Felder minutes
, hours
oder days
fest. Wenn die Abfrage beispielsweise alle 12 Stunden ausgeführt werden soll, legen Sie die Häufigkeit für das Feld hours
auf 12 fest.
Verwenden Sie die folgenden Felder, um die Bedingung zu definieren:
boolean_test
: Die Benachrichtigungsrichtlinie wird so konfiguriert, dass die Bedingung erfüllt ist, wenn eine Zeile einer booleschen Spalte in der Abfrageergebnistabelle den Wert „wahr“ enthält.row_count_test
: Die Benachrichtigungsrichtlinie wird so konfiguriert, dass die Bedingung erfüllt ist, wenn die Anzahl der Zeilen in der Abfrageergebnistabelle einen bestimmten Grenzwert erreicht.
Eine vollständige Liste der Felder und Definitionen finden Sie unter SqlCondition
in der Cloud Monitoring API-Dokumentation.
Weitere Informationen zur Monitoring API für Benachrichtigungsrichtlinien finden Sie unter Benachrichtigungsrichtlinien über API verwalten.
Beschränkungen
Wenn eine Benachrichtigungsrichtlinie eine geplante SQL-Abfrage ausführt, wird eine Verzögerung von 15 Minuten eingeführt, damit die Logeinträge in den Log-Bucket übertragen werden können. Wenn der Empfang von Logeinträgen länger als 15 Minuten dauert, werden sie nicht von der Benachrichtigungsrichtlinie ausgewertet.
Diese 15-minütige Verzögerung wirkt sich auf die Zeit aus, die vergeht, bis ein Protokolleintrag generiert wird und das Monitoring erkennt, dass eine Bedingung erfüllt ist. Angenommen, Sie haben eine SQL-Abfrage, die alle 30 Minuten ausgeführt werden soll. Wenn die Benachrichtigungsrichtlinie den Zustand regelmäßig auswertet, werden Logeinträge mit Zeitstempeln zwischen 15 und 45 Minuten zurück abgefragt.
Informationen zu Limits für Benachrichtigungsrichtlinien finden Sie unter Monitoring-Limits.
Preise
Informationen zu den Preisen finden Sie in folgenden Dokumenten:
- BigQuery-Preise
- Cloud Logging in der Preisdokumentation für die Observability-Funktionen von Google Cloud
- Cloud Monitoring in der Preisdokumentation für Google Cloud Observability
Nächste Schritte
Informationen zum Erstellen von Diagrammen aus Ihren Log Analytics-Daten finden Sie unter Abfrageergebnisse mit Log Analytics in Diagrammen darstellen.
Informationen zum Verwalten von Vorfällen für diese Benachrichtigungsrichtlinien finden Sie unter Vorfälle für SQL-basierte Benachrichtigungsrichtlinien.