Synthetischen Monitor erstellen

In diesem Dokument wird beschrieben, wie Sie synthetische Monitore erstellen, um die Verfügbarkeit, Konsistenz und Leistung Ihrer Dienste, Anwendungen, Webseiten und APIs zu testen. Sie stellen Tests für Ihre Anwendung bereit. Der synthetische Monitor führt dieses Skript aus und zeichnet die Testergebnisse sowie zusätzliche Daten wie die Latenz auf. Damit Sie bei fehlgeschlagenem Test benachrichtigt werden, können Sie eine Benachrichtigungsrichtlinie konfigurieren, um die Testergebnisse zu überwachen.

Synthetische Monitore

Ein synthetischer Monitor führt regelmäßig eine Cloud Functions-Funktion der 2. Generation aus, die einem einzelnen Zweck dient und in Cloud Run bereitgestellt wird. Beim Erstellen des synthetischen Monitors definieren Sie die Cloud Functions-Funktion, die in Node.js geschrieben werden muss, sowie die Ausführungshäufigkeit. Beispielsweise können Sie Puppeteer verwenden, um Ihre Cloud Functions-Funktion so zu konfigurieren, dass sie mit einer Webseite interagiert. Mit dem Axios-Modul können Sie Ihre Cloud Functions-Funktion auch für die Interaktion mit einer API konfigurieren. Sie können auch Ressourcen testen, die sich in einem VPC-Netzwerk befinden.

Zum Erstellen der Cloud Functions-Funktion können Sie einen Inline-Editor verwenden oder eine ZIP-Datei hochladen. Wenn Sie sich für den Inline-Editor entscheiden, können Sie mit einem bereitgestellten Raster beginnen. Nachdem Sie einen synthetischen Monitor erstellt haben, verwendet Cloud Monitoring ein Planungssystem, das die regelmäßige Ausführung Ihrer Cloud Functions-Funktion plant. Während Sie die Region angeben, in der sich Ihre Cloud Function befindet, können die Befehle, die die Ausführung auslösen, aus einer beliebigen Region stammen, die von den Servern der Verfügbarkeitsdiagnose unterstützt wird. Weitere Informationen finden Sie unter IP-Adressen des Verfügbarkeitsdiagnose-Servers auflisten.

Sie können eine Benachrichtigungsrichtlinie erstellen, damit Sie über Testfehler informiert werden:

  • Wenn Sie einen synthetischen Monitor mithilfe der Google Cloud Console erstellen, wird standardmäßig eine Benachrichtigungsrichtlinie erstellt. Sie geben die Benachrichtigungskanäle an. Die Standardbenachrichtigungsrichtlinie ist so konfiguriert, dass Sie benachrichtigt werden, wenn zwei oder mehr aufeinanderfolgende Testfehler auftreten.

  • Wenn Sie mit der Cloud Monitoring API einen synthetischen Monitor erstellen, müssen Sie die Benachrichtigungsrichtlinie erstellen, um den Messwerttyp uptime_check/check_passed für die Cloud Run-Ressource zu überwachen, in der Cloud Function ausgeführt wird.

Hinweise zur Ausführungshäufigkeit

Sie konfigurieren, wie oft Ihre Cloud Functions-Funktion ausgeführt wird. Berücksichtigen Sie das Service Level Objective (SLO) für Ihren Dienst, um die Häufigkeit der Ausführungen zu bestimmen. Sie müssen die Tests häufig ausführen, um potenzielle SLO-Verstöße zu erkennen. Das SLO für Ihren Dienst ist jedoch nicht die einzige Überlegung. Außerdem müssen Sie berücksichtigen, wie sich die Ausführungsrate auf die Last Ihres Dienstes und auf Ihre Kosten auswirkt. Jede Ausführung stellt eine Belastung für Ihren Dienst bereit. Je häufiger Sie die Cloud Functions-Funktion ausführen, desto mehr Last wird auf den Dienst angewendet. Das Standardausführungsintervall für Verfügbarkeitsdiagnosen beträgt beispielsweise eine Minute.

Die Ausführungshäufigkeit bestimmt auch, wie schnell Sie benachrichtigt werden, wenn der Test fehlschlägt. Monitoring erstellt einen Vorfall und sendet eine Benachrichtigung, wenn ein Test zum zweiten Mal fehlschlägt. Wenn die Ausführungshäufigkeit beispielsweise 5 Minuten beträgt, kann es 10 Minuten dauern, bis zwei fehlgeschlagene Tests auftreten. Nach dem zweiten Fehlschlagen des Tests werden Sie benachrichtigt.

Beispielcode für Cloud Functions-Funktion

