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 Script aus und zeichnet die Testergebnisse und zusätzliche Daten wie die Latenz auf. Wenn Sie benachrichtigt werden möchten, wenn ein Test fehlschlägt, können Sie eine Benachrichtigungsrichtlinie konfigurieren, um die Testergebnisse zu überwachen.

Synthetische Monitore

Ein synthetischer Monitor führt regelmäßig eine zweckgebundene Cloud Run-Funktion der 2. Generation aus, die in Cloud Run bereitgestellt wird. Wenn Sie den synthetischen Monitor erstellen, definieren Sie die Cloud Run-Funktion, die in Node.js geschrieben sein muss, und die Ausführungshäufigkeit. Sie können Ihre Cloud Run-Funktion beispielsweise mit Puppeteer so konfigurieren, dass sie mit einer Webseite interagiert. Sie können Ihre Cloud Run-Funktion auch mithilfe des Axios-Moduls so konfigurieren, dass sie mit einer API interagiert. Sie können auch Ressourcen in einem VPC-Netzwerk testen.

Sie können eine Cloud Run-Funktion mit einem Inline-Editor erstellen oder eine ZIP-Datei hochladen. Wenn Sie den Inline-Editor verwenden, können Sie mit einem bereitgestellten Skelett beginnen. Nachdem Sie einen synthetischen Monitor erstellt haben, verwendet Cloud Monitoring ein Planungssystem, mit dem die Cloud Run-Funktion regelmäßig ausgeführt wird. Sie geben zwar die Region an, in der sich Ihre Cloud Run-Funktion befindet, die Befehle, die die Ausführung auslösen, können jedoch aus jeder Region stammen, die von den Uptime-Check-Servern unterstützt wird. Weitere Informationen finden Sie unter IP-Adressen des Servers für die Verfügbarkeitsdiagnose auflisten.

Sie können eine Benachrichtigungsrichtlinie erstellen, damit Sie benachrichtigt werden, wenn Tests fehlschlagen:

  • Wenn Sie mit der Google Cloud Console einen synthetischen Monitor erstellen, wird standardmäßig eine Benachrichtigungsrichtlinie erstellt. Sie stellen die Benachrichtigungskanäle bereit. Die Standardbenachrichtigungsrichtlinie ist so konfiguriert, dass Sie benachrichtigt werden, wenn zwei oder mehr aufeinanderfolgende Tests fehlschlagen.

  • Wenn Sie einen synthetischen Monitor mit der Cloud Monitoring API erstellen, müssen Sie die Benachrichtigungsrichtlinie zum Überwachen des Messwerttyps uptime_check/check_passed für die Cloud Run-Ressource erstellen, auf der die Cloud Run-Funktion ausgeführt wird.

Hinweise zur Ausführungshäufigkeit

Sie konfigurieren, wie oft Ihre Cloud Run-Funktion ausgeführt wird. Berücksichtigen Sie bei der Festlegung der Ausführungshäufigkeit das Service Level Objective (SLO) für Ihren Dienst. Um potenzielle SLO-Verstöße zu erkennen, müssen Sie die Tests häufig ausführen. Das SLO für Ihren Dienst ist jedoch nicht das einzige Kriterium. Sie müssen auch berücksichtigen, wie sich die Ausführungsrate auf die Auslastung Ihres Dienstes und Ihre Kosten auswirkt. Jede Ausführung belastet Ihren Dienst. Je häufiger Sie Ihre Cloud Run-Funktion ausführen, desto mehr belasten Sie Ihren Dienst. Das standardmäßige Ausführungsintervall für Verfügbarkeitsdiagnosen beträgt eine Minute.

