Crea un monitoraggio sintetico

Questo documento descrive come creare monitor sintetici per testare il disponibilità, coerenza e prestazioni di servizi, applicazioni pagine web e API. Fornisci i test per la tua applicazione. Il monitor sintetico esegue lo script e registra i risultati dei test e altri dati come la latenza. Per ricevere una notifica quando un test non va a buon fine, puoi configurare un criterio di avviso per monitorare i risultati del test.

Informazioni sui monitoraggi sintetici

Un monitor sintetico esegue periodicamente una funzione Cloud Run di 2ª gen. monouso di cui è stato eseguito il deployment su Cloud Run. Quando crei il monitoraggio sintetico, definisci la funzione Cloud Run, che deve essere scritta in Node.js, e la frequenza di esecuzione. Ad esempio, puoi configurare la funzione Cloud Run per interagire con una pagina web utilizzando Puppeteer. Puoi anche configurare la funzione Cloud Run in modo che interagisca con un'API utilizzando il modulo Axios. Potresti anche voler per testare le risorse che si trovano all'interno di una rete VPC.

Per creare la funzione Cloud Run, puoi utilizzare un editor in linea o caricare un file ZIP. Se scegli di utilizzare l'editor in linea, puoi iniziare con uno scheletro fornito. Dopo aver creato un monitoraggio sintetico, Cloud Monitoring utilizza un sistema di pianificazione che pianifica l'esecuzione periodica della tua funzione Cloud Run. Anche se specifichi la regione in cui esiste la funzione Cloud Run, i comandi che attivano l'esecuzione possono provenire da qualsiasi regione supportata dai server di controllo dell'uptime. Per saperne di più, consulta Elenco degli indirizzi IP dei server di controllo di uptime.

Puoi creare un criterio di avviso per ricevere una notifica quando vengono errori del test:

  • Quando crei un monitoraggio sintetico utilizzando la console Google Cloud, il comportamento predefinito è creare un criterio di avviso. Tu fornisci i canali di notifica. Il criterio di avviso predefinito è configurato su ti invia una notifica quando si verificano due o più errori di test consecutivi.

  • Quando crei un monitoraggio sintetico utilizzando l'API Cloud Monitoring, devi creare il criterio di avviso per monitorare uptime_check/check_passed per il tipo di metrica Risorsa Cloud Run corrispondente alla funzione Cloud Run in esecuzione.

Considerazioni sulla frequenza di esecuzione

Configura la frequenza di esecuzione della funzione Cloud Run. A determinare la frequenza delle esecuzioni, considera obiettivo del livello del servizio (SLO) per il tuo servizio. Per rilevare potenziali violazioni dello SLO, devi eseguire i test di frequente. Tuttavia, lo SLO per il tuo servizio non è l'unica considerazione. Devi anche considerare come la frequenza delle esecuzioni si traduce in un carico al tuo servizio e ai tuoi costi. Ogni esecuzione fornisce un carico sul tuo servizio, in modo che più spesso esegui la funzione Cloud Run, maggiore è il carico che applichi al tuo servizio. Come riferimento, l'intervallo di esecuzione predefinito per i controlli di uptime è di un minuto.

La frequenza di esecuzione determina anche la rapidità con cui puoi ricevere una notifica quando il test non va a buon fine. Il monitoraggio apre un incidente e invia una notifica dopo il secondo fallimento consecutivo di un test. Ad esempio, se la frequenza di esecuzione è di 5 minuti, possono essere necessari 10 minuti prima che si verifichino due test non riusciti. Riceverai una notifica dopo il secondo fallimento del test.

Codice campione della funzione Cloud Run

Per modelli e esempi, vedi Esempi per i monitoraggi sintetici. Puoi utilizzare questi esempi come punto di partenza per la tua funzione Cloud Run. Se sei uno sviluppatore esperto, considera l'idea usando Gemini per generare codice per i monitoraggi sintetici riducendo i tempi di sviluppo. L'utilizzo di Gemini per generare codice è in anteprima pubblica.

Il modello generico, che puoi selezionare quando crei un monitoraggio sintetico utilizzando la console Google Cloud, è configurato per raccogliere dati di traccia e log per le richieste HTTP in uscita. La soluzione sfrutta il modulo auto-instrumentation-node di OpenTelemetry e il logger Winston. A causa della dipendenza dai prodotti open source, è normale che la struttura dei dati delle tracce e dei log subisca delle modifiche. Pertanto, i dati delle tracce e dei log raccolti devono essere utilizzati solo a scopo di debug.

