SQL-Abfrageergebnisse mit einer Benachrichtigungsrichtlinie überwachen

In diesem Dokument wird beschrieben, wie Sie eine Benachrichtigungsrichtlinie erstellen, um die Ergebnisse einer Abfrage zu überwachen, die Sie in Log Analytics ausführen. Diese Abfragen werden in SQL geschrieben und müssen eine Log-Ansicht 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 Logeinträge in einem bestimmten Zeitraum den Schweregrad ERROR haben.

Benachrichtigungsrichtlinien, die Sie auf der Seite Loganalysen erstellen, werden in einer BigQuery-Engine ausgeführt. Die abgefragten Daten müssen daher über ein verknüpftes BigQuery-Dataset zugänglich sein. Aus diesem Grund können mit diesen SQL-Abfragen nur Logansichten abgefragt werden. Sie können keine Analytics-Ansichten abfragen.

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 Sie benachrichtigt werden möchten und wie Sie über einen Vorfall benachrichtigt werden möchten. Es gibt drei verschiedene Ansätze, um benachrichtigt zu werden, wenn Inhalte oder Muster in Ihren Logdaten erscheinen:

  • Wenn Sie einzelne Logeinträge nach einem bestimmten Begriff durchsuchen möchten, erstellen Sie eine logbasierte Benachrichtigungsrichtlinie. Verwenden Sie diese Benachrichtigungsrichtlinien, wenn Sie über sicherheitsrelevante Ereignisse benachrichtigt werden möchten.

  • Wenn Sie Ereignisse in Ihren Logeinträgen überwachen möchten, können Sie einen logbasierten Messwert erstellen und dann eine Benachrichtigungsrichtlinie zum Überwachen des Messwerts erstellen. Diese Arten von Benachrichtigungsrichtlinien sind nützlich, wenn Sie Trends bei Logeinträgen im Zeitverlauf beobachten möchten. Sie sind jedoch weniger effektiv, wenn Sie nur wenige Ereignisse erwarten.

  • Wenn Sie die aggregierte Analyse Ihrer Logeinträge überwachen möchten, kombinieren Sie Log Analytics mit Benachrichtigungsrichtlinien. In diesem Szenario führen Sie ein Upgrade für einen Log-Bucket durch, um Loganalysen zu verwenden, und erstellen ein verknüpftes BigQuery-Dataset für diesen Log-Bucket. Als Nächstes verwenden Sie Loganalysen, die SQL-Abfragen unterstützen, um eine Logansicht im Log-Bucket abzufragen. Schließlich 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, um genaue Werte für mehrere Logeinträge auszuwerten. 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, mit der eine Log-Ansicht abgefragt wird. Die Bedingung definiert auch die Umstände, unter denen das Abfrageergebnis dazu führt, dass in Monitoring ein Vorfall erstellt wird.

  • Im Zeitplan wird festgelegt, wie oft die Abfrage der Benachrichtigungsrichtlinie ausgeführt wird. Im Zeitplan wird auch die Größe des Rückblickszeitraums definiert. Das ist ein Filter, mit dem nur die Logeinträge ausgewählt werden, die seit der letzten Auswertung der Abfrage empfangen wurden. Wenn Sie den Zeitplan beispielsweise auf 60 Minuten festlegen, wird die Abfrage alle 60 Minuten mit einem Rückblickfenster ausgeführt, in dem die Logeinträge der letzten 60 Minuten ausgewählt werden.

Benachrichtigungsrichtlinien enthalten auch eine Liste mit Benachrichtigungskanälen. Wenn die Bedingung der Benachrichtigungsrichtlinie erfüllt ist, erstellt Cloud Monitoring einen Vorfall und sendet dann Benachrichtigungen zu diesem Vorfall über diese Kanäle. Ein Vorfall ist ein Datensatz mit den Daten, die dazu geführt haben, dass die Bedingung erfüllt wurde, 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 -Konsole aufrufen.

Auswertungstypen für SQL-basierte Benachrichtigungsrichtlinien