Die Ausführungshäufigkeit bestimmt auch, wie schnell Sie benachrichtigt werden, wenn der Test fehlschlägt. Nach dem zweiten aufeinanderfolgenden Fehlschlag eines Tests wird in Monitoring ein Vorfall erstellt und eine Benachrichtigung gesendet. Wenn die Ausführungshäufigkeit beispielsweise 5 Minuten beträgt, kann es 10 Minuten dauern, bis zwei fehlgeschlagene Tests vorliegen. Sie werden nach dem zweiten fehlgeschlagenen Test benachrichtigt.

Beispielcode für Cloud Run-Funktionen

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

Die generische Vorlage, die Sie beim Erstellen eines synthetischen Monitors in der Google Cloud Console auswählen können, ist so konfiguriert, dass Trace- und Protokolldaten 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 sollten Sie mit Änderungen an der Struktur von Trace- und Protokolldaten rechnen. Daher sollten die erfassten Trace- und Protokolldaten nur zu Debug-Zwecken verwendet werden.

Sie können Ihren eigenen Ansatz zur Erfassung von Trace- und Protokolldaten für ausgehende HTTP-Anfragen implementieren. Ein Beispiel für einen benutzerdefinierten Ansatz finden Sie in der Klasse SyntheticAutoInstrumentation.

Cloud Run-Funktionskonfiguration

Wenn Sie Ihre Cloud Run-Funktion konfigurieren, müssen Sie entweder die Laufzeit, den Build, die Verbindungen und die Sicherheitseinstellungen angeben oder die Standardeinstellungen akzeptieren:

  • 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 für die eingehende Datenübertragung Ihrer Cloud Run-Funktion ist „Alle Zugriffe zulassen“. Sie können diese Einstellung oder eine restriktivere Einstellung verwenden.

    Wenn Sie den gesamten Traffic zulassen, besteht die erste Validierungsphase, die von Cloud Run-Funktionen auf Netzwerkebene durchgeführt wird, immer. In der zweiten Validierungsphase wird ermittelt, ob dem Aufrufer die Berechtigung zum Ausführen der Cloud Run-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 Run-Funktion erteilt. Informationen zum Aufrufen oder Ändern der Einstellungen für die Datenübertragung finden Sie unter Einstellungen für eingehenden Traffic.

Einschränkungen für Cloud Run-Funktionen

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

  • Sie können nur dann Trace- und Protokolldaten für ausgehende HTTP-Anfragen erfassen, wenn Sie die allgemeine Vorlage verwenden.

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

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

  • Wenn Sie die API verwenden, muss im Bereitstellungsbefehl angegeben werden, dass es sich bei der Cloud Run-Funktion um die 2. Generation handelt. Wenn Sie die Google Cloud Console verwenden, wird die Bereitstellung für Sie erledigt. Weitere Informationen finden Sie unter Cloud Run-Funktion bereitstellen.

  • Die Laufzeitumgebung ist auf Node.js beschränkt. Weitere Informationen finden Sie unter Knoten. Folgende 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 Ihren synthetischen Monitor erfasst werden. Informationen zum Aufrufen von Ausführungsergebnissen finden Sie unter Ergebnisse synthetischer Monitore analysieren.

Ausführungsverlauf

Für jeden synthetischen Monitor wird ein Verlauf der Ausführungsergebnisse erfasst. Dazu gehören:

  • Eine Zeitreihe, in der der Erfolg oder Misserfolg von Ausführungen im Zeitverlauf erfasst wird.

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

  • Protokolle mit Informationen zu Ausführungszeiten von synthetischen Monitoren, z. B. Informationen zum Test und Fehlerdetails. Welche Protokolle verfügbar sind, hängt von Ihrer Cloud Run-Funktion ab. Wenn Sie beispielsweise die Mocha-Vorlage verwenden, enthalten die Protokolle Informationen dazu, ob der Test bestanden oder fehlgeschlagen ist, sowie die Testdauer. Der Stacktrace enthält die fehlerhafte Codezeile, die Fehlertypen und die Fehlermeldungen.

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

Messwerte und Protokolle für Cloud Run-Funktionen

