Crea un monitoraggio sintetico

Questo documento descrive come creare monitor sintetici per testare disponibilità, coerenza e prestazioni di servizi, applicazioni, pagine web e API. Fornisci i test per la tua applicazione. Il monitoraggio sintetico esegue lo script e registra i risultati dei test e dati aggiuntivi 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 monitoraggio sintetico esegue periodicamente una funzione Cloud Functions di 2a generazione a uso specifico di cui viene eseguito il deployment in Cloud Run. Quando crei il monitoraggio sintetico, definisci la Cloud Function, che deve essere scritta in Node.js, e la frequenza di esecuzione. Ad esempio, puoi configurare la Cloud Function per interagire con una pagina web utilizzando Puppeteer. Puoi anche configurare la Cloud Function in modo che interagisca con un'API utilizzando il modulo Axios. Potresti anche voler testare le risorse che si trovano all'interno di una rete VPC.

Per creare la Cloud Function, puoi usare 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 Cloud Function. Mentre specifichi la regione in cui esiste la tua Cloud Function, i comandi che attivano l'esecuzione possono provenire da qualsiasi regione supportata dai server di controllo di uptime. Per maggiori informazioni, consulta Elencare gli indirizzi IP dei server per il controllo di uptime.

Puoi creare un criterio di avviso per ricevere una notifica in caso di errori dei test:

  • Quando crei un monitoraggio sintetico utilizzando la console Google Cloud, il comportamento predefinito prevede la creazione di un criterio di avviso. Devi fornire i canali di notifica. Il criterio di avviso predefinito è configurato per ricevere una notifica in caso di 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 il tipo di metrica uptime_check/check_passed per la risorsa Cloud Run su cui è in esecuzione la funzione Cloud Function.

Considerazioni sulla frequenza di esecuzione

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

La frequenza di esecuzione determina anche la velocità con cui puoi ricevere una notifica quando il test non riesce. Monitoring apre un incidente e invia una notifica dopo il secondo errore consecutivo di un test. Ad esempio, se la frequenza di esecuzione è 5 minuti, potrebbero essere necessari 10 minuti prima che vengano eseguiti due test non riusciti. Riceverai una notifica dopo il secondo test non riuscito.

Codice campione della Cloud Function

Per i modelli e gli esempi, consulta Esempi di monitoraggi sintetici. Puoi utilizzare questi esempi come punto di partenza per la tua Cloud Function. Se sei uno sviluppatore esperto, valuta la possibilità di utilizzare Gemini per generare codice per i monitoraggi sintetici, riducendo così i tempi di sviluppo. L'utilizzo di Gemini per generare il 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 di log per le richieste HTTP in uscita. La soluzione sfrutta il modulo auto-instrumentation-node di OpenTelemetry e il logger di Windowsston. A causa della dipendenza dai prodotti open source, dovresti aspettarti cambiamenti nella struttura dei dati di traccia e di log. Pertanto, i dati di traccia e di log raccolti devono essere utilizzati solo a scopo di debug.

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

Configurazione della Cloud Function

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

  • Il valore predefinito per la memoria allocata potrebbe non essere sufficiente. 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 della Cloud Function è di consentire tutto il traffico. Puoi usare questa impostazione o un'impostazione più restrittiva.

    Quando consenti tutto il traffico, la prima fase di convalida eseguita da Cloud Functions, eseguita a livello di rete, viene sempre superata. La seconda fase della convalida determina se al chiamante è stata concessa l'autorizzazione per eseguire laCloud Functions. L'autorizzazione dipende dal ruolo Identity and Access Management (IAM) del chiamante. Per impostazione predefinita, a Cloud Monitoring viene concessa l'autorizzazione per eseguire la Cloud Function. Per informazioni su come visualizzare o modificare le impostazioni di trasferimento dei dati in entrata, consulta Impostazioni di Ingress.