Puoi implementare il tuo approccio per raccogliere i dati delle tracce e dei log per le richieste HTTP in uscita. Per un esempio di approccio personalizzato, visualizza il corso SyntheticAutoInstrumentation.

Configurazione della funzione Cloud Run

Quando configuri la funzione Cloud Run, devi specificare le impostazioni di runtime, build, connessioni e sicurezza oppure accettare quelle predefinite:

  • Il valore predefinito per la memoria allocata potrebbe non essere sufficiente. Me ti consigliamo di impostare questo campo su un valore pari ad almeno 2 GiB.

  • Il valore predefinito per le impostazioni di Data Transfer in entrata del tuo La funzione Cloud Run è consentire tutto il traffico. Puoi utilizzare questa impostazione o un'impostazione più restrittiva.

    Quando consenti tutto il traffico, la prima fase di convalida eseguita dalle funzioni Cloud Run, che viene eseguita a livello di rete, supera sempre. La seconda fase di convalida determina se all'utente chiamante è stata concessa l'autorizzazione per eseguire la funzione Cloud Run. L'autorizzazione dipende dal Ruolo IAM (Identity and Access Management). Per impostazione predefinita, a Cloud Monitoring viene concessa l'autorizzazione nella funzione Cloud Run. Per informazioni su come visualizzare o modificare le impostazioni di trasferimento dei dati in entrata, vedi Impostazioni di Ingress.

Limitazioni delle funzioni di Cloud Run

  • Il nome della funzione Cloud Run non deve contenere un trattino basso.

  • Puoi raccogliere i dati delle tracce e dei log per le richieste HTTP in uscita solo se utilizzi il modello generico.

  • Sono supportate solo le funzioni HTTP. Se utilizzi Google Cloud per creare il monitoraggio sintetico, ti verrà fornito una funzione predefinita che esegue una query su un URL. Il codice sorgente della funzione predefinita, che può essere modificata, è disponibile nel repository Git generic-synthetic-nodejs.

    Per informazioni sulle funzioni HTTP, consulta Scrivere funzioni HTTP.

  • Se utilizzi l'API, il comando deployment deve specificare che La funzione Cloud Run è di seconda generazione. Se utilizzi Google Cloud, a questo punto il deployment viene gestito per te. Per maggiori informazioni consulta Eseguire il deployment di una funzione Cloud Run.

  • L'ambiente di runtime è limitato a Node.js. Per informazioni, consulta Nodo. Le seguenti versioni di Node.js 12, 14, 16, 18 e 20.

Dati raccolti dai monitoraggi sintetici

Questa sezione descrive i dati raccolti per il monitor sintetico. Per informazioni su come visualizzare i risultati di esecuzione, consulta Esplorare i risultati dei monitor sintetici.

Cronologia esecuzioni

Per ogni monitoraggio sintetico, viene raccolta una cronologia dei risultati di esecuzione. Questi dati includono:

  • Una serie temporale che registra l'esito positivo o negativo delle esecuzioni nel tempo.

  • Una serie temporale che registra la durata di esecuzione del codice. La di esecuzione della funzione non viene registrato. I dati sulla latenza vengono scritti come serie temporali uptime_check/request_latency per la risorsa Cloud Run su cui è in esecuzione la funzione Cloud Run. Un grafico di questi dati è disponibile nella pagina Dettagli del monitoraggio sintetico.

  • Log che contengono informazioni su esecuzioni di monitor sintetici, come informazioni dettagli su test ed errori. I log disponibili dipendono dalla funzione Cloud Run. Ad esempio, se utilizzi il modello Mocha, i log includono informazioni sull'esito del test (superato o non superato) e sulla sua durata. L'analisi dello stack, se inclusa, elenca la riga di codice che non è riuscita, i tipi di errore e i messaggi di errore.

  • Facoltativamente, tracce e log per le richieste HTTP in uscita. Per informazioni su come raccogliere questi dati, consulta l'articolo Latenza della richiesta.

Metriche e log delle funzioni Cloud Run

Metriche e log per la funzione Cloud Run. Questi dati, raccolti dalle funzioni Cloud Run, includono informazioni sul numero di esecuzioni al secondo, sul tempo di esecuzione e sull'utilizzo della memoria della funzione.

