Ergebnisse von SQL-Abfrage mit einer Benachrichtigungsrichtlinie überwachen

SQL-basierte Benachrichtigungsrichtlinien in Observability Analytics führen regelmäßig SQL-Abfragen für Ihre Logdaten aus und senden Ihnen Benachrichtigungen, wenn die Ergebnisse die von Ihnen angegebenen Bedingungen erfüllen. Sie können beispielsweise eine Benachrichtigungsrichtlinie konfigurieren, die Sie benachrichtigt, wenn mindestens 25 % der Logeinträge in einem bestimmten Zeitraum den Schweregrad ERROR haben.

Da Benachrichtigungsrichtlinien, die Sie auf der Seite Observability Analytics erstellen, in der BigQuery-Engine ausgeführt werden, muss die abgefragte Logansicht ein verknüpftes BigQuery-Dataset haben. Mit diesen SQL-Abfragen können nur Logansichten abgefragt werden, keine Analyseansichten.

Allgemeine Informationen zu Observability Analytics finden Sie unter Logs mit Observability Analytics abfragen und analysieren.

Funktionsweise von Benachrichtigungsrichtlinien

In einer Benachrichtigungsrichtlinie wird festgelegt, unter welchen Umständen und wie Sie benachrichtigt werden möchten. Es gibt drei verschiedene Ansätze, mit denen Sie sich benachrichtigen lassen können, wenn Inhalte oder Muster in Ihren Logdaten angezeigt werden:

  • Wenn Sie einzelne Logeinträge nach einer bestimmten Wortgruppe durchsuchen möchten, erstellen Sie eine logbasierte Benachrichtigungsrichtlinie. Verwenden Sie diese Benachrichtigungsrichtlinien, wenn Sie über sicherheitsrelevante Ereignisse informiert 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 in Logeintragsdaten im Zeitverlauf beobachten möchten. Sie sind jedoch nicht so effektiv, wenn Sie nur wenige Ereignisse erwarten.

  • Wenn Sie die aggregierte Analyse Ihrer Logeintragsdaten im Blick behalten möchten, kombinieren Sie Observability Analytics mit Benachrichtigungsrichtlinien. In diesem Szenario führen Sie ein Upgrade eines Log-Buckets durch, um Observability Analytics zu verwenden, und erstellen ein verknüpftes BigQuery-Dataset für diesen Log-Bucket. Als Nächstes verwenden Sie Observability Analytics, das SQL-Abfragen unterstützt, um eine Logansicht im Log-Bucket abzufragen. Schließlich erstellen Sie die Benachrichtigungsrichtlinie, um die SQL-Abfrageergebnisse zu überwachen. Diese Art von Benachrichtigungsrichtlinie wird als SQL-basierte Benachrichtigungsrichtlinie bezeichnet.

SQL-basierte Benachrichtigungsrichtlinien sind am effektivsten, um genaue Werte über mehrere Logeinträge hinweg auszuwerten. Wenn Sie einzelne Logeinträge auswerten möchten, erstellen Sie eine logbasierte Benachrichtigungsrichtlinie.

Im weiteren Verlauf 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 Ihre Daten abfragt. Die Bedingung definiert auch die Umstände, unter denen das Abfrageergebnis dazu führt, dass Monitoring eine Benachrichtigung erstellt.

  • Der Zeitplan definiert, wie oft die Benachrichtigungsrichtlinie ihre Abfrage ausführt. Der Zeitplan definiert auch die Größe des Lookback-Windows. Das ist ein Filter, der nur Daten auswählt, 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 Lookback-Window ausgeführt, das die letzten 60 Minuten der Daten auswählt.

Benachrichtigungsrichtlinien enthalten auch eine Liste von Benachrichtigungskanälen. Wenn die Bedingung der Benachrichtigungsrichtlinie erfüllt ist, erstellt Cloud Monitoring eine Benachrichtigung und sendet dann Benachrichtigungen über diese Kanäle. Eine Benachrichtigung ist ein Datensatz, der die Daten enthält, die die Bedingung erfüllt haben, sowie andere relevante Informationen. Diese Informationen können Ihnen bei der Behebung der Probleme helfen, die die Benachrichtigung ausgelöst haben. Sie können die Benachrichtigung in der Google Cloud Console aufrufen.

Bewertungstypen für SQL-basierte Benachrichtigungsrichtlinien

Bedingungen, die ein SQL-Abfrageergebnis ü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 einen Schweregrad von mehr als 200 haben. Sie erstellen eine Abfrage, die Logeinträge mit einem Schweregrad von mehr als 200 meldet. Anschließend konfigurieren Sie eine Bedingung, wählen den Schwellenwert für die Zeilenanzahl aus und legen den Schwellenwert auf 50 fest.

  • Boolesch: 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 Lookback-Window den Schweregrad ERROR haben. Sie erstellen eine Abfrage, die den Prozentsatz der Logeinträge mit dem Schweregrad ERROR berechnet. Die Abfrage schreibt true in die Spalte notify, wenn dieser Prozentsatz 25 % überschreitet. Als Nächstes erstellen Sie eine Bedingung, legen den Typ auf Boolesch fest und konfigurieren die Bedingung so, dass die Spalte notify überwacht wird.

Benachrichtigungsrichtlinien, die das Ergebnis einer SQL-Abfrage überwachen, dürfen nur eine Bedingung haben.

Benachrichtigungsrichtlinien und BigQuery

Damit eine Benachrichtigungsrichtlinie Ihre Logdaten abfragen kann, müssen Sie ein verknüpftes BigQuery-Dataset konfigurieren. Mit verknüpften BigQuery-Datasets kann BigQuery Ihre Logdaten lesen und Sie können BigQuery-Funktionen für die von Ihrer SQL-Abfrage zurückgegebenen Daten ausführen.