Limitazioni della Cloud Function

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

  • Puoi raccogliere dati di traccia e di log per le richieste HTTP in uscita solo se utilizzi il modello generico.

  • Sono supportate solo le funzioni HTTP. Se utilizzi la console Google Cloud per creare il monitoraggio sintetico, ti viene fornita una funzione predefinita che esegue query su un URL. L'origine per la funzione predefinita, che può essere modificata, è disponibile nel repository Git di generic-synthetic-nodejs.

    Per informazioni sulle funzioni HTTP, consulta l'articolo Scrivere funzioni HTTP.

  • Se utilizzi l'API, il comando deployment deve specificare che la Cloud Function è di seconda generazione. Se utilizzi la console Google Cloud, il deployment viene gestito automaticamente. Per ulteriori informazioni, consulta Eseguire il deployment di una funzione Cloud Functions.

  • L'ambiente di runtime è limitato a Node.js. Per informazioni, vedi Nodo. Sono supportate le seguenti versioni di Node.js: 12, 14, 16, 18 e 20.

Dati raccolti da monitoraggi sintetici

Questa sezione descrive i dati raccolti per il monitoraggio sintetico. Per informazioni su come visualizzare i risultati dell'esecuzione, consulta Esplorare i risultati del monitoraggio sintetico.

Cronologia esecuzioni

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

  • Una serie temporale che registra le esecuzioni riuscite o non riuscite nel tempo.

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

  • Log che contengono informazioni sulle esecuzioni di monitor sintetici, come informazioni sui dettagli di test ed errori. I log disponibili dipendono dalla Cloud Functions. Ad esempio, se utilizzi il modello Mocha, i log includono informazioni sulla riuscita o meno del test e sulla durata del test. Se inclusa, l'analisi dello stack elenca la riga di codice 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 Latenza della richiesta.

Metriche e log della Cloud Function

Metriche e log per la Cloud Function. Questi dati, che vengono raccolti da Cloud Functions, 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 monitoraggio sintetico vengono raccolti e archiviati automaticamente da Cloud Trace.

Per raccogliere dati di traccia, log e latenza per le richieste HTTP in uscita effettuate dal monitoraggio sintetico, devi utilizzare il modello generico. Per saperne di più, consulta Campioni per monitoraggi sintetici.

Prima di iniziare

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

    Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

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

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

    Abilita le API

  3. Verifica che il progetto Google Cloud contenga l'account di servizio predefinito di Compute Engine. Questo account di servizio viene creato quando abiliti 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 usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e 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 all'account di servizio Compute Engine predefinito, o all'account di servizio che hai creato, sia stato concesso il 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 usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

    2. Seleziona Includi concessioni dei ruoli fornite da Google.
    3. Se l'account di servizio utilizzato dal monitoraggio sintetico non è in elenco o se non gli è stato concesso un ruolo che include 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 notifiche. Ti consigliamo di creare più tipi di canali di notifica. Per maggiori informazioni, vedi Creare e gestire canali di notifica e Creare e gestire canali di notifica tramite API.

Crea un monitoraggio sintetico

Console

Quando crei un monitoraggio sintetico utilizzando la console Google Cloud, viene eseguito il deployment di una nuova Cloud Function (2ª generazione) e il relativo monitoraggio viene creato. Non puoi creare un monitoraggio sintetico per monitorare una Cloud Function esistente.

  1. Assicurati di aver abilitato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che all'account sia stato concesso il ruolo Editor (roles/editor). Per ulteriori informazioni, consulta 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 Cloud Function:

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

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

    • Verifica 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 per link inaccessibili.

  5. Inserisci un nome per il monitor.

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

  7. Esegui una di queste operazioni:

  8. Nella finestra di dialogo funzione Cloud Function Functions, segui questi passaggi:

    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 Account di servizio di runtime, seleziona un account di servizio.

    3. Modifica il codice generato oppure scrivi o carica il codice per la Cloud Function:

      • Per modificare il codice generato, inserisci il tuo codice o carica la funzione di esempio predefinita e seleziona 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 specificare anche 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 da Cloud Storage, seleziona il bucket di archiviazione, quindi seleziona il file ZIP da caricare.

        Puoi creare una Cloud Function anche utilizzando le pagine di Cloud Functions nella console Google Cloud. Per creare un monitoraggio sintetico che monitori una copia della Cloud Function, vai alla scheda Origine e fai clic su Scarica zip. Dopodiché potrai 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 Functions che hai definito viene creata e ne viene eseguito il deployment come 2ª generazione, mentre viene creato il monitoraggio sintetico.