Bedingungen, mit denen das Ergebnis einer SQL-Abfrage überwacht wird, unterstützen zwei Arten der Auswertung:

  • Grenzwert für die Anzahl der Zeilen: Die Bedingung ist erfüllt, wenn die Anzahl der Zeilen im Abfrageergebnis größer als, gleich oder kleiner als ein Grenzwert ist.

    Angenommen, Sie möchten benachrichtigt werden, wenn mehr als 50 Logeinträge im Lookback-Window einen Schweregrad von mehr als 200 haben. Sie erstellen eine Abfrage, in der Logeinträge mit einem Schweregrad über 200 gemeldet werden. Anschließend konfigurieren Sie eine Bedingung, wählen den Schwellenwert für die Anzahl der Zeilen aus und legen den Schwellenwert auf 50 fest.

  • Boolean: Die Bedingung ist erfüllt, wenn eine bestimmte boolesche Spalte in der Abfrageergebnistabelle eine Zeile mit dem Wert true enthält.

    Angenommen, Sie möchten benachrichtigt werden, wenn mehr als 25% der Logeinträge im Rückblickzeitraum den Schweregrad ERROR haben. Sie erstellen eine Abfrage, mit der der Prozentsatz der Logeinträge mit dem Schweregrad ERROR berechnet wird. Bei den Abfrageergebnissen wird true in die Spalte notify geschrieben, wenn dieser Prozentsatz 25 % überschreitet. Als Nächstes erstellen Sie eine Bedingung, legen den Typ auf Boolean fest und konfigurieren die Bedingung so, dass die Spalte notify überwacht wird.

Benachrichtigungsrichtlinien, mit denen das Ergebnis einer SQL-Abfrage überwacht wird, dürfen nur eine Bedingung haben.

Benachrichtigungsrichtlinien und BigQuery

Wenn eine Benachrichtigungsrichtlinie eine SQL-Abfrage ausführt, wird diese Abfrage 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 Logansicht verwenden kann, muss für den Log-Bucket, in dem sich die Logansicht befindet, ein verknüpftes BigQuery-Dataset konfiguriert sein. Mit verknüpften Datasets kann BigQuery die Daten im Log-Bucket lesen und Sie können BigQuery-Funktionen für die Daten ausführen, die von Ihrer SQL-Abfrage zurückgegeben werden.

Ausgewertete Logeinträge

Damit ein Logeintrag von der SQL-Abfrage einer Benachrichtigungsrichtlinie ausgewertet werden kann, müssen beide der folgenden Bedingungen erfüllt sein:

  • Der Zeitstempel für den Empfang des Logeintrags, der angibt, wann der Logeintrag von Cloud Logging empfangen wurde, muss innerhalb des Rückblickszeitraums der Benachrichtigungsrichtlinie liegen.
  • Der Zeitstempel des Logeintrags, der angibt, wann der Logeintrag generiert wurde, muss innerhalb von 15 Minuten nach dem Rückblickzeitraum liegen.

Ihre SQL-basierte Benachrichtigungsrichtlinie hat beispielsweise ein Lookback-Window von 60 Minuten. Log Analytics führt die SQL-Abfrage der Benachrichtigungsrichtlinie um 13:30 Uhr aus. Damit ein Logeintrag in die Abfrage aufgenommen wird, muss er die beiden folgenden Kriterien erfüllen:

  • Der empfangene Zeitstempel muss zwischen 12:30 Uhr und 13:30 Uhr liegen.
  • Der Zeitstempel muss zwischen 12:15 Uhr und 13:45 Uhr liegen.

Wenn Sie eine Abfrage über die Log Analytics-Benutzeroberfläche ausführen, werden alle Logeinträge im ausgewählten Zeitraum anhand des Zeitstempels des Logeintrags ausgewertet.

Lookback-Window und Weitergabezeit von Vorfällen