Vorlagen und Beispiele finden Sie unter Beispiele für synthetische Monitore. Sie können diese Beispiele als Ausgangspunkt für Ihre Cloud Functions-Funktion verwenden. Wenn Sie ein erfahrener Entwickler sind, sollten Sie Gemini verwenden, um Code für synthetische Monitorings zu generieren, und so Ihre Entwicklungszeit reduzieren. Die Verwendung von Gemini zum Generieren von Code befindet sich in der öffentlichen Vorschau.

Die generische Vorlage, die Sie auswählen können, wenn Sie mit der Google Cloud Console einen synthetischen Monitor erstellen, ist so konfiguriert, dass Trace- und Logdaten für ausgehende HTTP-Anfragen erfasst werden. Die Lösung nutzt das OpenTelemetry-Modul auto-instrumentation-node und den winston Logger. Aufgrund der Abhängigkeit von Open-Source-Produkten sind Änderungen an der Struktur der Trace- und Logdaten zu erwarten. Daher sollten die erfassten Trace- und Logdaten nur zu Fehlerbehebungszwecken verwendet werden.

Sie können einen eigenen Ansatz implementieren, um Trace- und Logdaten für ausgehende HTTP-Anfragen zu erfassen. Ein Beispiel für einen benutzerdefinierten Ansatz finden Sie in der Klasse SyntheticAutoInstrumentation.

Cloud Function-Konfiguration

Wenn Sie Ihre Cloud Function konfigurieren, müssen Sie entweder die Laufzeit-, Build-, Verbindungs- und Sicherheitseinstellungen angeben oder die Standardeinstellungen übernehmen:

  • Der Standardwert für den zugewiesenen Arbeitsspeicher ist möglicherweise nicht ausreichend. Wir empfehlen, für dieses Feld mindestens 2 GiB festzulegen.

  • Der Standardwert für die Einstellungen der Cloud Function zur eingehenden Datenübertragung ist, den gesamten Traffic zuzulassen. Sie können diese Einstellung oder eine restriktivere Einstellung verwenden.

    Wenn Sie den gesamten Traffic zulassen, ist die erste von Cloud Functions durchgeführte Validierungsphase, die auf Netzwerkebene erfolgt, immer abgeschlossen. In der zweiten Phase der Validierung wird bestimmt, ob dem Aufrufer die Berechtigung zum Ausführen der Cloud Functions-Funktion gewährt wurde. Die Autorisierung hängt von der IAM-Rolle (Identity and Access Management) des Aufrufers ab. Standardmäßig wird Cloud Monitoring die Berechtigung zum Ausführen Ihrer Cloud Functions-Funktion gewährt. Informationen zum Ansehen oder Ändern der Einstellungen für die eingehende Datenübertragung finden Sie unter Einstellungen für eingehenden Traffic.

Einschränkungen für Cloud Function

  • Der Name Ihrer Cloud Functions-Funktion darf keinen Unterstrich enthalten.

  • Sie können Trace- und Logdaten für ausgehende HTTP-Anfragen nur mit der generischen Vorlage erfassen.

  • Es werden nur HTTP-Funktionen unterstützt. Wenn Sie den synthetischen Monitor mit der Google Cloud Console erstellen, wird eine Standardfunktion bereitgestellt, die eine URL abfragt. Die Quelle für die Standardfunktion, die geändert werden kann, ist im Git-Repository generic-synthetic-nodejs verfügbar.

    Informationen zu HTTP-Funktionen finden Sie unter HTTP-Funktionen schreiben.

  • Wenn Sie die API verwenden, muss im Bereitstellungsbefehl angegeben werden, dass die Cloud Functions-Funktion der 2. Generation ist. Wenn Sie die Google Cloud Console verwenden, wird die Bereitstellung für Sie vorgenommen. Weitere Informationen finden Sie unter Cloud Functions-Funktion bereitstellen.

  • Die Laufzeitumgebung ist auf Node.js beschränkt. Weitere Informationen finden Sie unter Knoten. Die folgenden Versionen von Node.js werden unterstützt: 12, 14, 16, 18 und 20.

Von synthetischen Monitoren erfasste Daten

In diesem Abschnitt werden die Daten beschrieben, die für das synthetische Monitoring erfasst werden. Informationen zum Aufrufen von Ausführungsergebnissen finden Sie unter Ergebnisse des synthetischen Monitors ansehen.

Ausführungsverlauf