Messwerte und Protokolle für Ihre Cloud Run-Funktion Diese Daten, die von Cloud Run-Funktionen erfasst werden, enthalten Informationen zur Anzahl der Ausführungen pro Sekunde, zur Ausführungszeit und zur Arbeitsspeichernutzung Ihrer Funktion.

Anfragelatenz

Latenzdaten für die HTTP-Anfrage, die vom synthetischen Monitor gesendet wird, werden automatisch von Cloud Trace erfasst und gespeichert.

Wenn Sie Trace-, Protokoll- und Latenzdaten für die ausgehenden HTTP-Anfragen Ihres synthetischen Monitors erfassen möchten, müssen Sie die generische Vorlage verwenden. Weitere Informationen finden Sie unter Beispiele für synthetische Monitore.

Hinweise

  1. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen und Ändern synthetischer Monitore in der Google Cloud Console benötigen:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

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

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

    Enable the 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. Es hat einen ähnlichen Namen wie 12345-compute@developer.gserviceaccount.com.

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

    Gehen Sie zu Dienstkonten.

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

    Wenn das Compute Engine-Standarddienstkonto nicht vorhanden ist, klicken Sie auf Dienstkonto erstellen und schließen Sie das Dialogfeld ab.

  4. Dem Compute Engine-Standarddienstkonto oder dem von Ihnen erstellten Dienstkonto muss die Rolle „Bearbeiter“ (roles/editor) zugewiesen sein.

    So rufen Sie die Rollen auf, die Ihrem Dienstkonto zugewiesen sind:

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

      Rufen Sie IAM auf.

      Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM & Admin 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 mit den Berechtigungen der Rolle „Cloud Trace Agent“ (roles/cloudtrace.agent) zugewiesen wurde, erteilen Sie diese Rolle Ihrem Dienstkonto.
  5. Konfigurieren Sie die Benachrichtigungskanäle, über die Sie Benachrichtigungen erhalten möchten. Wir empfehlen, mehrere Benachrichtigungskanäle zu erstellen. Weitere Informationen finden Sie unter Benachrichtigungskanäle erstellen und verwalten und Benachrichtigungskanäle per API erstellen und verwalten.

Synthetischen Monitor erstellen

Console

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

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

    Gehen Sie 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 Run-Funktion aus:

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

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

    • Vorlage zum Prüfen auf fehlerhafte Links: Mit dieser Vorlage können Sie einen URI und eine konfigurierbare Anzahl von Links testen, die unter diesem URI gefunden werden. Informationen zu den Feldern für diesen Prüfer finden Sie unter Link-Checker erstellen.

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

  6. Optional: Aktualisieren Sie die Antwortzeitüberschreitung und die Prüfzeitraum und fügen Sie benutzerdefinierte Labels hinzu.

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

  8. Gehen Sie im Dialogfeld „Cloud Run-Funktion“ so vor:

    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 Abschnitt Laufzeit, Build, Verbindungen und Sicherheitseinstellungen die folgenden Schritte aus:

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

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

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

      • Wenn Sie den generierten Code bearbeiten, eigenen Code eingeben oder die Standardbeispielfunktion laden möchten, wählen Sie Inline-Editor aus. Die Beispielfunktion, die von der zuvor ausgewählten Vorlage abhängt, sendet eine Anfrage an eine bestimmte URL. Sie können die Standardfunktion ändern.

      • Wenn Sie eine ZIP-Datei von Ihrem lokalen System laden möchten, wählen Sie ZIP-Upload aus.

        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.

      • Wenn Sie eine ZIP-Datei aus Cloud Storage laden möchten, wählen Sie ZIP-Datei aus Cloud Storage, den Speicher-Bucket und dann die ZIP-Datei aus, die Sie laden möchten.

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

    4. Klicken Sie auf Funktion anwenden.

  9. Konfigurieren Sie die Benachrichtigungsrichtlinie:

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

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

  10. Klicken Sie auf Erstellen.

    Die von Ihnen definierte Cloud Run-Funktion wird als Cloud Run-Funktion der 2. Generation erstellt und bereitgestellt. Der synthetische Monitor wird erstellt.

