Ergebnisse von SQL-Abfrage mit einer Benachrichtigungsrichtlinie überwachen

In diesem Dokument wird erläutert, wie Sie eine Benachrichtigungsrichtlinie erstellen, um die Ergebnisse einer Abfrage zu überwachen, die Sie in Observability Analytics ausführen. Diese Abfragen werden in SQL geschrieben und müssen eine Observability-Ansicht mit dem Namen _AllSpans abfragen. Sie werden von der Benachrichtigungsrichtlinie benachrichtigt, wenn das Abfrageergebnis die von Ihnen angegebenen Bedingungen erfüllt.

Benachrichtigungsrichtlinien, die Sie auf der Seite Observability Analytics erstellen, werden in einer BigQuery-Engine ausgeführt. Daher muss auf die abgefragten Daten über ein verknüpftes BigQuery-Dataset zugegriffen werden können.

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

Funktionsweise von Benachrichtigungsrichtlinien

In einer Benachrichtigungsrichtlinie werden die Umstände beschrieben, unter denen Sie benachrichtigt werden möchten, und wie Sie über einen Vorfall benachrichtigt werden möchten. Es gibt einige verschiedene Ansätze, mit denen Sie benachrichtigt werden können, wenn bestimmte Inhalte oder Muster in Ihren Trace-Daten auftreten:

  • Wenn Sie die Anzahl der pro Monat aufgenommenen Cloud Trace-Spans, Ihre Kontingentnutzung und die Rate Ihrer aufgenommenen Spans überwachen möchten, erstellen Sie Benachrichtigungsrichtlinien in Cloud Monitoring. Wenn Sie noch nie eine Benachrichtigungsrichtlinie erstellt haben, finden Sie unter Benachrichtigungsrichtlinien erstellen ausführliche Informationen zur Verwendung der Cloud Monitoring-Konsole.

  • Auf der Seite Trace Explorer können Sie einzelne Traces oder Spans aufrufen oder untersuchen oder Attribute ansehen, die an Spans angehängt sind. Informationen zu dieser Seite finden Sie unter Traces finden und ansehen.

  • Wenn Sie die aggregierte Analyse Ihrer Trace-Daten überwachen möchten, kombinieren Sie Observability Analytics mit Benachrichtigungsrichtlinien. In diesem Fall verwenden Sie SQL-Abfragen, um die Ansicht _AllSpans im Observability-Bucket _Trace abzufragen. Schließlich erstellen Sie die Benachrichtigungsrichtlinie, um die SQL-Abfrageergebnisse zu überwachen. Diese Art von Benachrichtigungsrichtlinie wird als SQL-basierte Benachrichtigungsrichtlinie bezeichnet.

    Weitere Informationen zum Speichern von Trace-Daten finden Sie unter Speicherübersicht.

    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 Ihre Daten abgefragt werden. Die Bedingung definiert auch die Umstände, unter denen das Abfrageergebnis dazu führt, dass in Monitoring ein Vorfall erstellt wird.

  • Der Zeitplan definiert, wie oft die Abfrage der Benachrichtigungsrichtlinie ausgeführt wird. Der Zeitplan definiert auch die Größe des Lookback-Fensters, eines Filters , mit dem nur Daten 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 Lookback-Window ausgeführt, das die letzten 60 Minuten an Daten auswählt.

Benachrichtigungsrichtlinien enthalten auch eine Liste von 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 der Daten, die dazu geführt haben, dass die Bedingung erfüllt wurde, zusammen mit anderen relevanten Informationen. Diese Informationen können Ihnen bei der Fehlerbehebung der Probleme helfen, die den Vorfall verursacht haben. Sie können den Vorfall über die Google Cloud Console aufrufen.

Auswertungstypen für SQL-basierte Benachrichtigungsrichtlinien

Bedingungen, die ein SQL-Abfrageergebnis überwachen, unterstützen zwei Arten der Auswertung:

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

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

Benachrichtigungsrichtlinien, die ein SQL-Abfrageergebnis überwachen, dürfen nur eine Bedingung haben.

Benachrichtigungsrichtlinien und BigQuery

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

Wenn eine Benachrichtigungsrichtlinie eine SQL-Abfrage ausführt, wird diese Abfrage in der BigQuery-Engine in dem Google Cloud Projekt 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-Slotreservierungen für Ihr Projekt konfigurieren:

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

Lookback-Fenster und Vorfallweitergabezeit

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 Daten indexieren kann, die während des Lookback-Fensters empfangen wurden. 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 weitere Minuten dauern, bis der Vorfall im System weitergegeben wird.

Abfragefehler

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, um die abgefragten Trace-Daten zu lesen.

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

Hinweis

In diesem Abschnitt wird davon ausgegangen, dass Sie ein verknüpftes BigQuery Dataset für Ihre Trace-Daten 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 für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abfragen von Trace-Daten und zum Erstellen von SQL-basierten Benachrichtigungsrichtlinien benötigen:

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

    1. Monitoring Service 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. Konfigurieren Sie die Benachrichtigungskanäle, die Sie für Benachrichtigungen zu Vorfällen verwenden möchten. Aus Redundanzgründen 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:

Console

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

    Observability Analytics aufrufen

    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 Trace-Daten abgefragt werden.

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

    Observability Analytics führt die 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 in der Tabelle Ergebnisse auf der Seite Observability Analytics auf  Benachrichtigung erstellen.

    Auf der Seite Observability Analytics wird das Fenster SQL-Benachrichtigungsrichtlinie erstellen angezeigt, in dem Ihre Abfrage im Abschnitt SQL-Abfrage zu sehen ist.

  5. Konfigurieren Sie im Abschnitt Benachrichtigungsbedingung die Bedingung und den Zeitplan der Benachrichtigungsrichtlinie.

  6. Konfigurieren Sie die Benachrichtigungsdetails der Benachrichtigungsrichtlinie.

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

    2. Optional: Fügen Sie Benachrichtigungsrichtlinienlabels 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 google_monitoring_alert_policy, einschließlich condition_sql.

  4. Geben Sie in Cloud Shell terraform apply ein.

Wenn Sie die Benachrichtigungsrichtlinie ändern möchten, nehmen Sie die Ä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.

REST

Verwenden Sie die alertPolicies.create Methode, um Benachrichtigungsrichtlinien programmatisch zu erstellen. Der Condition Typ der Benachrichtigungsrichtlinie muss MonitoringQueryLanguageCondition, eine Instanz von SqlConditionsein. Mit diesem Bedingungstyp können die Bedingungen der Benachrichtigungsrichtlinie mit SQL definiert werden.

Legen Sie einen periodicity-Wert für eines der Felder minutes, hours oder days fest, um den Zeitplan zu definieren. 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 die Bedingung erfüllt ist, wenn eine Zeile einer booleschen Spalte in der Abfrageergebnistabelle einen Wert von „true“ enthält.
  • row_count_test: Konfiguriert die Benachrichtigungsrichtlinie so, dass die 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 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

  • Sie können pro SQL-basierter Benachrichtigungsrichtlinie eine Bedingung haben.
  • 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 dem Zeitpunkt, an dem eine Abfrage geplant wird, und dem Zeitpunkt, an dem ein Vorfall erstellt wird, kann es zu einer Verzögerung von bis zu sieben Minuten zuzüglich der Ausführungszeit der Abfrage kommen.

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

Nächste Schritte