gcloud

Quando crei un monitoraggio sintetico utilizzando Google Cloud CLI o l'API Cloud Monitoring, passi il nome della funzione alla chiamata API. Puoi quindi creare un monitoraggio sintetico che monitori unaCloud Functions esistente.

  1. Assicurati di aver abilitato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che all'account sia stato concesso il ruolo Editor (roles/editor). Per ulteriori informazioni, consulta Prima di iniziare.
  2. scrivi ed esegui il deployment dellaCloud Functions 2ª generazionen.).

    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 Cloud Function 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, segui questi passaggi:

      • Assicurati che il valore del campo FUNCTION_NAME sia univoco all'interno della regione di deployment.

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

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

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

      Cloud Functions crea ed esegue il deployment della tua Cloud Function. I risultati del comando Google Cloud CLI includono informazioni sulla funzione, incluso il nome completo:

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

      Per ulteriori informazioni sul deployment di una funzione, consulta Deployment di una funzione Cloud Functions.

    Per elencare le funzioni Cloud Functions 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 Cloud Function:

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

    Per trovare il nome completo per una Cloud Function 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 della Cloud Function.
  4. Crea un criterio di avviso.

    A causa della complessità della configurazione dei criteri di avviso, ti consigliamo di accedere alla pagina Monitor sintetici nella console Google Cloud e utilizzare le opzioni per creare un criterio di avviso. Con questo approccio, la maggior parte dei campi criterio di avviso viene completata automaticamente. Per creare il criterio di avviso utilizzando la console Google Cloud, fai clic su Crea criterio nella 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 di uptime_check/check_passed scritte dal monitoraggio sintetico. Assicurati di sostituire CHECK_ID con l'identificatore del monitoraggio sintetico, incluso nei dati di risposta di un comando create.

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

API

Quando crei un monitoraggio sintetico utilizzando Google Cloud CLI o l'API Cloud Monitoring, passi il nome della funzione alla chiamata API. Puoi quindi creare un monitoraggio sintetico che monitori unaCloud Functions esistente.

  1. Assicurati di aver abilitato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che all'account sia stato concesso il ruolo Editor (roles/editor). Per ulteriori informazioni, consulta Prima di iniziare.
  2. scrivi ed esegui il deployment dellaCloud Functions 2ª generazionen.).

    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 Cloud Function 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, segui questi passaggi:

      • Assicurati che il valore del campo FUNCTION_NAME sia univoco all'interno della regione di deployment.

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

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

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

      Cloud Functions crea ed esegue il deployment della tua Cloud Function. I risultati del comando Google Cloud CLI includono informazioni sulla funzione, incluso il nome completo:

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

      Per ulteriori informazioni sul deployment di una funzione, consulta Deployment di una funzione Cloud Functions.

    Per elencare le funzioni Cloud Functions 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 Cloud Function:

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

    Per trovare il nome completo per una Cloud Function 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 della Cloud Function.

      Se l'operazione riesce, la risposta alla chiamata 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.

    A causa della complessità della configurazione dei criteri di avviso, ti consigliamo di accedere alla pagina Monitor sintetici nella console Google Cloud e utilizzare le opzioni per creare un criterio di avviso. Con questo approccio, la maggior parte dei campi criterio di avviso viene completata automaticamente. Per creare il criterio di avviso utilizzando la console Google Cloud, fai clic su Crea criterio nella 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 di uptime_check/check_passed scritte dal monitoraggio sintetico. Assicurati di sostituire CHECK_ID con l'identificatore del monitoraggio sintetico, incluso nei dati di risposta di un comando create.

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

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base. Per maggiori informazioni, consulta la documentazione di riferimento del provider Terraform.

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

  1. Assicurati di aver abilitato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che all'account sia stato concesso il ruolo Editor (roles/editor). Per ulteriori informazioni, consulta Prima di iniziare.

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

    Il seguente codice 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 Terraform e aggiungi una risorsa google_storage_bucket_object, quindi applica le modifiche.

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

    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 ingresso utilizzato dai monitoraggi sintetici. Ad esempio, quando applichi il codice seguente, viene eseguito 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 Terraform e aggiungi una risorsa google_monitoring_uptime_check_config, quindi applica 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.

    I passaggi seguenti utilizzano la console Google Cloud per creare il canale di notifica e il criterio di avviso. Questo approccio garantisce che il criterio di avviso monitori solo i 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 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, quindi seleziona Aggiungi criterio di avviso.
      3. Nella finestra di dialogo, vai alla sezione Notifiche e nome, espandi Canali di notifica ed effettua le selezioni desiderate.
      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 di sistemi, agenti o applicazioni esterni non lo sono. Le metriche fatturabili vengono fatturate 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 dei monitor sintetici.