Latenza di richiesta

I dati sulla latenza per la richiesta HTTP effettuata dal monitor sintetico vengono raccolti e archiviati automaticamente da Cloud Trace.

Per raccogliere dati su tracce, log e latenza per le richieste HTTP in uscita effettuate dal monitoraggio sintetico, devi utilizzare il modello generico. Per ulteriori informazioni, consulta Samples for synthetic monitors (Samples per i monitoraggi sintetici).

Prima di iniziare

  1. Per ottenere le autorizzazioni necessarie per visualizzare e modificare i monitor sintetici utilizzando la console Google Cloud, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto:

    Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

  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. Verifica che il progetto Google Cloud contenga il Compute Engine predefinito l'account di servizio. Questo account di servizio viene creato quando attivi l'API Compute Engine e ha un nome simile a 12345-compute@developer.gserviceaccount.com.

    Nella console Google Cloud, vai alla pagina Account di servizio:

    Vai ad Account di servizio

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e Console di amministrazione.

    Se l'account di servizio Compute Engine predefinito non esiste, fai clic su Crea account di servizio e completa la finestra di dialogo.

  4. Assicurati che l'account di servizio Compute Engine predefinito o creato dall'account di servizio ha ricevuto il ruolo di Editor (roles/editor).

    Per visualizzare i ruoli concessi al tuo account di servizio:

    1. Nella console Google Cloud, vai alla pagina IAM:

      Vai a IAM

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e Console di amministrazione.

    2. Seleziona Includi concessioni di ruoli fornite da Google.
    3. Se l'account di servizio utilizzato dal monitor sintetico non è elencato o se non gli è stato concesso un ruolo che includa le autorizzazioni nel ruolo di Agente Cloud Trace (roles/cloudtrace.agent), concedi questo ruolo al tuo account di servizio.
  5. Configura i canali di notifica che vuoi utilizzare per ricevere le notifiche. Ti consigliamo di creare più tipi di canali di notifica. Per saperne di più, consulta Creare e gestire i canali di notifica e Creare e gestire i canali di notifica tramite API.

Crea un monitoraggio sintetico

Console

Quando crei un monitoraggio sintetico utilizzando la console Google Cloud, viene Funzione Cloud Run (2ª generazione.) viene eseguito il deployment e viene creato il monitoraggio per quella funzione Cloud Run. Non puoi creare un monitoraggio sintetico per monitorare un funzione Cloud Run esistente.

  1. Assicurati di avere attivato le API richieste, che il progetto contiene un account di servizio Compute Engine predefinito e che questo account abbia ha ricevuto il ruolo di Editor (roles/editor). Per ulteriori informazioni, vedi Prima di iniziare.
  2. Nella console Google Cloud, vai alla Pagina Monitoraggio sintetico:

    Vai a Monitoraggio sintetico

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  3. Seleziona Crea monitoraggio sintetico.
  4. Seleziona il modello per la tua funzione Cloud Run:

    • Monitoraggio sintetico personalizzato: utilizza questo modello quando vuoi raccogliere registrare i dati o i dati di traccia per le richieste HTTP in uscita.

    • Monitor sintetico Mocha: utilizza questo modello quando scrivi Suite di test Mocha.

    • Strumento di controllo dei link non funzionanti: utilizza questo modello per testare un URI e un numero configurabile di link trovati in quell'URI. Per informazioni sui campi di questo controllo, consulta Creare un controllo dei link interrotti.

  5. Inserisci un nome per il monitoraggio.

  6. (Facoltativo) Aggiorna il Timeout risposta, la Frequenza di controllo e aggiungere etichette definite dall'utente.

  7. Esegui una di queste operazioni:

  8. Nella finestra di dialogo della funzione Cloud Run, procedi nel seguente modo:

    1. Inserisci un nome visualizzato e seleziona una regione. I nomi devono essere univoci all'interno di una regione.

    2. Nella sezione Impostazioni di runtime, build, connessioni e sicurezza, segui questi passaggi:

      • Rivedi le impostazioni predefinite e aggiornale quando necessario.

      • Nel campo Service account di runtime, seleziona un account di servizio.

    3. Modifica il codice generato oppure scrivi o carica il codice per il tuo Funzione Cloud Run:

      • Per modificare il codice generato, inserire il tuo codice o caricare la funzione di esempio predefinita, selezionare Editor incorporato. La funzione di esempio, che dipende dal modello selezionato in precedenza, invia una richiesta a un URL specifico. Puoi modificare la funzione predefinita.

      • Per caricare un file ZIP dal tuo sistema locale, seleziona Caricamento ZIP.

        Se carichi un file ZIP dal tuo sistema locale, devi anche specificare un bucket Cloud Storage per il file ZIP. Se non hai un bucket Cloud Storage appropriato, creane uno.

      • Per caricare un file ZIP da Cloud Storage, seleziona ZIP di Cloud Storage, seleziona il bucket di archiviazione e poi seleziona il file ZIP da caricare.

        Puoi anche creare una funzione Cloud Run utilizzando le pagine delle funzioni Cloud Run nella console Google Cloud. Per creare un sintetico che monitora copia di quella funzione Cloud Run, vai alla scheda Origine e fai clic su Scarica zip. Dopodiché puoi caricare il file ZIP.

    4. Fai clic su Applica funzione.

  9. Configura il criterio di avviso:

    1. (Facoltativo) Aggiorna il nome del criterio di avviso e la durata dell'errore prima dell'invio delle notifiche.

    2. Aggiungi i canali di notifica.

  10. Fai clic su Crea.

    La funzione Cloud Run che hai definito viene creata e ne viene eseguito il deployment È stato creato il monitoraggio sintetico di 2ª generazione.