Für jeden synthetischen Monitor wird ein Verlauf der Ausführungsergebnisse erfasst. Diese Daten umfassen Folgendes:

  • Eine Zeitreihe, die den Erfolg oder Misserfolg von Ausführungen im Zeitverlauf aufzeichnet.

  • Eine Zeitreihe, die die Ausführungsdauer des Codes aufzeichnet. Die Ausführungszeit der Funktion wird nicht aufgezeichnet. Die Latenzdaten werden als uptime_check/request_latency-Zeitachse für die Cloud Run-Ressource geschrieben, in der die Cloud Functions-Funktion ausgeführt wird. Ein Diagramm dieser Daten finden Sie auf der Seite Details zum synthetischen Monitor.

  • Logs, die Informationen zu synthetischen Monitoringausführungen enthalten, z. B. Informationen zu den Test- und Fehlerdetails. Die verfügbaren Logs hängen von Ihrer Cloud Functions-Funktion ab. Wenn Sie beispielsweise die Vorlage Mocha verwenden, enthalten die Logs Informationen darüber, ob der Test bestanden wurde oder fehlgeschlagen ist, sowie die Testdauer. Der Stacktrace enthält, sofern vorhanden, die fehlgeschlagene Codezeile, die Fehlertypen und die Fehlermeldungen.

  • Optional Traces und Logs für ausgehende HTTP-Anfragen. Informationen zum Erfassen dieser Daten finden Sie unter Anfragelatenz.

Messwerte und Logs von Cloud Function

Messwerte und Logs für Ihre Cloud Functions-Funktion. Diese von Cloud Functions erfassten Daten enthalten Informationen zur Anzahl der Ausführungen pro Sekunde, zur Ausführungszeit und zur Speicherauslastung der Funktion.

Anfragelatenz

Latenzdaten für die HTTP-Anfrage des synthetischen Monitors werden automatisch von Cloud Trace erfasst und gespeichert.

Sie müssen die allgemeine Vorlage verwenden, um Trace-, Log- und Latenzdaten für die ausgehenden HTTP-Anfragen Ihres synthetischen Monitors zu erfassen. Weitere Informationen finden Sie unter Beispiele für synthetische Monitore.

Hinweise

  1. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zu gewähren, damit Sie die erforderlichen Berechtigungen zum Ansehen und Ändern von synthetischen Monitoren mithilfe der Google Cloud Console erhalten:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

  2. Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API APIs aktivieren.

    Aktivieren Sie die APIs

  3. Prüfen Sie, ob Ihr Google Cloud-Projekt das Compute Engine-Standarddienstkonto enthält. Dieses Dienstkonto wird erstellt, wenn Sie die Compute Engine API aktivieren, und hat einen Namen wie 12345-compute@developer.gserviceaccount.com.

    Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

    Zur Seite Dienstkonten

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM und Verwaltung ist.

    Wenn das Compute Engine-Standarddienstkonto nicht vorhanden ist, klicken Sie auf Dienstkonto erstellen und füllen Sie das Dialogfeld aus.

  4. Prüfen Sie, ob dem Compute Engine-Standarddienstkonto oder dem von Ihnen erstellten Dienstkonto die Rolle „Bearbeiter“ (roles/editor) gewährt wurde.

    So rufen Sie die Ihrem Dienstkonto zugewiesenen Rollen auf:

    1. Öffnen Sie in der Google Cloud Console die Seite IAM:

      Zu IAM

      Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM und Verwaltung ist.

    2. Wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus.
    3. Wenn das von Ihrem synthetischen Monitor verwendete Dienstkonto nicht aufgeführt ist oder ihm keine Rolle gewährt wurde, die die Berechtigungen der Rolle des Cloud Trace-Agent (roles/cloudtrace.agent) enthält, gewähren Sie diese Rolle Ihrem Dienstkonto.
  5. Konfigurieren Sie die Benachrichtigungskanäle, die Sie zum Empfangen von Benachrichtigungen verwenden möchten. Wir empfehlen, mehrere Arten von Benachrichtigungskanälen zu erstellen. Weitere Informationen finden Sie unter Benachrichtigungskanäle erstellen und verwalten und Benachrichtigungskanäle nach API erstellen und verwalten.

Synthetischen Monitor erstellen

Console

