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 Observability-Ansicht mit dem Namen _AllSpans abfragen. Sie werden benachrichtigt, wenn das Abfrageergebnis die von Ihnen angegebenen Bedingungen erfüllt.
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.
Allgemeine Informationen zu Loganalysen finden Sie unter Traces mit Loganalysen 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 verschiedene Möglichkeiten, sich benachrichtigen zu lassen, wenn Inhalte oder Muster in Ihren Tracedaten erscheinen:
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 bisher noch keine Benachrichtigungsrichtlinie erstellt haben, finden Sie ausführliche Informationen zur Verwendung der Cloud Monitoring-Konsole unter Benachrichtigungsrichtlinien erstellen.
Auf der Seite Trace Explorer können Sie einzelne Traces oder Spans aufrufen und untersuchen oder Attribute ansehen, die mit Spans verknüpft sind. Informationen zu dieser Seite finden Sie unter Traces finden und ansehen.
Wenn Sie die aggregierte Analyse Ihrer Trace-Daten im Blick behalten möchten, kombinieren Sie Log Analytics mit Benachrichtigungsrichtlinien. In diesem Szenario verwenden Sie SQL-Abfragen, um die Ansicht
_AllSpansim Observability-Bucket mit dem Namen_Traceabzufragen. Zum Schluss erstellen Sie die Benachrichtigungsrichtlinie, um die Ergebnisse der SQL-Abfrage 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 durch das Abfrageergebnis ein Vorfall in Monitoring 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 Daten ausgewählt werden, die seit der letzten Auswertung der Abfrage eingegangen sind. Wenn Sie den Zeitplan beispielsweise auf 60 Minuten festlegen, wird die Abfrage alle 60 Minuten mit einem Rückblickzeitraum ausgeführt, in dem die Daten 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 Console aufrufen.
Auswertungstypen für SQL-basierte Benachrichtigungsrichtlinien
Bedingungen, die das Ergebnis einer SQL-Abfrage überwachen, unterstützen zwei Arten der Auswertung:
Grenzwert für Zeilenanzahl: Die Bedingung ist erfüllt, wenn die Anzahl der Zeilen im Abfrageergebnis größer als, gleich oder kleiner als ein Grenzwert ist.
Boolesch: Die Bedingung ist erfüllt, wenn eine bestimmte boolesche Spalte in der Abfrageergebnistabelle eine Zeile mit dem Wert
trueenthält.
Benachrichtigungsrichtlinien, die das Ergebnis einer SQL-Abfrage überwachen, dürfen nur eine Bedingung haben.
Benachrichtigungsrichtlinien und BigQuery
Damit eine Benachrichtigungsrichtlinie Ihre Tracedaten abfragen kann, müssen Sie ein verknüpftes BigQuery-Dataset konfigurieren. Mit verknüpften Datasets kann BigQuery Ihre Tracedaten 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 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:
- Erstellen Sie eine Reservierung mit dedizierten Slots oder identifizieren Sie eine vorhandene Reservierung.
- Reservierungszuweisungen für Ihr Projekt erstellen
Lookback-Window und Weiterleitungszeit für Vorfälle
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. So hat Cloud Logging Zeit, die während des Rückblickszeitraums empfangenen Daten zu indexieren. Wenn die Benachrichtigungsrichtlinie beispielsweise ein Rückblickszeitfenster verwendet, das um 14:00 Uhr endet, wird die SQL-Abfrage erst um 14:05 Uhr von Loganalysen 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 Tracedaten.
Die Ausführungszeit der Abfrage überschreitet fünf Minuten.
Ein interner Fehler tritt auf.
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 Tracedaten haben.
Führen Sie die folgenden Schritte aus, bevor Sie eine SQL-basierte Benachrichtigungsrichtlinie erstellen:
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abfragen von Tracedaten und zum Erstellen von SQL-basierten Benachrichtigungsrichtlinien benötigen:
-
Trace-Daten abfragen:
Cloud Trace User (
roles/cloudtrace.user) -
SQL-basierte Benachrichtigungsrichtlinien erstellen:
-
Monitoring Editor (
roles/monitoring.editor) -
Logging SqlAlertWriter (
roles/logging.sqlAlertWriter)
-
Monitoring Editor (
-
Trace-Daten abfragen:
Cloud Trace User (
Prüfen Sie, ob das Monitoring-Dienstkonto vorhanden ist und die folgenden Rollen hat:
- Monitoring-Dienst-Agent (
roles/monitoring.notificationServiceAgent) für Ihr Projekt. - 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.
- Monitoring-Dienst-Agent (
- 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:
Google Cloud Console
-
Rufen Sie in der Google Cloud -Console die Seite manage_searchLoganalysen auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis mit der Zwischenüberschrift Logging aus.
Geben Sie auf der Seite Loganalysen im Abfrageeditor eine SQL-Abfrage ein, mit der Ihre Tracedaten abgefragt werden.
Klicken Sie in der Symbolleiste auf In BigQuery ausführen.
Log 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 settings Abfrage-Engine auswählen und dann auf BigQuery. Der Button 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. Dort sehen Sie Ihre Abfrage im Bereich SQL-Abfrage.
Konfigurieren Sie im Bereich Benachrichtigungsbedingung die Bedingung und den Zeitplan Ihrer Benachrichtigungsrichtlinie.
Konfigurieren Sie die Benachrichtigungsdetails Ihrer Benachrichtigungsrichtlinie.
Fügen Sie Benachrichtigungskanäle hinzu und konfigurieren Sie Benachrichtigungsinhalte wie eine benutzerdefinierte Betreffzeile.
Optional: Fügen Sie Labels für Benachrichtigungsrichtlinien und Dokumentation hinzu.
Klicken Sie auf Weiter.
Überprüfen Sie die Benachrichtigungsrichtlinie und klicken Sie dann auf Speichern, um sie zu erstellen.
Cloud Monitoring API
Verwenden Sie die Methode alertPolicies.create, um Benachrichtigungsrichtlinien programmatisch zu erstellen. Der Typ Condition Ihrer Benachrichtigungsrichtlinie muss MonitoringQueryLanguageCondition 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 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
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.
Wechseln Sie in Cloud Shell zu dem Verzeichnis, das Ihre Terraform-Konfiguration enthält.
Konfigurieren Sie in Ihrer Terraform-Konfiguration eine Instanz der Ressource google_monitoring_alert_policy, einschließlich condition_sql.
Geben Sie in Cloud Shell
terraform applyein.
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 Analyseansicht 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 plus der Abfrageausführungszeit kommen.
Eine vollständige Liste der Grenzwerte für Benachrichtigungsrichtlinien finden Sie unter Monitoring-Grenzwerte.