Crea un monitoraggio sintetico

Questo documento descrive come creare monitor sintetici per testare la disponibilità, la coerenza e le 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 una policy 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 in modo che interagisca 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 testare le risorse 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 monitor sintetico, Cloud Monitoring utilizza un sistema di pianificazione che pianifica l'esecuzione periodica della 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 in caso di errori di test:

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

Considerazioni sulla frequenza di esecuzione

Configura la frequenza di esecuzione della funzione Cloud Run. Per determinare la frequenza delle esecuzioni, prendi in considerazione l'obiettivo del livello di 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 in che modo la frequenza delle esecuzioni si traduce in un carico sul servizio e sui costi. Ogni esecuzione genera un carico sul servizio, quindi più spesso esegui la funzione Cloud Run, maggiore sarà 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 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 con esperienza, ti consigliamo di utilizzare Gemini per generare codice per i monitor sintetici e ridurre così il tempo 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 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, consulta la classe 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. consigliamo di impostare questo campo su almeno 2 GiB.

  • Il valore predefinito per le impostazioni di trasferimento dei dati in entrata della 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) dell'utente che chiama. Per impostazione predefinita, a Cloud Monitoring viene concessa l'autorizzazione per eseguire la 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 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 la console Google Cloud per creare il monitor sintetico, ti viene fornita una funzione predefinita che esegue 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 di deployment deve specificare che la funzione Cloud Run è di 2ª generazione. Se utilizzi la console Google Cloud, il deployment viene gestito per te. Per ulteriori informazioni, consulta Eseguire il deployment di una funzione Cloud Run.

  • L'ambiente di runtime è limitato a Node.js. Per informazioni, consulta Nodo. Sono supportate 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 dell'esecuzione del codice. Il tempo 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 sulle esecuzioni del monitoraggio sintetico, ad esempio informazioni sui test e sui dettagli degli 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.

  • Se vuoi, tracce e log per le richieste HTTP in uscita. Per informazioni su come raccogliere questi dati, consulta 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 i ruoli personalizzati o altri ruoli predefiniti.

  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 tuo progetto Google Cloud contenga l'account di servizio Compute Engine predefinito. 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 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 assegnato 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 utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e 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 monitor sintetico utilizzando la console Google Cloud, viene eseguita il deployment di una nuova funzione Cloud Run (2ª generazione.) e viene creato il monitor per la funzione Cloud Run. Non puoi creare un monitoraggio sintetico che monitori una funzione Cloud Run esistente.

  1. Assicurati di aver attivato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato assegnato 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 funzione Cloud Run:

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

    • Monitor sintetico Mocha: utilizza questo modello quando scrivi le 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 Timeout risposta, Frequenza controllo e aggiungi etichette definite dall'utente.

  7. Esegui una di queste operazioni:

  8. Nella finestra di dialogo della funzione Cloud Run, svolgi i seguenti 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:

      • Esamina le impostazioni predefinite e aggiornale se necessario.

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

    3. Modifica il codice generato o scrivi o carica il codice per la 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 da Cloud Storage, seleziona il bucket di archiviazione e poi 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 monitor sintetico che monitori una copia della funzione Cloud Run, vai alla scheda Origine e fai clic su Scarica file 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 compilata ed eseguita come 2ª generazione. e viene creato il monitor sintetico.

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 aver attivato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato assegnato il ruolo Editor (roles/editor). Per ulteriori informazioni, consulta Prima di iniziare.
  2. Scrivi ed esegui il deployment della funzione Cloud Run 2ª generazione.

    Ad esempio, per eseguire il deployment dell'esempio 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 Moka: 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 ed eseguono il deployment della funzione Cloud Run. 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 Eseguire 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 di questa chiamata è un elenco di voci, ciascuna delle quali elenca una funzione Cloud Run:

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

    Per trovare il nome completo di una specifica funzione Cloud Run, 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 monitor sintetico.
    • Sostituisci TARGET con il nome completo della funzione Cloud Run.
  4. Crea un criterio di avviso.

    A causa della complessità della configurazione delle criterio di avviso, ti consigliamo di andare alla pagina Monitori sintetici nella console Google Cloud e di utilizzare le opzioni per creare una criterio di avviso. Con questo approccio, la maggior parte dei campi criterio di avviso viene compilata 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 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 Creare criteri di avviso utilizzando l'API.

API

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 aver attivato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato assegnato il ruolo Editor (roles/editor). Per ulteriori informazioni, consulta Prima di iniziare.
  2. Scrivi ed esegui il deployment della funzione Cloud Run 2ª generazione.

    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 Moka: 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 ed eseguono il deployment della funzione Cloud Run. 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 Eseguire 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 di questa chiamata è un elenco di voci, ciascuna delle quali elenca una funzione Cloud Run:

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

    Per trovare il nome completo di una specifica funzione Cloud Run, 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 seguenti campi 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: impostato sul nome completo della 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.

    A causa della complessità della configurazione delle criterio di avviso, ti consigliamo di andare alla pagina Monitori sintetici nella console Google Cloud e di utilizzare le opzioni per creare una criterio di avviso. Con questo approccio, la maggior parte dei campi criterio di avviso viene compilata 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 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 Creare 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 la Terraform documentazione di riferimento del provider.

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

  1. Assicurati di aver attivato le API richieste, che il progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato assegnato 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 codice seguente definisce un bucket Cloud Storage nella posizione 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 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 monitor sintetico, modifica il file di configurazione Terraform e aggiungi una risorsa google_monitoring_uptime_check_config e poi 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 che seguono utilizzano la console Google Cloud per creare il canale di notifica e il criterio di avviso. Questo approccio garantisce che i criterio di avviso monitorino 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 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 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:

Risolvere i problemi relativi ai 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 di un monitoraggio sintetico e ti viene chiesto di attivare almeno un'API. Dopo aver attivato 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 e poi di attendere e riprovare l'azione.

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 sia abilitata, puoi continuare con il flusso di creazione. La condizione si risolve automaticamente dopo che l'attivazione dell'API si è propagata nel backend.

Le richieste HTTP in uscita non vengono monitorate

Configura il monitor sintetico per raccogliere i dati di traccia per le richieste HTTP di output. 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 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 del ruolo Agente Cloud Trace (roles/cloudtrace.agent), concedi questo ruolo all'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 Monitoraggi sintetici elenca un monitoraggio 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 contenga un underscore. Se è presente un'underscore, rimuovila e esegui nuovamente il deployment della funzione Cloud Run.

  • Apri la pagina Dettagli del monitoraggio sintetico per il monitoraggio 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 Cloud Run per la funzione. Per aprire questa pagina dalla pagina Dettagli del monitoraggio sintetico, fai clic su Codice e poi 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 questo errore, controlla il codice della funzione e correggi gli errori che ne impediscono la compilazione o il deployment.

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

Stato di avviso

La pagina Monitoraggi sintetici elenca 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 non superato

La pagina Monitoraggi sintetici elenca un monitoraggio sintetico con statoFailing. Per ulteriori informazioni sul motivo dell'errore, visualizza la cronologia delle esecuzioni più recente.

  • Se viene visualizzato il messaggio di errore Request failed with status code 429, significa che il target 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 di 0ms, la funzione Cloud Run potrebbe esaurire 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

Utilizzi l'API Cloud Monitoring per eliminare un monitoraggio sintetico, ma la chiamata dell'API non va a buon fine con 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