Wenn Sie mit der Google Cloud Console einen synthetischen Monitor erstellen, wird eine neue Cloud Functions-Funktion (2. Generation) bereitgestellt und der Monitor für diese Funktion erstellt. Sie können keinen synthetischen Monitor erstellen, der eine vorhandene Cloud Functions-Funktion überwacht.

  1. Prüfen Sie, ob die erforderlichen APIs aktiviert sind, Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorbereitung.
  2. Rufen Sie in der Google Cloud Console die Seite  Synthetisches Monitoring auf:

    Zu Synthetisches Monitoring

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

  3. Wählen Sie Synthetischen Monitor erstellen aus.
  4. Wählen Sie die Vorlage für Ihre Cloud Functions-Funktion aus:

    • Benutzerdefinierter synthetischer Monitor: Verwenden Sie diese Vorlage, wenn Sie Log- oder Trace-Daten für ausgehende HTTP-Anfragen erfassen möchten.

    • Synthetischer Mocha-Monitor: Verwenden Sie diese Vorlage, wenn Sie Mocha-Testsuiten schreiben.

    • Prüfung fehlerhafter Links: Verwenden Sie diese Vorlage, um einen URI und eine konfigurierbare Anzahl von Links unter diesem URI zu testen. Informationen zu den Feldern für diese Prüfung finden Sie unter Prüfung auf fehlerhaften Links erstellen.

  5. Geben Sie einen Namen für den Monitor ein.

  6. Optional: Aktualisieren Sie die Werte für Antwortzeitlimit und Prüfhäufigkeit und fügen Sie benutzerdefinierte Labels hinzu.

  7. Führen Sie einen der folgenden Schritte aus:

  8. Führen Sie im Dialogfeld Cloud Function die folgenden Schritte aus:

    1. Geben Sie einen Anzeigenamen ein und wählen Sie eine Region aus. Namen dürfen innerhalb einer Region nur einmal vorkommen.

    2. Führen Sie im Bereich Laufzeit, Build, Verbindungen und Sicherheitseinstellungen die folgenden Schritte aus:

      • Überprüfen Sie die Standardeinstellungen und aktualisieren Sie sie bei Bedarf.

      • Wählen Sie im Feld Laufzeitdienstkonto ein Dienstkonto aus.

      1. Bearbeiten Sie den generierten Code oder schreiben oder laden Sie Code für Ihre Cloud Functions-Funktion hoch:

        • Wählen Sie Inline Editor aus, um generierten Code zu bearbeiten, Ihren eigenen Code einzugeben oder die Standard-Beispielfunktion zu laden. Die Beispielfunktion, die von der zuvor ausgewählten Vorlage abhängig ist, sendet eine Anfrage an eine bestimmte URL. Sie können die Standardfunktion ändern.

        • Wählen Sie ZIP-Upload aus, um eine ZIP-Datei aus Ihrem lokalen System zu laden.

        Wenn Sie eine ZIP-Datei von Ihrem lokalen System hochladen, müssen Sie auch einen Cloud Storage-Bucket für die ZIP-Datei angeben. Wenn Sie keinen geeigneten Cloud Storage-Bucket haben, erstellen Sie einen.

        • Wählen Sie zum Laden einer ZIP-Datei aus Cloud Storage die Option ZIP from Cloud Storage und dann den Storage-Bucket aus. Wählen Sie dann die zu ladende ZIP-Datei aus.

        Sie können eine Cloud Functions-Funktion auch über die Cloud Functions-Seiten in der Google Cloud Console erstellen. Wenn Sie einen synthetischen Monitor erstellen möchten, der eine Kopie dieser Cloud Functions-Funktion überwacht, rufen Sie den Tab Quelle auf und klicken Sie auf ZIP-Datei herunterladen. Anschließend können Sie die ZIP-Datei hochladen.

      2. Klicken Sie auf Funktion anwenden.

  9. Konfigurieren Sie die Benachrichtigungsrichtlinie:

    1. Optional: Aktualisieren Sie den Namen der Benachrichtigungsrichtlinie und die Fehlerdauer, bevor Benachrichtigungen gesendet werden.

    2. Fügen Sie die Benachrichtigungskanäle hinzu.

  10. Klicken Sie auf Erstellen.

    Die von Ihnen definierte Cloud Functions-Funktion wird als 2. Generation erstellt und bereitgestellt. Außerdem wird der synthetische Monitor erstellt.

gcloud