gcloud

Quando crei un monitor sintetico utilizzando Google Cloud CLI o l'API Cloud Monitoring, passi il nome della funzione alla chiamata dell'API. Pertanto, puoi creare solo un monitor sintetico che monitora una funzione Cloud Run esistente.

  1. Assicurati di avere attivato le API richieste, che il progetto contiene un account di servizio Compute Engine predefinito e che questo account abbia ha ricevuto il ruolo di Editor (roles/editor). Per ulteriori informazioni, vedi Prima di iniziare.
  2. Scrivi ed esegui il deployment della funzione Cloud Run 2ª gen.

    Ad esempio, per eseguire il deployment dell'esempio synthetics-sdk-nodejs nel repository Google Cloud/synthetics-sdk-nodejs, segui questi passaggi:

    1. Clona il repository e vai alla posizione del codice sorgente:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Esegui il deployment della funzione Cloud Run utilizzando Comando gcloud functions deploy:

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

      Nel comando gcloud functions deploy, segui questi passaggi:

      • Assicurati che il valore del campo FUNCTION_NAME sia univoco nella regione di implementazione.

      • Includi il flag --gen2 e imposta la regione di deployment.

      • Imposta il campo --entry-point come segue:

        • Mocha: SyntheticMochaSuite
        • Non Mocha: SyntheticFunction.
      • Imposta il campo --runtime su nodejs18.

      • Includi il flag --trigger-http.

      • Imposta il campo --ingress-settings quando non vuoi utilizzare l'impostazione predefinita, che consente tutto il traffico.

      Le funzioni Cloud Run creano la funzione Cloud Run e ne eseguono il deployment. I risultati del comando Google Cloud CLI includono informazioni sulla incluso il nome completo:

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

      Per ulteriori informazioni sul deployment di una funzione, consulta Esegui il deployment di una funzione Cloud Run.

    Per elencare le funzioni di Cloud Run nel tuo progetto Google Cloud, utilizza la classe Comando gcloud functions list:

    gcloud functions list
    

    La risposta a questa chiamata è una voce di elenco, ogni voce elenca una Funzione Cloud Run:

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

    Per trovare il nome completo per una funzione Cloud Run specifica, esegui il comando gcloud monitoring uptime describe.

  3. Per creare il monitoraggio sintetico, esegui il comando gcloud monitoring uptime create:

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

    Prima di eseguire il comando precedente, segui questi passaggi:

    • Sostituisci DISPLAY_NAME con il nome del monitoraggio sintetico.
    • Sostituisci TARGET con il nome completo del tuo nella funzione Cloud Run.
  4. Crea un criterio di avviso.

    A causa della complessità della configurazione dei criteri di avviso, ti consigliamo di andare alla pagina Monitori sintetici nella console Google Cloud e di utilizzare le opzioni per creare un criterio di avviso. Con questo approccio, la maggior parte dei campi criterio di avviso compilati automaticamente. Per creare il criterio di avviso utilizzando la console Google Cloud, fai clic su Crea criterio nella pagina Monitoraggi sintetici.

    Se prevedi di utilizzare Google Cloud CLI o l'API Cloud Monitoring, configura il filtro della condizione nel seguente modo:

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

    La condizione monitora le serie temporali uptime_check/check_passed scritte dal tuo monitoraggio sintetico. Assicurati di sostituire CHECK_ID con l'identificatore del monitoraggio sintetico e che è incluso nei dati di risposta di un kubectl create.

    Per informazioni su come creare un criterio di avviso, consulta Creare criteri di avviso utilizzando l'API.