gcloud

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

  1. Achten Sie darauf, dass Sie die erforderlichen APIs aktiviert haben, dass Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und dass diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorab.
  2. Cloud Run-Funktion der 2. Generation schreiben und bereitstellen

    So stellen Sie beispielsweise das synthetics-sdk-nodejs-Beispiel 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 Run-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 folgende Schritte aus:

      • Der Wert des Felds FUNCTION_NAME muss innerhalb der Bereitstellungsregion eindeutig sein.

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

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

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

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

      • Legen Sie das Feld --ingress-settings fest, wenn Sie nicht die Standardeinstellung verwenden möchten, bei der der gesamte Traffic zugelassen wird.

      Cloud Run-Funktionen erstellen und stellen Ihre Cloud Run-Funktion bereit. Die Ergebnisse des Google Cloud CLI-Befehls enthalten Informationen zur 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 Run-Funktion bereitstellen.

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

    gcloud functions list
    

    Die Antwort auf diesen Aufruf besteht aus Listeneinträgen, in denen jeweils eine Cloud Run-Funktion aufgeführt ist:

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

    Wenn Sie den vollqualifizierten Namen für eine bestimmte Cloud Run-Funktion ermitteln möchten, führen Sie den Befehl gcloud monitoring uptime describe aus.

  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 vollständig qualifizierten Namen Ihrer Cloud Run-Funktion.
  4. Erstellen Sie eine Benachrichtigungsrichtlinie.

    Aufgrund der Komplexität der Konfiguration von Benachrichtigungsrichtlinien empfehlen wir, die Seite Synthetische Monitore in der Google Cloud Console aufzurufen und die Optionen zum Erstellen einer Benachrichtigungsrichtlinie zu verwenden. Bei diesem Ansatz werden die meisten Felder der Benachrichtigungsrichtlinie für Sie ausgefüllt. Wenn Sie die Benachrichtigungsrichtlinie mit der Google Cloud Console erstellen möchten, klicken Sie auf der Seite Synthetische Monitore auf Richtlinie erstellen.

    Wenn Sie die Google Cloud CLI oder die 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 die Zeitreihe uptime_check/check_passed, die von Ihrem synthetischen Monitor geschrieben wird. Ersetzen Sie CHECK_ID durch die Kennung des synthetischen Monitors, die in den Antwortdaten eines Befehls vom Typ „create“ enthalten ist.

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