Messaggio di errore dopo l'abilitazione delle API

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

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 abilitata, quindi di attendere e riprovare.

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

Vai ad API e servizi

Dopo aver verificato che l'API è abilitata, puoi continuare con il flusso di creazione. La condizione si risolve automaticamente dopo la propagazione dell'abilitazione dell'API nel backend.

Le richieste HTTP in uscita non vengono rintracciate

Configuri il monitoraggio sintetico per raccogliere i dati di traccia per le richieste HTTP di output. I dati di traccia mostrano un solo intervallo, simile al seguente screenshot:

Cloud Trace che mostra una sola traccia.

Per risolvere la situazione, assicurati che all'account di servizio sia stato concesso il ruolo di agente Cloud Trace (roles/cloudtrace.agent). È sufficiente anche il 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 usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

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

    Se non conosci il nome del tuo account di servizio, seleziona Account di servizio nel menu di navigazione.

Stato In corso

La pagina Monitoring sintetici elenca un monitoraggio sintetico con stato In progress. Lo stato In progress indica che il monitoraggio sintetico è stato creato di recente e non ci sono dati da visualizzare o che il deployment della funzione non è riuscito.

Per determinare se il deployment della funzione non è riuscito, prova a eseguire questi passaggi:

  • Assicurati che il nome della Cloud Function non contenga un trattino basso. Se è presente un trattino basso, rimuovilo ed esegui nuovamente il deployment dellaCloud Functions.

  • 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, pertanto il monitoraggio sintetico non è in grado di eseguire la funzione.

  • Apri la pagina Cloud Functions per la funzione. Per aprire questa pagina dalla pagina Dettagli monitoraggio sintetico, fai clic su Codice, quindi sul nome della funzione.

    Se viene visualizzato un messaggio simile al seguente, significa che il deployment della funzione non è riuscito.

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

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

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

Stato avviso

Monitor sintetici elenca un monitoraggio sintetico con stato Warning. Lo stato Warning indica che i risultati dell'esecuzione non sono coerenti. Questo potrebbe indicare un problema di progettazione del test o potrebbe indicare che ciò che viene testato ha un comportamento incoerente.

Stato di errore

Monitor sintetici elenca un monitoraggio sintetico con stato Failing. Per maggiori 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 la destinazione del monitoraggio sintetico.

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

  • Se l'errore restituisce un tempo di esecuzione pari a 0ms, è possibile che la Cloud Function stia esaurendo la memoria. Per risolvere questo errore, modifica la Cloud Function, quindi aumenta la memoria fino 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 la chiamata API non va a buon fine 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 che monitorano i risultati del monitoraggio sintetico, quindi elimina il monitoraggio sintetico.

Passaggi successivi