API

Quando crei un monitoraggio sintetico utilizzando Google Cloud CLI o l'API Cloud Monitoring, passi il il nome della funzione alla chiamata API. Pertanto, puoi creare solo un monitor sintetico che monitora una funzione Cloud Run esistente.

  1. Assicurati di avere attivato le API richieste, che il progetto contiene un account di servizio Compute Engine predefinito e che questo account abbia ha ricevuto il ruolo di Editor (roles/editor). Per ulteriori informazioni, vedi Prima di iniziare.
  2. Scrivi ed esegui il deployment dei tuoi 2ª generazione nella funzione Cloud Run.

    Ad esempio, per eseguire il deployment del sample synthetics-sdk-nodejs nel repository Google Cloud/synthetics-sdk-nodejs:

    1. Clona il repository e vai alla posizione del codice sorgente:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Esegui il deployment della funzione Cloud Run utilizzando il comando gcloud functions deploy:

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

      Nel comando gcloud functions deploy, svolgi le seguenti operazioni:

      • Assicurati che il valore del campo FUNCTION_NAME sia univoco nella regione di implementazione.

      • Includi il flag --gen2 e imposta la regione di deployment.

      • Imposta il campo --entry-point come segue:

        • Mocha: SyntheticMochaSuite
        • Non Mocha: SyntheticFunction.
      • Imposta il campo --runtime su nodejs18.

      • Includi il flag --trigger-http.

      • Imposta il campo --ingress-settings quando non vuoi utilizzare l'impostazione predefinita, che consente tutto il traffico.

      Le funzioni Cloud Run creano la funzione Cloud Run e ne eseguono il deployment. I risultati del comando Google Cloud CLI includono informazioni sulla incluso il nome completo:

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

      Per ulteriori informazioni sul deployment di una funzione, consulta Esegui il deployment di una funzione Cloud Run.

    Per elencare le funzioni Cloud Run nel tuo progetto Google Cloud, utilizza il comando gcloud functions list:

    gcloud functions list
    

    La risposta a questa chiamata è una voce di elenco, ogni voce elenca una Funzione Cloud Run:

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

    Per trovare il nome completo per una funzione Cloud Run specifica, esegui il comando gcloud monitoring uptime describe.

  3. Per creare un monitoraggio sintetico:

    1. Fai clic su projects.uptimeCheckConfigs.create. per aprire la pagina di riferimento dell'API per il metodo.
    2. Fai clic su Prova per aprire Explorer API.
    3. Imposta i campi seguenti ed esegui il comando.

      • Campo principale: projects/PROJECT_ID.
      • Nel corpo della richiesta, specifica quanto segue:

        • displayName: imposta il nome visualizzato del monitor sintetico.
        • syntheticMonitor: imposta il nome completo del tuo nella funzione Cloud Run.

      In caso di esito positivo, la risposta della chiamata all'API è simile alla seguente:

      {
      "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. Crea un criterio di avviso.

    Data la complessità del criterio di avviso configurazione, ti consigliamo di passare ai monitor sintetici nella console Google Cloud e utilizzare le opzioni per creare criterio di avviso. Con questo approccio, la maggior parte dei campi dei criteri di avviso viene compilata automaticamente. Per creare il criterio di avviso utilizzando il comando Nella console Google Cloud, fai clic su Crea criterio dalla Pagina Monitor sintetici.

    Se prevedi di utilizzare Google Cloud CLI o l'API Cloud Monitoring, configura il filtro della condizione come segue:

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

    La condizione monitora le serie temporali uptime_check/check_passed scritte dal tuo monitoraggio sintetico. Assicurati di sostituire CHECK_ID con l'identificatore del monitor sintetico, incluso nei dati di risposta di un comando create.

    Per informazioni su come creare un criterio di avviso, consulta Crea criteri di avviso utilizzando l'API.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base. Per ulteriori informazioni, consulta Terraform documentazione di riferimento del fornitore.

Per creare un monitoraggio sintetico e un criterio di avviso per monitorare il controllo, segui questi passaggi:

  1. Assicurati di avere attivato le API richieste, che il progetto contiene un account di servizio Compute Engine predefinito e che questo account abbia ha ricevuto il ruolo di Editor (roles/editor). Per ulteriori informazioni, vedi Prima di iniziare.

  2. Modifica il file di configurazione Terraform e aggiungi una risorsa google_storage_bucket, quindi applica le modifiche.

    Il codice seguente definisce un bucket Cloud Storage nella località US:

    resource "google_storage_bucket" "gcf_source" {
       name = "gcf-v2-source-9948673986912-us"
       location = "US"
       uniform_bucket_level_access = true
    }
    
  3. Modifica il file di configurazione di Terraform e aggiungi un google_storage_bucket_object risorsa e applicare le modifiche.

    La risorsa specifica il nome dell'oggetto nel bucket e la posizione del file ZIP sul sistema locale. Ad esempio, quando applichi il seguente codice, un file con il nome example-function.zip viene aggiunto al tuo bucket di archiviazione:

    resource "google_storage_bucket_object" "object" {
       name = "example-function.zip"
       bucket = google_storage_bucket.gcf_source.name
       source = "generic-synthetic-node.js.zip"
    }
    
  4. Modifica il file di configurazione Terraform e aggiungi una risorsa google_cloudfunctions2_function, quindi applica le modifiche.

    Assicurati che la risorsa google_cloudfunctions2_function specifichi un runtime Node.js e il punto di contatto utilizzato dai monitor sintetici. Ad esempio, quando applichi il seguente codice, viene eseguita il deployment di una funzione con il nome sm-central1:

    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. Per creare un monitoraggio sintetico, modifica il file di configurazione di Terraform e aggiungi un elemento google_monitoring_uptime_check_config risorsa e applicare le modifiche.

    Per questa risorsa, specifica il blocco synthetic_monitor:

    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. (Facoltativo) Crea un canale di notifica e un criterio di avviso.

    Nei passaggi seguenti viene utilizzata la console Google Cloud per creare la notifica il canale e il criterio di avviso. Questo approccio garantisce che il criterio di avviso esegue il monitoraggio solo dei dati generati dal monitoraggio sintetico.

    1. Per creare un canale di notifica:

      1. Nella console Google Cloud, vai alla pagina  Avvisi:

        Vai ad Avvisi

        Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

      2. Seleziona Gestisci canali di notifica.
      3. Vai al tipo di canale che vuoi aggiungere, fai clic su Aggiungi e quindi completa la finestra di dialogo.
    2. Per creare un criterio di avviso, segui questi passaggi:

      1. Nella console Google Cloud, vai alla pagina  Monitoraggio sintetico:

        Vai a Monitoraggio sintetico

        Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

      2. Individua il monitoraggio sintetico, seleziona Altro, e seleziona Aggiungi criterio di avviso.
      3. Nella finestra di dialogo, vai alla sezione Notifiche e nome, espandi Canali di notifica ed effettua le tue selezioni.
      4. Assegna un nome al criterio di avviso e fai clic su Crea criterio.

Prezzi

In generale, le metriche di sistema di Cloud Monitoring sono gratuite, mentre quelle provenienti da sistemi, agenti o applicazioni esterni non lo sono. Le metriche fatturabili sono e fatturato in base al numero di byte o al numero di campioni importati.

Per ulteriori informazioni sui prezzi di Cloud Monitoring, consulta i seguenti documenti:

Risoluzione dei problemi dei monitoraggi sintetici

Questa sezione fornisce informazioni che puoi utilizzare per risolvere i problemi relativi ai monitor sintetici.

Messaggio di errore dopo l'abilitazione delle API

Apri il flusso di creazione per un monitoraggio sintetico e ti viene chiesto di abilitarlo almeno un'API. Dopo aver abilitato le API, viene visualizzato un messaggio simile al seguente è visualizzato:

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

Il messaggio di errore consiglia di verificare che l'API sia attivata e poi di attendere e riprovare l'azione.

Per verificare che l'API sia abilitata, vai alla pagina API e servizi del tuo progetto:

Vai ad API e servizi

Dopo aver verificato che l'API sia abilitata, puoi continuare con il flusso di creazione. La condizione si risolve automaticamente dopo che l'API l'abilitazione si propaga attraverso il backend.

Le richieste HTTP in uscita non vengono monitorate

Configura il monitoraggio sintetico per raccogliere i dati di traccia per l'output richieste HTTP. I dati della traccia mostrano un solo intervallo, simile allo screenshot seguente:

Cloud Trace mostra una sola traccia.

Per risolvere la situazione, assicurati che al tuo account di servizio sia stato concesso il ruolo Agente Cloud Trace (roles/cloudtrace.agent). È sufficiente anche un ruolo Editor (roles/editor).

Per visualizzare i ruoli concessi al tuo account di servizio:

  1. Nella console Google Cloud, vai alla pagina IAM:

    Vai a IAM

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e Console di amministrazione.

  2. Seleziona Includi concessioni di ruoli fornite da Google.
  3. Se l'account di servizio utilizzato dal monitoraggio sintetico non è in elenco o se non dispone di un ruolo che include le autorizzazioni nel ruolo l'agente Cloud Trace (roles/cloudtrace.agent), quindi concedi questo ruolo al tuo l'account di servizio.

    Se non conosci il nome del tuo account di servizio, nella barra di navigazione seleziona Account di servizio.

Stato In corso

Nella pagina Monitor sintetici è elencato un monitor sintetico con stato In progress. Uno stato In progress indica che il monitoraggio sintetico è stato creato di recente e non ci sono dati da visualizzare oppure che il deployment della funzione non è riuscito.

Per determinare se il deployment della funzione non è riuscito, prova quanto segue:

  • Assicurati che il nome della funzione Cloud Run non sia contiene un trattino basso. Se è presente un trattino basso, rimuovilo. ed eseguire nuovamente il deployment della funzione Cloud Run.

  • Apri la pagina Dettagli del monitor sintetico del monitor sintetico.

    Se viene visualizzato il seguente messaggio, elimina il monitoraggio sintetico.

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

    Il messaggio di errore indica che la funzione è stata eliminata e quindi il monitor sintetico non è in grado di eseguirla.

  • Apri la pagina delle funzioni di Cloud Run per la funzione. Per aprire questa pagina Dalla pagina Dettagli monitoraggio sintetico, fai clic su Codice e poi fai clic sul nome della funzione.

    Se viene visualizzato un messaggio simile al seguente, il deployment della funzione non è andato a buon fine.

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

    Per risolvere l'errore, esamina il codice della funzione e correggi gli errori che impediscono la creazione o il deployment della funzione.

Quando crei un monitor sintetico, il deployment e l'esecuzione della funzione potrebbero richiedere diversi minuti.

Stato avviso

In Monitoraggi sintetici è elencato un monitoraggio sintetico con stato Warning. Uno stato Warning indica che i risultati dell'esecuzione non sono coerenti. Ciò potrebbe indicare un problema di progettazione del test o che l'elemento in fase di test ha un comportamento incoerente.

Stato di errore

Monitor sintetici elenca un monitoraggio sintetico con lo stato Failing. Per ulteriori informazioni sul motivo dell'errore, visualizza la cronologia di esecuzione più recente.

  • Se viene visualizzato il messaggio di errore Request failed with status code 429, la destinazione della richiesta HTTP ha rifiutato il comando. Per risolvere questo errore, devi modificare il target del monitor sintetico.

    L'endpoint https://www.google.com rifiuta le richieste effettuate da monitor sintetici.

  • Se l'errore restituisce un tempo di esecuzione pari a 0ms, l'errore È possibile che la funzione Cloud Run stia esaurendo la memoria. Per risolvere questo errore, modifica la funzione Cloud Run, quindi aumenta la memoria ad almeno 2 GiB e imposta il campo CPU su 1.

L'eliminazione non riesce per un monitoraggio sintetico

Puoi utilizzare l'API Cloud Monitoring per eliminare un monitoraggio sintetico, ma l'API non riesce e restituisce una risposta simile alla seguente:

{
  "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."
      }
    ]
  }
}

Per risolvere l'errore, elimina i criteri di avviso monitorare i risultati del monitoraggio sintetico ed eliminare il monitoraggio sintetico.

Passaggi successivi