Wenn Sie mit der Google Cloud CLI oder der Cloud Monitoring API einen synthetischen Monitor erstellen, übergeben Sie den Funktionsnamen an den API-Aufruf. Daher können Sie nur einen synthetischen Monitor erstellen, der eine vorhandene Cloud Functions-Funktion überwacht.

  1. Prüfen Sie, ob die erforderlichen APIs aktiviert sind, Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorbereitung.
  2. Cloud Function der 2. Generation schreiben und bereitstellen

    So stellen Sie beispielsweise das Beispiel synthetics-sdk-nodejs im Repository Google Cloud/synthetics-sdk-nodejs bereit:

    1. Klonen Sie das Repository und rufen Sie den Speicherort des Quellcodes auf:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Stellen Sie die Cloud Functions-Funktion mit dem Befehl gcloud functions deploy bereit:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      Führen Sie im Befehl gcloud functions deploy die folgenden Schritte aus:

      • Achten Sie darauf, dass der Wert des Felds FUNCTION_NAME innerhalb der Bereitstellungsregion eindeutig ist.

      • Fügen Sie das Flag --gen2 ein und legen Sie die Bereitstellungsregion fest.

      • Legen Sie das Feld --entry-point so fest:

        • Mokka: SyntheticMochaSuite
        • Kein Mocha: SyntheticFunction.
      • Setzen Sie das Feld --runtime auf nodejs18.

      • Fügen Sie das Flag --trigger-http hinzu.

      • Legen Sie das Feld --ingress-settings fest, wenn Sie nicht die Standardeinstellung verwenden möchten, die den gesamten Traffic zulässt.

      Cloud Functions erstellt Ihre Cloud Functions-Funktion und stellt sie dann bereit. Die Ergebnisse des Google Cloud CLI-Befehls enthalten Informationen über die Funktion, einschließlich ihres voll qualifizierten Namens:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      Weitere Informationen zum Bereitstellen einer Funktion finden Sie unter Cloud Functions-Funktion bereitstellen.

    Verwenden Sie den Befehl gcloud functions list, um die Cloud Functions-Funktionen in Ihrem Google Cloud-Projekt aufzulisten:

    gcloud functions list
    

    Auf diesen Aufruf wird als Antwort eine Liste mit Einträgen ausgegeben, in denen jeweils eine Cloud Functions-Funktion aufgeführt ist:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    Führen Sie den Befehl gcloud monitoring uptime describe aus, um den voll qualifizierten Namen für eine bestimmte Cloud Functions-Funktion zu ermitteln.

  3. Führen Sie den Befehl gcloud monitoring uptime create aus, um den synthetischen Monitor zu erstellen:

    gcloud monitoring uptime create DISPLAY_NAME --synthetic-target=TARGET
    

    Führen Sie vor dem Ausführen des vorherigen Befehls die folgenden Schritte aus:

    • Ersetzen Sie DISPLAY_NAME durch den Namen des synthetischen Monitors.
    • Ersetzen Sie TARGET durch den voll qualifizierten Namen Ihrer Cloud Functions-Funktion.
  4. Erstellen Sie eine Benachrichtigungsrichtlinie.

    Aufgrund der Komplexität der Konfiguration von Benachrichtigungsrichtlinien empfehlen wir, in der Google Cloud Console die Seite Synthetische Monitore aufzurufen und mit den Optionen eine Benachrichtigungsrichtlinie zu erstellen. Bei diesem Ansatz werden die meisten Felder für Benachrichtigungsrichtlinien automatisch ausgefüllt. Klicken Sie zum Erstellen der Benachrichtigungsrichtlinie mit der Google Cloud Console auf der Seite Synthetische Monitore auf Richtlinie erstellen.

    Wenn Sie die Google Cloud CLI oder Cloud Monitoring API verwenden möchten, konfigurieren Sie den Filter der Bedingung so:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    Die Bedingung überwacht uptime_check/check_passed-Zeitachsen, die von Ihrem synthetischen Monitor geschrieben werden. Achten Sie darauf, CHECK_ID durch die ID des synthetischen Monitors zu ersetzen, die in den Antwortdaten eines Erstellungsbefehls enthalten ist.

    Informationen zum Erstellen einer Benachrichtigungsrichtlinie finden Sie unter Benachrichtigungsrichtlinien mithilfe der API erstellen.

API