API

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

  1. Achten Sie darauf, dass Sie die erforderlichen APIs aktiviert haben, dass Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und dass diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorab.
  2. Cloud Run-Funktion der 2. Generation schreiben und bereitstellen

    So stellen Sie beispielsweise das synthetics-sdk-nodejs-Beispiel 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 Run-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 folgende Schritte aus:

      • Der Wert des Felds FUNCTION_NAME muss innerhalb der Bereitstellungsregion eindeutig sein.

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

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

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

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

      • Legen Sie das Feld --ingress-settings fest, wenn Sie nicht die Standardeinstellung verwenden möchten, bei der der gesamte Traffic zugelassen wird.

      Cloud Run-Funktionen erstellen und stellen Ihre Cloud Run-Funktion bereit. Die Ergebnisse des Google Cloud CLI-Befehls enthalten Informationen zur 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 Run-Funktion bereitstellen.

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

    gcloud functions list
    

    Die Antwort auf diesen Aufruf besteht aus Listeneinträgen, in denen jeweils eine Cloud Run-Funktion aufgeführt ist:

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

    Wenn Sie den vollqualifizierten Namen für eine bestimmte Cloud Run-Funktion ermitteln möchten, führen Sie den Befehl gcloud monitoring uptime describe aus.

  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 Ausprobieren, um den APIs Explorer zu öffnen.
    3. Legen Sie die Werte für die folgenden Felder fest und führen Sie dann 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: Muss den voll qualifizierten Namen Ihrer Cloud Run-Funktion enthalten.

      Bei Erfolg sieht die Antwort des API-Aufrufs 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, die Seite Synthetische Monitore in der Google Cloud Console aufzurufen und die Optionen zum Erstellen einer Benachrichtigungsrichtlinie zu verwenden. Bei diesem Ansatz werden die meisten Felder der Benachrichtigungsrichtlinie für Sie ausgefüllt. Wenn Sie die Benachrichtigungsrichtlinie mit der Google Cloud Console erstellen möchten, klicken Sie auf der Seite Synthetische Monitore auf Richtlinie erstellen.

    Wenn Sie die Google Cloud CLI oder die 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 die Zeitreihe uptime_check/check_passed, die von Ihrem synthetischen Monitor geschrieben wird. Ersetzen Sie CHECK_ID durch die Kennung des synthetischen Monitors, die in den Antwortdaten eines Befehls vom Typ „create“ enthalten ist.

    Informationen zum Erstellen einer Benachrichtigungsrichtlinie finden Sie unter Benachrichtigungsrichtlinien mit 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. Achten Sie darauf, dass Sie die erforderlichen APIs aktiviert haben, dass Ihr Projekt ein Compute Engine-Standarddienstkonto enthält und dass diesem Konto die Rolle „Bearbeiter“ (roles/editor) zugewiesen wurde. Weitere Informationen finden Sie unter Vorab.

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

    Der folgende Code definiert einen Cloud Storage-Bucket am Speicherort US:

    resource "google_storage_bucket" "gcf_source" {
       name = "gcf-v2-source-9948673986912-us"
       location = "US"
       uniform_bucket_level_access = true
    }
    
  3. Bearbeiten Sie Ihre Terraform-Konfigurationsdatei, fügen Sie eine google_storage_bucket_object-Ressource hinzu und wenden Sie 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 Ihrem Speicher-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 Ihre Terraform-Konfigurationsdatei, fügen Sie eine google_cloudfunctions2_function-Ressource hinzu und wenden Sie die Änderungen an.

    Achten Sie darauf, dass in Ihrer google_cloudfunctions2_function-Ressource eine Node.js-Laufzeit und der von synthetischen Monitoren verwendete Einstiegspunkt angegeben sind. 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. Wenn Sie einen synthetischen Monitor erstellen möchten, bearbeiten Sie Ihre Terraform-Konfigurationsdatei, fügen Sie eine google_monitoring_uptime_check_config-Ressource hinzu und wenden Sie 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 beschrieben, wie Sie mit der Google Cloud Console den Benachrichtigungskanal und die Benachrichtigungsrichtlinie erstellen. So wird sichergestellt, dass die Benachrichtigungsrichtlinie nur die Daten überwacht, die von Ihrem synthetischen Monitor generiert werden.

    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 Kanaltyp 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:

        Gehen Sie 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 den synthetischen Monitor, wählen Sie Mehr und dann Benachrichtigungsrichtlinie hinzufügen aus.
      3. Gehen Sie im Dialogfeld zum Bereich 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 hingegen nicht. Abrechenbare Messwerte werden entweder nach der Anzahl der aufgenommenen Byte oder der Anzahl der aufgenommenen Stichproben abgerechnet.

Weitere Informationen zu den Preisen für Cloud Monitoring finden Sie in den folgenden Dokumenten:

Probleme mit synthetischen Monitoren beheben

In diesem Abschnitt finden Sie Informationen zur Fehlerbehebung bei synthetischen Monitoren.

Fehlermeldung nach dem Aktivieren der APIs

