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. Sei tu a fornire 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 monitor sintetici

Un monitoraggio sintetico esegue periodicamente una funzione Cloud Functions (Cloud di seconda 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 in modo che interagisca con una pagina web utilizzando Puppeteer. Puoi inoltre configurare la Cloud Function per interagire con un'API utilizzando il modulo Axios. Potresti anche voler testare le risorse che si trovano in una rete VPC.

Per creare la Cloud Function, 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 Cloud Function. Anche se specifichi la regione in cui si trova la Cloud Function, i comandi che attivano l'esecuzione possono avere origine in qualsiasi regione supportata dai server di controllo di uptime. Per maggiori informazioni, consulta Elencare gli indirizzi IP dei server per i controlli di uptime.

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

  • Quando crei un monitoraggio sintetico utilizzando la console Google Cloud, il comportamento predefinito prevede la creazione di un criterio di avviso. Sei tu a fornire i canali di notifica. Il criterio di avviso predefinito è configurato per inviarti 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 i test di frequente. Tuttavia, lo SLO per il tuo servizio non è l'unica considerazione. Devi inoltre considerare in che modo la frequenza delle esecuzioni si traduce in carico sul servizio e nei costi. Ogni esecuzione fornisce carico sul tuo servizio, pertanto più spesso esegui la Cloud Function, più carico applichi al servizio. Come riferimento, l'intervallo di esecuzione predefinito per i controlli di uptime è un minuto.

La frequenza di esecuzione determina anche la velocità con cui puoi ricevere una notifica se il test non va a buon fine. 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 superati due test con esito negativo. Riceverai una notifica dopo il secondo test non riuscito.

Codice campione della Cloud Function

Per modelli ed esempi, consulta la pagina Esempi per i 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 monitor sintetici, riducendo così 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 winston logger. A causa della dipendenza dai prodotti open source, dovresti aspettarti modifiche alla struttura dei dati di traccia e log. Pertanto, i dati di traccia e log raccolti devono essere utilizzati solo per scopi di debug.

Puoi implementare il tuo approccio per raccogliere 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 almeno 2 GiB.

  • Il valore predefinito delle impostazioni di Data Transfer in entrata della tua Cloud Function è 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, che viene eseguita a livello di rete, passa sempre. La seconda fase della convalida determina se al chiamante è stata concessa l'autorizzazione per eseguire la Cloud Function. L'autorizzazione dipende dal ruolo IAM (Identity and Access Management) del chiamante. Per impostazione predefinita, a Cloud Monitoring viene concessa l'autorizzazione per eseguire la tua Cloud Function. Per informazioni su come visualizzare o modificare le impostazioni di Data Transfer in entrata, consulta la pagina relativa alle impostazioni di Ingress.

Limitazioni delle Cloud Function

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

  • Puoi raccogliere dati di traccia e log per le richieste HTTP in uscita solo quando 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 della 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 di deployment deve specificare che la Cloud Function è di seconda generazione. Se utilizzi la console Google Cloud, il deployment viene gestito per te. Per ulteriori informazioni, consulta Eseguire il deployment di una funzione Cloud Functions.

  • 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 da monitor 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 quanto segue:

  • 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 data di esecuzione della funzione non viene registrata. I dati di latenza sono scritti come serie temporale uptime_check/request_latency per la risorsa Cloud Run su cui è in esecuzione la Cloud Function. Un grafico con questi dati è disponibile nella pagina Dettagli monitoraggio sintetico.

  • Log che contengono informazioni sulle esecuzioni del monitoraggio sintetico, ad esempio informazioni sui dettagli di test ed errori. I log disponibili dipendono dalla Cloud Function. Ad esempio, se utilizzi il modello Mocha, i log includono informazioni che indicano se il test è stato superato o meno e la durata del test. L'analisi dello stack, se inclusa, 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 delle richieste.

Metriche e log delle 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 di 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 la sezione Campioni per monitor 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 sul tuo progetto:

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

    Potresti anche essere in grado di 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 Compute Engine predefinito. Questo account di servizio viene creato quando abiliti l'API Compute Engine e ha un nome simile a 12345-compute@developer.gserviceaccount.com.

    Nel pannello di navigazione della console Google Cloud, seleziona IAM e amministrazione, quindi Account di servizio:

    Vai ad Account di servizio

    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. Nel pannello di navigazione della console Google Cloud, seleziona IAM:

      Vai a IAM

    2. Seleziona Includi concessioni di ruoli fornite da Google.
    3. Se l'account di servizio utilizzato dal monitoraggio sintetico non è elencato 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 le notifiche. Ti consigliamo di creare più tipi di canali di notifica. Per maggiori informazioni, 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 eseguito il deployment di una nuova Cloud Function (2ª generazione) e viene creato il relativo monitor. Non puoi creare un monitoraggio sintetico per monitorare una Cloud Function esistente.

  1. Assicurati di aver abilitato le API richieste, che il tuo progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato concesso il ruolo Editor (roles/editor). Per saperne di più, consulta Prima di iniziare.
  2. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring, quindi  Monitoraggio sintetico:

    Vai a Monitoraggio sintetico

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

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

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

    • Verifica link inaccessibili: utilizza questo modello per testare un URI e un numero configurabile di link trovati in quell'URI. Per informazioni sui campi per questo controllo, consulta Creare una verifica di 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 Cloud Function, 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:

      • Controlla le impostazioni predefinite e aggiornale se necessario.

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

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

        • Per modificare il codice generato, inserisci il tuo codice o carica la funzione di esempio predefinita, 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 tramite ZIP.

        Se carichi un file ZIP dal 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, quindi seleziona il file ZIP da caricare.

        Puoi inoltre creare una Cloud Function utilizzando le pagine Cloud Functions nella console Google Cloud. Per creare un monitor sintetico che monitori una copia di questa Cloud Function, vai alla scheda Origine e fai clic su Scarica zip. A questo punto, puoi caricare il file ZIP.

      2. 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 e viene creato il monitor sintetico.

gcloud

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

  1. Assicurati di aver abilitato le API richieste, che il tuo progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato concesso il ruolo Editor (roles/editor). Per saperne di più, consulta Prima di iniziare.
  2. ed eseguire il deployment della Cloud Function (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 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:

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

      Cloud Functions crea ed esegue il deployment della tua Cloud Function. I risultati del comando Google Cloud CLI includono informazioni sulla funzione, tra cui il suo 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 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 di 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:

    • Sostituisci DISPLAY_NAME con il nome del monitor 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 andare 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 compilata 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 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, 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 nome della funzione alla chiamata API. Pertanto, puoi creare solo un monitoraggio sintetico che monitora una Cloud Function esistente.

  1. Assicurati di aver abilitato le API richieste, che il tuo progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato concesso il ruolo Editor (roles/editor). Per saperne di più, consulta Prima di iniziare.
  2. ed eseguire il deployment della Cloud Function (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 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:

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

      Cloud Functions crea ed esegue il deployment della tua Cloud Function. I risultati del comando Google Cloud CLI includono informazioni sulla funzione, tra cui il suo 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 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 di 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: impostalo sul nome visualizzato del monitor sintetico.
        • syntheticMonitor: impostato sul nome completo della Cloud Function.

      Se l'operazione ha esito positivo, la risposta della 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 andare 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 compilata 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 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, consulta Creare criteri di avviso utilizzando l'API.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta 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 questo controllo:

  1. Assicurati di aver abilitato le API richieste, che il tuo progetto contenga un account di servizio Compute Engine predefinito e che a questo account sia stato concesso il ruolo Editor (roles/editor). Per saperne di più, consulta Prima di iniziare.

  2. Modifica il file di configurazione Terraform e aggiungi una risorsa google_storage_bucket, poi 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 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 monitor sintetici. Ad esempio, quando applichi il codice seguente, viene eseguito il deployment di una funzione denominata 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, aggiungi una risorsa google_monitoring_uptime_check_config e 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 assicura che il criterio di avviso monitori solo i dati generati dal monitoraggio sintetico.

    1. Per creare un canale di notifica:

      1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring e poi  Avvisi:

        Vai ad Avvisi

      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. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring, quindi  Monitoraggio sintetico:

        Vai a Monitoraggio sintetico

      2. Individua il monitoraggio sintetico, seleziona Altro, poi seleziona Aggiungi criterio di avviso.
      3. Nella finestra di dialogo, vai alla sezione Notifiche e nome, espandi Canali di notifica ed effettua le 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. Le metriche fatturabili vengono fatturate in base al numero di byte o al numero di campioni importati.

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

Risolvere i problemi relativi ai monitor sintetici

Questa sezione fornisce informazioni che possono essere utili per la risoluzione dei 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 e poi di attendere e riprovare.

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 è 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 tracciate

Puoi configurare il monitoraggio sintetico in modo da raccogliere i dati di traccia per le richieste HTTP di output. I dati di traccia mostrano un solo intervallo, come nel seguente screenshot:

Cloud Trace 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 un ruolo Editor (roles/editor).

Per visualizzare i ruoli concessi al tuo account di servizio:

  1. Nel pannello di navigazione della console Google Cloud, seleziona IAM:

    Vai a IAM

  2. Seleziona Includi concessioni di ruoli fornite da Google.
  3. Se l'account di servizio utilizzato dal monitoraggio sintetico non è presente nell'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 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 Monitor sintetici elenca un monitoraggio sintetico con uno stato di In progress. Lo stato In progress indica che il monitoraggio sintetico è stato creato di recente e non sono presenti dati da visualizzare o che il deployment della funzione non è riuscito.

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

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

  • Apri la pagina Dettagli 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 che pertanto il monitoraggio sintetico non è in grado di eseguirla.

  • Apri la pagina Cloud Functions per la funzione. Per aprire questa pagina dalla pagina Dettagli monitoraggio sintetico, fai clic su Codice e poi 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, rivedi 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

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

Stato non riuscito

Il campo Monitor sintetici elenca un monitoraggio sintetico con lo 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 il target 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, la funzione Cloud Function potrebbe esaurire la memoria. Per risolvere questo errore, modifica la Cloud Function, quindi aumenta la memoria ad almeno 2 GiB e imposta il campo CPU su 1.

L'eliminazione non riesce per un monitoraggio sintetico

Utilizza l'API Cloud Monitoring per eliminare un monitoraggio sintetico, ma la chiamata API non riesce 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