Wenn eine Benachrichtigungsrichtlinie so geplant ist, dass ihr Zustand ausgewertet wird, verzögert Log Analytics die Ausführung der SQL-Abfrage um fünf Minuten, damit Cloud Logging Zeit hat, die während des Rückblickszeitraums empfangenen Logeinträge zu indexieren. Wenn die Benachrichtigungsrichtlinie beispielsweise ein Rückblicksfenster verwendet, das um 14:00 Uhr endet, wird die SQL-Abfrage in Log Analytics erst um 14:05 Uhr ausgeführt.

Wenn die Benachrichtigungsbedingung nach der Ausführung der Abfrage erfüllt ist, kann es bis zu zwei weitere Minuten dauern, bis der Vorfall im System weitergegeben wird.

Fehler bei Abfragen

Abfragen, die von SQL-basierten Benachrichtigungsrichtlinien ausgegeben werden, können aus verschiedenen Gründen fehlschlagen, z. B.:

  • Das Monitoring-Dienstkonto ist nicht mehr vorhanden oder hat nicht mehr die erforderlichen Berechtigungen zum Lesen der abgefragten Logdaten.

  • Die Ausführungszeit der Abfrage überschreitet fünf Minuten.

  • Ein interner Fehler ist aufgetreten.

Bei einer fehlgeschlagenen Abfrage wird ein Logeintrag mit der ID der Benachrichtigungsrichtlinie und dem Fehlerstatus generiert. Sie können eine logbasierte Benachrichtigungsrichtlinie verwenden, um eine Benachrichtigung zu erstellen, wenn ein Fehler protokolliert wird.

Hinweise

In diesem Abschnitt wird davon ausgegangen, dass Sie ein Upgrade für Ihren Log-Bucket zur Verwendung von Log Analytics durchgeführt haben und dass Sie Ihre Logdaten über die Seite „Log Analytics“ abfragen und ansehen können. Außerdem wird davon ausgegangen, dass Sie bereits ein verknüpftes BigQuery-Dataset für Ihren Log-Bucket erstellt haben.

Führen Sie die folgenden Schritte aus, bevor Sie eine SQL-basierte Benachrichtigungsrichtlinie erstellen:

  1. 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:

  2. Prüfen Sie, ob das Monitoring-Dienstkonto vorhanden ist und die folgenden Rollen hat:

    1. Monitoring-Dienst-Agent (roles/monitoring.notificationServiceAgent) für Ihr Projekt.
    2. BigQuery Data Viewer (roles/bigquery.dataViewer) für Ihr verknüpftes Dataset.

    Wenn das Monitoring-Dienstkonto nicht vorhanden ist, lesen Sie den Abschnitt Fehlerbehebung: Kein Monitoring-Dienstkonto.

  3. So aktivieren Sie die Ausführung Ihrer SQL-basierten Benachrichtigungsrichtlinien in reservierten BigQuery-Slots:
    1. Reservierte BigQuery-Slots konfigurieren
    2. Reservierte Slots Ihrem Google Cloud Projekt zuweisen
  4. Konfigurieren Sie die Benachrichtigungskanäle, über die Sie Benachrichtigungen zu Vorfällen erhalten möchten. Zu Redundanzzwecken empfehlen wir, mehrere Arten von Benachrichtigungskanälen zu erstellen. Weitere Informationen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.

SQL-basierte Benachrichtigungsrichtlinie erstellen

So erstellen Sie eine SQL-basierte Benachrichtigungsrichtlinie:

Google Cloud console

  1. Rufen Sie in der Google Cloud Console die Seite Log Analytics auf:

    Zu Log Analytics

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  2. Geben Sie auf der Seite Log Analytics im Abfrageeditor eine SQL-Abfrage für eine Log-Ansicht ein.

    Weitere Informationen zum Schreiben von SQL-Abfragen für Logansichten finden Sie unter Logansicht abfragen.

  3. Klicken Sie in der Symbolleiste auf In BigQuery ausführen.

    Log Analytics führt Ihre Abfrage in der BigQuery-Engine aus und zeigt die Ergebnisse in der Tabelle Ergebnisse an.

    Wenn In BigQuery ausführen nicht angezeigt wird, klicken Sie auf  Abfrage-Engine auswählen und dann auf BigQuery. Die Schaltfläche Abfrage ausführen ändert sich in In BigQuery ausführen.

  4. Klicken Sie auf der Seite Log Analytics in der Tabelle Ergebnisse auf  Benachrichtigung erstellen.

    Auf der Seite Log Analytics wird das Fenster SQL-Benachrichtigungsrichtlinie erstellen angezeigt. Ihre Abfrage wird im Bereich SQL-Abfrage angezeigt.

  5. Konfigurieren Sie im Bereich Benachrichtigungsbedingung die Bedingung und den Zeitplan Ihrer Benachrichtigungsrichtlinie.

  6. Konfigurieren Sie die Benachrichtigungsdetails Ihrer Benachrichtigungsrichtlinie.

    1. Fügen Sie Benachrichtigungskanäle hinzu und konfigurieren Sie Benachrichtigungsinhalte wie eine benutzerdefinierte Betreffzeile.

    2. Optional: Fügen Sie Labels für Benachrichtigungsrichtlinien und Dokumentation hinzu.

    3. Klicken Sie auf Weiter.

  7. Überprüfen Sie die Benachrichtigungsrichtlinie und klicken Sie dann auf Speichern, um sie zu erstellen.

Cloud Monitoring API

Benachrichtigungsrichtlinien erstellen Sie mit der Methode alertPolicies.create programmatisch. Der Typ Condition Ihrer Benachrichtigungsrichtlinie muss conditionSql sein. Das ist 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 Periodizität des Felds hours auf 12 fest.

Verwenden Sie die folgenden Felder, um die Bedingung zu definieren:

  • boolean_test: Konfiguriert die Benachrichtigungsrichtlinie so, dass ihre Bedingung erfüllt ist, wenn eine Zeile einer booleschen Spalte in der Abfrageergebnistabelle den Wert „true“ enthält.
  • row_count_test: Konfiguriert die Benachrichtigungsrichtlinie so, dass ihre 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.

Terraform

  1. Installieren und konfigurieren Sie Terraform für Ihr Projekt. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.

  2. Wechseln Sie in Cloud Shell zu dem Verzeichnis, das Ihre Terraform-Konfiguration enthält.

  3. Konfigurieren Sie in Ihrer Terraform-Konfiguration eine Instanz der Ressource google_monitoring_alert_policy, einschließlich condition_sql.

  4. Geben Sie in Cloud Shell terraform apply ein.

Wenn Sie Ihre Benachrichtigungsrichtlinie ändern möchten, nehmen Sie die gewünschten Änderungen vor und wenden Sie die Terraform-Konfiguration noch einmal an. Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien mit Terraform verwalten.

Allgemeine Informationen zur Verwendung von Google Cloud mit Terraform finden Sie unter Terraform mit Google Cloud.

Beschränkungen

  • Sie können eine Bedingung pro SQL-basierter Benachrichtigungsrichtlinie haben.

  • SQL-basierte Benachrichtigungsrichtlinien können keine Analytics-Ansicht abfragen.

  • Abfragen, die von SQL-basierten Benachrichtigungsrichtlinien ausgegeben werden, schlagen fehl, wenn ihre Ausführungszeit fünf Minuten überschreitet.

  • Zwischen dem Zeitpunkt, zu dem eine Abfrage geplant wird, und dem Zeitpunkt, zu dem ein Vorfall erstellt wird, kann es zu einer Verzögerung von bis zu sieben Minuten kommen. Hinzu kommt die Ausführungszeit der Abfrage.

Eine vollständige Liste der Grenzwerte für Benachrichtigungsrichtlinien finden Sie unter Monitoring-Grenzwerte.

Preise

Informationen zur Preisgestaltung finden Sie in den folgenden Dokumenten:

Nächste Schritte