Wenn Sie mit der Google Cloud CLI oder der Cloud Monitoring API einen synthetischen Monitor erstellen, übergeben Sie den Funktionsnamen an den API-Aufruf. Daher können Sie nur einen synthetischen Monitor erstellen, der eine vorhandene Cloud Functions-Funktion überwacht.

  1. Prüfen Sie, ob die erforderlichen APIs aktiviert sind, Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorbereitung.
  2. Cloud Function der 2. Generation schreiben und bereitstellen

    So stellen Sie beispielsweise das Beispiel synthetics-sdk-nodejs im Repository Google Cloud/synthetics-sdk-nodejs bereit:

    1. Klonen Sie das Repository und rufen Sie den Speicherort des Quellcodes auf:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Stellen Sie die Cloud Functions-Funktion mit dem Befehl gcloud functions deploy bereit:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      Führen Sie im Befehl gcloud functions deploy die folgenden Schritte aus:

      • Achten Sie darauf, dass der Wert des Felds FUNCTION_NAME innerhalb der Bereitstellungsregion eindeutig ist.

      • Fügen Sie das Flag --gen2 ein und legen Sie die Bereitstellungsregion fest.

      • Legen Sie das Feld --entry-point so fest:

        • Mokka: SyntheticMochaSuite
        • Kein Mocha: SyntheticFunction.
      • Setzen Sie das Feld --runtime auf nodejs18.

      • Fügen Sie das Flag --trigger-http hinzu.

      • Legen Sie das Feld --ingress-settings fest, wenn Sie nicht die Standardeinstellung verwenden möchten, die den gesamten Traffic zulässt.

      Cloud Functions erstellt Ihre Cloud Functions-Funktion und stellt sie dann bereit. Die Ergebnisse des Google Cloud CLI-Befehls enthalten Informationen über die Funktion, einschließlich ihres voll qualifizierten Namens:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      Weitere Informationen zum Bereitstellen einer Funktion finden Sie unter Cloud Functions-Funktion bereitstellen.

    Verwenden Sie den Befehl gcloud functions list, um die Cloud Functions-Funktionen in Ihrem Google Cloud-Projekt aufzulisten:

    gcloud functions list
    

    Auf diesen Aufruf wird als Antwort eine Liste mit Einträgen ausgegeben, in denen jeweils eine Cloud Functions-Funktion aufgeführt ist:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    Führen Sie den Befehl gcloud monitoring uptime describe aus, um den voll qualifizierten Namen für eine bestimmte Cloud Functions-Funktion zu ermitteln.

  3. So erstellen Sie einen synthetischen Monitor:

    1. Klicken Sie auf projects.uptimeCheckConfigs.create, um die API-Referenzseite für die Methode zu öffnen.
    2. Klicken Sie auf Jetzt testen, um APIs Explorer zu öffnen.
    3. Legen Sie die folgenden Felder fest und führen Sie den Befehl aus.

      • Übergeordnetes Feld: projects/PROJECT_ID.
      • Geben Sie im Anfragetext Folgendes an:

        • displayName: Legen Sie den Anzeigenamen für den synthetischen Monitor fest.
        • syntheticMonitor: Geben Sie den voll qualifizierten Namen Ihrer Cloud Functions-Funktion an.

      Bei Erfolg sieht die Antwort auf den API-Aufruf in etwa so aus:

      {
      "name": "projects/myproject/uptimeCheckConfigs/17272586127463315332",
      "displayName": "MyMonitor",
      ...
      "syntheticMonitor": {
       "cloudFunctionV2": {
          "name": "projects/myproject/locations/us-west2/functions/function-1",
          "cloudRunRevision": {
          "type": "cloud_run_revision",
          "labels": {
             "project_id": "myproject",
             "configuration_name": "",
             "location": "us-west2",
             "revision_name": "",
             "service_name": "function-1"
          }
          }
       }
      }
      }
      
  4. Erstellen Sie eine Benachrichtigungsrichtlinie.

    Aufgrund der Komplexität der Konfiguration von Benachrichtigungsrichtlinien empfehlen wir, in der Google Cloud Console die Seite Synthetische Monitore aufzurufen und mit den Optionen eine Benachrichtigungsrichtlinie zu erstellen. Bei diesem Ansatz werden die meisten Felder für Benachrichtigungsrichtlinien automatisch ausgefüllt. Klicken Sie zum Erstellen der Benachrichtigungsrichtlinie mit der Google Cloud Console auf der Seite Synthetische Monitore auf Richtlinie erstellen.

    Wenn Sie die Google Cloud CLI oder Cloud Monitoring API verwenden möchten, konfigurieren Sie den Filter der Bedingung so:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    Die Bedingung überwacht uptime_check/check_passed-Zeitachsen, die von Ihrem synthetischen Monitor geschrieben werden. Achten Sie darauf, CHECK_ID durch die ID des synthetischen Monitors zu ersetzen, die in den Antwortdaten eines Erstellungsbefehls enthalten ist.

    Informationen zum Erstellen einer Benachrichtigungsrichtlinie finden Sie unter Benachrichtigungsrichtlinien mithilfe der API erstellen.

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle. Weitere Informationen finden Sie in der Anbieterreferenzdokumentation zu Terraform.