Wenn eine Benachrichtigungsrichtlinie eine SQL-Abfrage ausführt, wird diese Abfrage in der BigQuery-Engine im Projekt Google Cloud ausgeführt, in dem die Benachrichtigungsrichtlinie definiert ist. Standardmäßig werden Abfragen, die in der BigQuery-Engine ausgeführt werden, mit On-Demand-Slots ausgeführt. Für On-Demand-Slots und reservierte Slots gelten die BigQuery-Preise.

Sie können auch dedizierte BigQuery-Slot-Reservierungen für Ihr Projekt konfigurieren:

  1. Erstellen Sie eine Reservierung mit dedizierten Slots oder identifizieren Sie eine vorhandene Reservierung.
  2. Reservierungszuweisungen für Ihr Projekt erstellen

Ausgewertete Logeinträge

Damit ein Logeintrag von der SQL-Abfrage einer Benachrichtigungsrichtlinie ausgewertet wird, muss Folgendes zutreffen:

  • Der Empfangszeitstempel des Logeintrags, der angibt, wann der Logeintrag von Cloud Logging empfangen wurde, muss innerhalb des Lookback-Windows der Benachrichtigungsrichtlinie liegen.
  • Der Zeitstempel des Logeintrags, der angibt, wann der Logeintrag generiert wurde, muss innerhalb von 15 Minuten nach dem Lookback-Window liegen.

Ihre SQL-basierte Benachrichtigungsrichtlinie hat beispielsweise ein Lookback-Window von 60 Minuten. Observability 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 Observability Analytics-Oberfläche ausführen, werden alle Logeinträge im ausgewählten Zeitraum anhand des Zeitstempels des Logeintrags ausgewertet.

Lookback-Window und Zeit bis zur Benachrichtigung

Wenn eine Benachrichtigungsrichtlinie so geplant ist, dass ihre Bedingung ausgewertet wird, verzögert Observability Analytics die Ausführung der SQL-Abfrage um fünf Minuten, damit Cloud Logging die im Lookback-Window empfangenen Daten indexieren kann. Wenn die Benachrichtigungsrichtlinie beispielsweise ein Lookback-Window verwendet, das um 14:00 Uhr endet, führt Observability Analytics die SQL-Abfrage erst um 14:05 Uhr aus.

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

Abfragefehler

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

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

  • Die Ausführungszeit der Abfrage beträgt mehr als fünf Minuten.

  • Ein interner Fehler ist aufgetreten.

Eine fehlgeschlagene Abfrage generiert einen Logeintrag, der die ID der Benachrichtigungsrichtlinie und den Fehlerstatus enthält. Sie können eine logbasierte Benachrichtigungsrichtlinie verwenden, um eine Benachrichtigung zu erstellen, wenn ein Fehler protokolliert wird.

Hinweis

In diesem Abschnitt wird davon ausgegangen, dass Sie ein Upgrade Ihres Log-Buckets durchgeführt haben, um Observability Analytics zu verwenden, damit Sie Ihre Logdaten über die Seite „Observability 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 Abfragen von Logansichten und 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-Datenbetrachter (roles/bigquery.dataViewer) für Ihr verknüpftes BigQuery-Dataset.

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

  3. Konfigurieren Sie die Benachrichtigungskanäle, die Sie für Benachrichtigungen verwenden möchten. Aus Redundanzgründen empfehlen wir außerdem, 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:

Console

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

    Zu Observability Analytics

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

  2. Geben Sie auf der Seite Observability Analytics im Abfrageeditor eine SQL-Abfrage ein, mit der Ihre Logdaten abgefragt werden.

    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.

    Observability 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. Der Button Abfrage ausführen ändert sich in In BigQuery ausführen.

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

    Auf der Seite Observability Analytics wird das Fenster SQL-Benachrichtigungsrichtlinie erstellen angezeigt. Ihre Abfrage finden Sie im Abschnitt SQL-Abfrage.

  5. Konfigurieren Sie im Abschnitt 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 den Benachrichtigungsinhalt, z. B. eine benutzerdefinierte Betreffzeile.

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

    3. Klicken Sie auf Weiter.

  7. Prüfen Sie die Benachrichtigungsrichtlinie und erstellen Sie sie dann, indem Sie auf Speichern klicken.

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 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 dann 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.

REST

Verwenden Sie die Methode alertPolicies.create, um Benachrichtigungsrichtlinien programmatisch zu 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.

Legen Sie zum Definieren des Zeitplans 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 einen wahren Wert 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 Schwellenwert erreicht.

Eine vollständige Liste der Felder und Definitionen finden Sie in der Cloud Monitoring API-Dokumentation unter SqlCondition.

Weitere Informationen zur Monitoring API für Benachrichtigungsrichtlinien finden Sie unter Benachrichtigungsrichtlinien über API verwalten.

Beschränkungen

  • Sie können eine Bedingung pro SQL-basierter Benachrichtigungsrichtlinie festlegen.
  • SQL-basierte Benachrichtigungsrichtlinien können keine Analyseansicht abfragen.
  • Abfragen, die von SQL-basierten Benachrichtigungsrichtlinien ausgegeben werden, schlagen fehl, wenn ihre Ausführungszeit fünf Minuten überschreitet.

  • Zwischen der Planung einer Abfrage und der Erstellung einer Benachrichtigung kann es zu einer Verzögerung von bis zu sieben Minuten kommen, zuzüglich der Ausführungszeit der Abfrage.

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

Preise

Informationen zu den Preisen finden Sie in den folgenden Dokumenten:

Nächste Schritte