Sie öffnen den Erstellungsvorgang 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. Anschließend wird empfohlen, zu warten und die Aktion noch einmal zu versuchen.

Rufen Sie die Seite APIs und Dienste für Ihr Projekt auf, um zu prüfen, ob die API aktiviert ist:

Rufen Sie "APIs & Dienste" auf.

Nachdem Sie bestätigt haben, dass die API aktiviert ist, können Sie mit dem Erstellungsvorgang fortfahren. Die Bedingung wird automatisch aufgehoben, nachdem die API-Aktivierung im Backend übernommen wurde.

Ausgehende HTTP-Anfragen werden nicht gefolgt

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

In Cloud Trace wird nur ein Trace angezeigt.

Um dieses Problem zu beheben, prüfen Sie, ob Ihrem Dienstkonto die Rolle „Cloud Trace Agent“ (roles/cloudtrace.agent) zugewiesen wurde. Die Rolle „Bearbeiter“ (roles/editor) ist ebenfalls ausreichend.

So rufen Sie die Rollen auf, die Ihrem Dienstkonto zugewiesen sind:

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

    Rufen Sie IAM auf.

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

  2. Wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus.
  3. Wenn das Dienstkonto, das von Ihrem synthetischen Monitor verwendet wird, nicht aufgeführt ist oder ihm keine Rolle mit den Berechtigungen der Rolle „Cloud Trace Agent“ (roles/cloudtrace.agent) zugewiesen wurde, weisen Sie Ihrem Dienstkonto diese Rolle 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. Ein Status von In progress bedeutet, dass der synthetische Monitor vor Kurzem erstellt wurde und keine Daten zum Darstellen vorhanden sind oder dass die Funktion nicht bereitgestellt werden konnte.

So ermitteln Sie, ob die Bereitstellung der Funktion fehlgeschlagen ist:

  • Der Name Ihrer Cloud Run-Funktion darf keinen Unterstrich enthalten. Wenn ein Unterstrich vorhanden ist, entfernen Sie ihn und stellen Sie die Cloud Run-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 weist darauf hin, dass die Funktion gelöscht wurde und daher nicht vom synthetischen Monitor ausgeführt werden kann.

  • Öffnen Sie die Seite „Cloud Run-Funktionen“ für die Funktion. Wenn Sie diese Seite von der Seite Details zum synthetischen Monitor aus öffnen möchten, klicken Sie 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
    

    Überprüfen Sie den Funktionscode und beheben Sie die Fehler, die das Erstellen oder Bereitstellen der Funktion verhindern.

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

Warnstatus

Unter Synthetische Monitore wird ein synthetischer Monitor mit dem Status Warning aufgeführt. Der Status Warning bedeutet, dass die Ausführungsergebnisse inkonsistent sind. Dies kann auf ein Designproblem mit Ihrem Test oder auf ein inkonsistentes Verhalten des Testobjekts hinweisen.

Status „Nicht bestanden“

Unter Synthetische Monitore wird ein synthetischer Monitor mit dem Status Failing aufgeführt. Weitere Informationen zum Grund für den Fehler 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 Ihres synthetischen Monitors ändern.

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

  • Wenn bei einem Fehler eine Ausführungszeit von 0ms zurückgegeben wird, ist der Arbeitsspeicher der Cloud Run-Funktion möglicherweise aufgebraucht. Bearbeiten Sie Ihre Cloud Run-Funktion, um diesen Fehler zu beheben. Erhöhen Sie dann den Arbeitsspeicher auf mindestens 2 GiB und legen Sie das CPU-Feld auf 1 fest.

Löschen eines synthetischen Monitors schlägt fehl

Sie verwenden die Cloud Monitoring API, um einen synthetischen Monitor zu löschen. Der API-Aufruf schlägt jedoch fehl und Sie erhalten eine Antwort, die in etwa so aussieht:

{
  "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 dann den synthetischen Monitor.

Nächste Schritte