So erstellen Sie einen synthetischen Monitor und eine Benachrichtigungsrichtlinie für diese Prüfung:

  1. Prüfen Sie, ob die erforderlichen APIs aktiviert sind, Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorbereitung.

  2. Bearbeiten Sie die Terraform-Konfigurationsdatei, fügen Sie eine google_storage_bucket-Ressource hinzu und wenden Sie dann die Änderungen an.

    Mit dem folgenden Code wird ein Cloud Storage-Bucket am Standort US definiert:

    resource "google_storage_bucket" "gcf_source" {
       name = "gcf-v2-source-9948673986912-us"
       location = "US"
       uniform_bucket_level_access = true
    }
    
  3. Bearbeiten Sie die Terraform-Konfigurationsdatei, fügen Sie eine google_storage_bucket_object-Ressource hinzu und wenden Sie dann die Änderungen an.

    Die Ressource gibt den Namen des Objekts in Ihrem Bucket und den Speicherort der ZIP-Datei auf Ihrem lokalen System an. Wenn Sie beispielsweise den folgenden Code anwenden, wird dem Storage-Bucket eine Datei mit dem Namen example-function.zip hinzugefügt:

    resource "google_storage_bucket_object" "object" {
       name = "example-function.zip"
       bucket = google_storage_bucket.gcf_source.name
       source = "generic-synthetic-node.js.zip"
    }
    
  4. Bearbeiten Sie die Terraform-Konfigurationsdatei, fügen Sie eine google_cloudfunctions2_function-Ressource hinzu und wenden Sie dann die Änderungen an.

    Achten Sie darauf, dass Ihre google_cloudfunctions2_function-Ressource eine Node.js-Laufzeit und den von synthetischen Monitoren verwendeten Einstiegspunkt angibt. Wenn Sie beispielsweise den folgenden Code anwenden, wird eine Funktion mit dem Namen sm-central1 bereitgestellt:

    resource "google_cloudfunctions2_function" "central1" {
       name = "sm-central1"
       location = "us-central1"
    
       build_config {
          runtime = "nodejs20"
          entry_point = "SyntheticFunction"
          source {
                storage_source {
                   bucket = google_storage_bucket.gcf_source.name
                   object = google_storage_bucket_object.object.name
                }
          }
       }
    
       service_config {
          max_instance_count = 1
          available_memory = "256Mi"
          timeout_seconds  = 60
       }
    }
    
  5. Zum Erstellen eines synthetischen Monitors bearbeiten Sie die Terraform-Konfigurationsdatei, fügen eine google_monitoring_uptime_check_config-Ressource hinzu und wenden dann die Änderungen an.

    Geben Sie für diese Ressource den Block synthetic_monitor an:

    resource "google_monitoring_uptime_check_config" "synthetic" {
       display_name = "sm-central1"
       timeout = "30s"
    
       synthetic_monitor {
          cloud_function_v2 {
                name = google_cloudfunctions2_function.central1.id
          }
       }
    }
    
  6. Optional: Erstellen Sie einen Benachrichtigungskanal und eine Benachrichtigungsrichtlinie.

    In den folgenden Schritten wird die Google Cloud Console verwendet, um den Benachrichtigungskanal und die Benachrichtigungsrichtlinie zu erstellen. Dadurch wird sichergestellt, dass die Benachrichtigungsrichtlinie nur die von Ihrem synthetischen Monitor generierten Daten überwacht.

    1. So erstellen Sie einen Benachrichtigungskanal:

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

        Zu Benachrichtigungen

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

      2. Wählen Sie Benachrichtigungskanäle verwalten aus.
      3. Rufen Sie den Typ des Kanals auf, den Sie hinzufügen möchten, klicken Sie auf Hinzufügen und füllen Sie das Dialogfeld aus.
    2. So erstellen Sie eine Benachrichtigungsrichtlinie:

      1. Rufen Sie in der Google Cloud Console die Seite  Synthetisches Monitoring auf:

        Zu Synthetisches Monitoring

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

      2. Suchen Sie Ihren synthetischen Monitor, wählen Sie Mehr und dann Benachrichtigungsrichtlinie hinzufügen aus.
      3. Wechseln Sie im Dialogfeld zum Abschnitt Benachrichtigungen und Name, maximieren Sie Benachrichtigungskanäle und treffen Sie Ihre Auswahl.
      4. Geben Sie einen Namen für die Benachrichtigungsrichtlinie ein und klicken Sie dann auf Richtlinie erstellen.

Preise

Im Allgemeinen sind Cloud Monitoring-Systemmesswerte kostenlos, Messwerte von externen Systemen, Agents oder Anwendungen jedoch nicht. Abrechenbare Messwerte werden entweder nach der Anzahl der Byte oder der Anzahl der aufgenommenen Stichproben berechnet.

Weitere Informationen zu Cloud Monitoring-Preisen finden Sie in den folgenden Dokumenten:

Probleme mit synthetischen Monitoren beheben

Dieser Abschnitt enthält Informationen zur Fehlerbehebung bei synthetischen Monitoren.

Fehlermeldung nach dem Aktivieren der APIs

Sie öffnen den Erstellungsablauf für einen synthetischen Monitor und werden aufgefordert, mindestens eine API zu aktivieren. Nachdem Sie die APIs aktiviert haben, wird eine Meldung wie die folgende angezeigt:

An error occurred during fetching available regions: Cloud Functions API has
not been used in project PROJECT_ID before or it is disabled.

In der Fehlermeldung wird empfohlen, zu prüfen, ob die API aktiviert ist. Danach wird empfohlen, zu warten und die Aktion noch einmal auszuführen.

Wenn Sie prüfen möchten, ob die API aktiviert ist, rufen Sie die Seite APIs und Dienste für Ihr Projekt auf:

Rufen Sie "APIs & Dienste" auf.

Nachdem Sie sich vergewissert haben, dass die API aktiviert ist, können Sie mit dem Erstellen fortfahren. Die Bedingung wird automatisch aufgelöst, wenn die API-Aktivierung über das Back-End weitergeleitet wurde.

Ausgehende HTTP-Anfragen werden nicht verfolgt

Sie konfigurieren den synthetischen Monitor so, dass Trace-Daten für HTTP-Ausgabeanfragen erfasst werden. Ihre Trace-Daten zeigen nur einen Span, ähnlich wie im folgenden Screenshot:

Cloud Trace zeigt nur einen Trace an.

Prüfen Sie zum Beheben dieses Problems, ob Ihrem Dienstkonto die Rolle des Cloud Trace-Agents (roles/cloudtrace.agent) gewährt wurde. Außerdem reicht die Rolle „Editor“ (roles/editor) aus.

So rufen Sie die Ihrem Dienstkonto zugewiesenen Rollen auf:

  1. Öffnen Sie in der Google Cloud Console die Seite IAM:

    Zu IAM

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM und Verwaltung ist.

  2. Wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus.
  3. Wenn das von Ihrem synthetischen Monitor verwendete Dienstkonto nicht aufgeführt ist oder ihm keine Rolle gewährt wurde, die die Berechtigungen der Rolle des Cloud Trace-Agent (roles/cloudtrace.agent) enthält, weisen Sie diese Rolle Ihrem Dienstkonto zu.

    Wenn Sie den Namen Ihres Dienstkontos nicht kennen, wählen Sie im Navigationsmenü Dienstkonten aus.

Status „In Bearbeitung“

Auf der Seite Synthetische Monitore wird ein synthetischer Monitor mit dem Status In progress aufgeführt. Der Status In progress bedeutet, dass der synthetische Monitor vor Kurzem erstellt wurde und keine Daten zum Anzeigen vorhanden sind oder die Funktion nicht bereitgestellt werden konnte.

Prüfen Sie so, ob die Funktion nicht bereitgestellt werden konnte:

  • Achten Sie darauf, dass der Name der Cloud Functions-Funktion keinen Unterstrich enthält. Wenn ein Unterstrich vorhanden ist, entfernen Sie ihn und stellen Sie die Cloud Functions-Funktion noch einmal bereit.

  • Öffnen Sie die Seite Details zum synthetischen Monitor für den synthetischen Monitor.

    Wenn die folgende Meldung angezeigt wird, löschen Sie den synthetischen Monitor.

    Cloud Function not found for this Synthetic monitor. Please confirm it exists or delete this monitor.
    

    Die Fehlermeldung zeigt an, dass die Funktion gelöscht wurde und der synthetische Monitor die Funktion daher nicht ausführen kann.

  • Öffnen Sie die Cloud Functions-Seite für die Funktion. Klicken Sie zum Öffnen dieser Seite über die Seite Details zum synthetischen Monitor auf Code und dann auf den Funktionsnamen.

    Wenn eine Meldung wie die folgende angezeigt wird, konnte die Funktion nicht bereitgestellt werden.

    This function has failed to deploy and will not work correctly. Please edit and redeploy
    

    Prüfen Sie den Funktionscode und beheben Sie die Fehler, die das Erstellen oder Bereitstellen der Funktion verhindern, um diesen Fehler zu beheben.

Wenn Sie einen synthetischen Monitor erstellen, kann es einige Minuten dauern, bis die Funktion bereitgestellt und ausgeführt wird.

Warnungsstatus

Der Bereich Synthetic Monitors listet einen synthetischen Monitor mit dem Status Warning auf. Der Status Warning bedeutet, dass die Ausführungsergebnisse inkonsistent sind. Dies kann auf ein Designproblem bei Ihrem Test hindeuten oder auf ein inkonsistentes Verhalten hinweisen.

„Nicht bestanden“

Unter Synthetic Monitors wird ein synthetischer Monitor mit dem Status Failing aufgelistet. Weitere Informationen zum Grund des Fehlers finden Sie im letzten Ausführungsverlauf.

  • Wenn die Fehlermeldung Request failed with status code 429 angezeigt wird, hat das Ziel der HTTP-Anfrage den Befehl abgelehnt. Um diesen Fehler zu beheben, müssen Sie das Ziel des synthetischen Monitors ändern.

    Der Endpunkt https://www.google.com lehnt Anfragen von synthetischen Monitoren ab.

  • Wenn der Fehler eine Ausführungszeit von 0ms zurückgibt, hat die Cloud Functions-Funktion möglicherweise nicht genügend Arbeitsspeicher. Bearbeiten Sie die Cloud Functions-Funktion, erhöhen Sie den Arbeitsspeicher auf mindestens 2 GiB und setzen Sie das CPU-Feld auf 1, um diesen Fehler zu beheben.

Löschen schlägt bei einem synthetischen Monitor fehl

Sie verwenden die Cloud Monitoring API, um einen synthetischen Monitor zu löschen, aber der API-Aufruf schlägt mit einer Antwort wie der folgenden fehl:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: Cannot delete check 1228258045726183344. One or more alerting policies is using it.Delete the alerting policy with id projects/myproject/alertPolicies/16594654141392976482 and any other policies using this uptime check and try again."
      }
    ]
  }
}

Löschen Sie zum Beheben des Fehlers die Benachrichtigungsrichtlinien, die die Ergebnisse des synthetischen Monitors überwachen, und löschen Sie dann den synthetischen Monitor.

Nächste Schritte