Creare controlli di uptime pubblici

Questo documento descrive come creare un controllo di uptime pubblico. Un controllo di uptime pubblico può inviare richieste da più località in tutto il mondo a URL o risorse disponibili pubblicamente per verificare se la risorsa risponde. Google Cloud Per informazioni su come creare controlli di uptime per reti private, consulta Creare controlli di uptime privati.

I controlli di uptime pubblici possono determinare la disponibilità delle seguenti risorse monitorate:

Per i link alle informazioni sulla gestione e sul monitoraggio dei controlli di uptime, consulta la sezione Passaggi successivi di questo documento.

Questa funzionalità è supportata solo per i progetti Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.

Informazioni sui controlli di uptime

Per HTTP e HTTPS, vengono seguiti tutti i reindirizzamenti URL e la risposta finale ricevuta dal controllo di uptime viene utilizzata per valutare eventuali criteri di esito positivo. Per i controlli HTTPS, la data di scadenza del certificato SSL viene calcolata in base al certificato del server ricevuto nella risposta finale.

Affinché un controllo dell'uptime vada a buon fine, devono essere soddisfatte le seguenti condizioni:

  • Lo stato HTTP deve corrispondere ai criteri specificati.
  • I dati della risposta non contengono i contenuti richiesti o questi sono presenti.

I controlli uptime non caricano gli asset della pagina né eseguono JavaScript e la configurazione predefinita di un controllo uptime non include l'autenticazione.

Prima di iniziare

Completa i seguenti passaggi nel progetto Google Cloud che memorizzerà il controllo dell'uptime:

  1. Per ottenere le autorizzazioni necessarie per creare controlli di uptime, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

    • Editor Monitoring (roles/monitoring.editor) - Utenti della console Google Cloud
    • Editor configurazione controlli uptime Monitoring (roles/monitoring.uptimeCheckConfigEditor) - Utenti API
    • Monitoring AlertPolicy Editor (roles/monitoring.alertPolicyEditor) - Utenti API
    • Monitoring NotificationChannel Editor (roles/monitoring.notificationChannelEditor) - Utenti API

    Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

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

  2. Verifica che la risorsa che vuoi controllare disponga di un endpoint pubblico o si trovi dietro un firewall configurabile.

    Per tutte le altre configurazioni, devi creare un controllo di uptime privato. Per saperne di più, vedi Creare controlli di uptime privati.

  3. Quando la risorsa si trova dietro un firewall, configura quest'ultimo in modo da consentire il traffico in entrata dagli indirizzi IP dei server di controllo dell'uptime. Per maggiori informazioni, consulta Elenco degli indirizzi IP dei server di controllo di uptime.

  4. 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 la pagina Crea e gestisci canali di notifica.

  5. Identifica almeno tre checker per il controllo di uptime. La regione di controllo dell'uptime USA include le regioni USA_OREGON, USA_IOWA e USA_VIRGINIA. Ciascuna delle regioni USA_* ha un controllo e USA include tutti e tre. Le altre regioni di controllo dell'uptime, EUROPE, SOUTH_AMERICA e ASIA_PACIFIC, hanno ciascuna un checker.

    Se selezioni Globale quando utilizzi la console Google Cloud o selezioni REGION_UNSPECIFIED quando utilizzi l'API, i controlli di uptime vengono emessi da tutte le regioni di controllo di uptime.

  6. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    Terraform

    Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione e con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    C#

    Per utilizzare gli esempi di .NET questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    Vai

    Per utilizzare gli esempi di Go questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    Java

    Per utilizzare gli esempi di Java questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    Node.js

    Per utilizzare gli esempi di Node.js questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    PHP

    Per utilizzare gli esempi di PHP questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    Python

    Per utilizzare gli esempi di Python questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    Ruby

    Per utilizzare gli esempi di Ruby questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

    Crea un controllo di uptime

    Questa sezione spiega come creare e configurare i controlli di uptime.

    Per creare un controllo di uptime per un bilanciatore del carico esterno con almeno una porta TCP o HTTP/S configurata, puoi seguire queste istruzioni. In alternativa, vai alla pagina Dettagli servizio per il servizio e poi fai clic su Crea controllo di uptime. Se inizi dalla pagina Dettagli del servizio, i campi specifici del servizio vengono precompilati.

    Console

    Per creare un controllo di uptime utilizzando la console Google Cloud :

    1. Nella console Google Cloud , vai alla pagina  Controlli di uptime:

      Vai a Controlli di uptime

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

    2. Nella barra degli strumenti della console Google Cloud , seleziona il tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
    3. Fai clic su Crea controllo di uptime.

      Finestra di dialogo Crea un controllo di uptime.

    4. Specifica la destinazione del controllo di uptime:

      1. Seleziona il protocollo. Puoi selezionare HTTP, HTTPS o TCP.

      2. Scegli uno dei seguenti tipi di risorse:

        • URL: qualsiasi nome host o indirizzo IPv4. Percorso e porta vanno inseriti separatamente.
        • Servizio LoadBalancer Kubernetes: servizio Kubernetes di tipo LoadBalancer.
        • Istanza: istanze Compute Engine o AWS EC2.
        • App Engine: applicazioni (moduli) App Engine.
        • Elastic Load Balancer: bilanciatore del carico AWS.
      3. Inserisci i campi specifici del protocollo:

        • Per i controlli TCP, inserisci la porta.

        • Per i controlli HTTP e HTTPS, puoi inserire un percorso all'interno dell'host o della risorsa. Tutti i controlli di uptime che utilizzano questi protocolli inviano una richiesta a http://target/path. In questa espressione, per una risorsa URL, target è un nome host o un indirizzo IP. Per una risorsa App Engine, target è un nome host derivato dal nome del servizio. Per le risorse di istanza e bilanciamento del carico, target è un indirizzo IP derivato dal nome che hai fornito per la risorsa o il gruppo di risorse.

          Se lasci vuoto il campo path o se imposti il valore su /, la richiesta viene inviata a http://target/.

          Ad esempio, per eseguire un controllo di uptime sulla risorsa URL example.com/tester, imposta il campo Nome host su example.com e il campo Percorso su /tester.

          Supponiamo di aver eseguito il deployment di un server su App Engine con un dispatcher che supporta / e /hello. Per inviare il controllo di uptime al gestore '/', lascia vuoto il campo Percorso. Per inviare il controllo dell'uptime al gestore /hello, imposta il valore del campo Path su /hello.

      4. Inserisci i campi specifici della risorsa:

        • Per le risorse URL, inserisci il nome host nel campo Nome host. Ad esempio, inserisci example.com.

        • Per le risorse App Engine, inserisci il nome del servizio nel campo Servizio.

        • Per le risorse Elastic Load Balancer e Istanza, completa il campo Si applica a come segue:

          • Per eseguire un controllo dell'uptime su una singola istanza o un singolo bilanciatore del carico, seleziona Singolo e poi utilizza il menu per selezionare l'istanza o il bilanciatore del carico specifico.
          • Per eseguire un controllo dell'uptime su un gruppo di monitoraggio, seleziona Gruppo, quindi utilizza il menu per selezionare il nome del gruppo.
      5. (Facoltativo) Per impostare la frequenza di esecuzione del controllo dell'uptime, utilizza il campo Frequenza di controllo.

      6. (Facoltativo) Per selezionare le regioni di controllo o per configurare i certificati SSL, l'autenticazione, le intestazioni e le porte per i controlli HTTP e HTTPS, fai clic su Altre opzioni di destinazione:

        • Regioni: seleziona le regioni in cui i controlli di uptime devono ricevere richieste. Un controllo di uptime deve avere almeno tre checker. In tutte le regioni, tranne negli Stati Uniti, è presente un solo centro di controllo, che ne hanno tre. L'impostazione predefinita, Globale, include tutte le regioni.
        • Ping ICMP: configura il controllo di uptime per inviare fino a tre ping. Per ulteriori informazioni, consulta la sezione Utilizzare i ping ICMP.
        • Metodo richiesta: per i controlli HTTP, seleziona il metodo di richiesta.
        • Corpo:per i controlli HTTP POST, inserisci il corpo codificato dell'URL. Devi eseguire la codifica personalmente. Per tutti gli altri controlli, lascia vuoto questo campo.
        • Intestazione host: compila questo campo per controllare gli host virtuali. Questo campo non è disponibile per i controlli TCP.
        • Porta: specifica un numero di porta.
        • Intestazioni personalizzate: fornisci intestazioni personalizzate e criptale se vuoi. La crittografia nasconde i valori dell'intestazione nel modulo. Utilizza la crittografia per le intestazioni relative all'autenticazione che non vuoi rendere visibili ad altri.
        • Autenticazione: questi valori vengono inviati come intestazione di autorizzazione. Questo campo non è disponibile per i controlli TCP.

          Scegli una delle seguenti opzioni:

          • Autenticazione di base: fornisci un singolo nome utente e una singola password. Le password sono sempre nascoste nel modulo.
          • Autenticazione con agente di servizio: se abilitata, viene generato un token di identità per l'agente di servizio di monitoraggio. Questa opzione è disponibile solo per i controlli HTTPS.
        • Convalida del certificato SSL: se hai selezionato HTTPS per una risorsa URL, per impostazione predefinita il servizio tenta di connettersi tramite HTTPS e convalidare il certificato SSL. I controlli di uptime non riescono quando un URL ha un certificato non valido. I motivi per cui un certificato non è valido includono:

          • Un certificato scaduto
          • Un certificato autofirmato
          • Un certificato con un nome di dominio non corrispondente
          • Un certificato che utilizza l'estensione per l'accesso alle informazioni sull'autorità (AIA).

          Per forzare un controllo dell'uptime HTTPS per convalidare il certificato SSL, seleziona Convalida certificati SSL.

          Per disattivare la convalida del certificato SSL, deseleziona Convalida certificati SSL.

          Se disponi di certificati SSL con estensioni AIA, devi disattivare la convalida del certificato SSL. Questi tipi di certificati non sono supportati e non superano la sequenza di convalida. In genere, il messaggio di errore è "Responded with SSL handshake Error in 10000 ms".

          Puoi utilizzare la metrica monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires per creare un criterio di avviso che ti invii una notifica prima della scadenza del certificato. Per saperne di più, consulta Policy di esempio: policy di controllo di uptime.

          Seleziona la casella di controllo Convalida certificati SSL.

    5. Fai clic su Continua e configura i requisiti di risposta. Tutte le impostazioni in questa sezione hanno valori predefiniti:

      • Per modificare il periodo di timeout per il controllo di uptime, utilizza il campo Timeout risposta. Un controllo di uptime non viene superato quando non viene ricevuta alcuna risposta da più di una località entro questo periodo.

      • Per configurare il controllo di uptime in modo da eseguire la corrispondenza dei contenuti, assicurati che l'etichetta del pulsante di attivazione/disattivazione sia La corrispondenza dei contenuti è abilitata:

        • Seleziona il Tipo di corrispondenza dei contenuti della risposta dal menu delle opzioni. Questo campo determina il modo in cui i contenuti della risposta vengono confrontati con i dati restituiti. Ad esempio, supponiamo che i contenuti della risposta siano abcd e che il tipo di corrispondenza dei contenuti sia Contiene. Il controllo di uptime ha esito positivo solo quando i dati di risposta contengono abcd. Per maggiori informazioni, consulta la sezione Convalidare i dati di risposta.
        • Inserisci i contenuti della risposta. Il contenuto della risposta deve essere una stringa non più lunga di 1024 byte. Nell'API, questo campo è l'oggetto ContentMatcher.
      • Per impedire la creazione di voci di log a causa dei controlli di uptime, deseleziona Logging degli errori dei controlli.

      • Per i controlli di uptime HTTP, configura i codici di risposta accettabili. Per impostazione predefinita, i controlli di uptime HTTP contrassegnano qualsiasi risposta 2xx come risposta riuscita.

    6. Fai clic su Continua e configura le notifiche.

      Per ricevere una notifica quando un controllo di uptime non va a buon fine, crea una policy di avviso e configura i canali di notifica per questa policy:

      1. (Facoltativo) Aggiorna il nome della criterio di avviso.
      2. (Facoltativo) Nel campo Durata, seleziona per quanto tempo i controlli di uptime devono avere esito negativo prima dell'invio delle notifiche. Per impostazione predefinita, le notifiche vengono inviate quando almeno due regioni segnalano errori di controllo di uptime per una durata di almeno un minuto.
      3. Nella casella Canali di notifica, fai clic su Menu, seleziona i canali da aggiungere e poi fai clic su Ok.

        Nel menu, i canali di notifica sono raggruppati in ordine alfabetico per ogni tipo di canale.

      Se non vuoi creare un criterio di avviso, assicurati che il testo del pulsante di attivazione/disattivazione sia Non creare un avviso.

    7. Fai clic su Continua e completa il controllo di uptime:

      1. Inserisci un titolo descrittivo per il controllo di uptime.

      2. (Facoltativo) Per aggiungere etichette definite dall'utente al controllo dell'uptime, segui questi passaggi:

        1. Fai clic su Mostra etichette utente.
        2. Nel campo Chiave, inserisci un nome per l'etichetta. I nomi delle etichette devono iniziare con una lettera minuscola e possono contenere lettere minuscole, numeri, trattini bassi e trattini. Ad esempio, inserisci severity.
        3. Nel campo Valore, inserisci un valore per l'etichetta. I valori delle etichette possono contenere lettere minuscole, numeri, trattini bassi e trattini. Ad esempio, inserisci critical.
        4. Per ogni etichetta aggiuntiva, fai clic su Aggiungi etichetta utente e poi inserisci la chiave e il valore dell'etichetta.
      3. Per verificare la configurazione del controllo di uptime, fai clic su Test. Se il risultato non è quello che ti aspettavi, consulta Errori di controllo, correggi la configurazione e ripeti il passaggio di verifica.

      4. Fai clic su Crea. Se selezioni Crea e un campo obbligatorio non è compilato, viene visualizzato un messaggio di errore.

    gcloud

    Per creare il controllo dell'uptime, esegui il comando gcloud monitoring uptime create:

    gcloud monitoring uptime create DISPLAY_NAME REQUIRED_FLAGS OPTIONAL_FLAGS --project=PROJECT_ID
    

    Prima di eseguire il comando precedente, sostituisci quanto segue:

    • PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.

    • DISPLAY_NAME: il nome del controllo di uptime.

    • REQUIRED_FLAGS: configura per specificare la risorsa analizzata dal controllo di uptime. Ad esempio, il seguente comando crea un controllo di uptime che testa l'URL EXAMPLE.com per un progetto specifico:

      gcloud monitoring uptime create DISPLAY_NAME \
      --resource-labels=host=EXAMPLE.com,project_id=PROJECT_ID \
      --resource-type=uptime-url
      

      Il comando precedente specifica i valori per ogni etichetta richiesta dal tipo di risorsa uptime-url.

    • OPTIONAL_FLAGS: configura questi flag per ignorare i valori predefiniti. Ad esempio, devi impostare il flag --protocol quando il protocollo non è http.

    Terraform

    Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base. Per saperne di più, consulta la documentazione di riferimento del fornitore Terraform.

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

    1. Installa e configura Terraform per il tuo progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
    2. Modifica il file di configurazione Terraform e aggiungi una risorsa google_monitoring_uptime_check_config, quindi applica il file di configurazione.

      L'esempio seguente illustra una configurazione che controlla un URL pubblico:

      resource "google_monitoring_uptime_check_config" "example" {
          display_name = "example"
          timeout      = "60s"
      
          http_check {
              port = "80"
              request_method = "GET"
          }
      
          monitored_resource {
              type = "uptime_url"
              labels = {
                  project_id = "PROJECT_ID"
                  host="EXAMPLE.com"
              }
          }
      
          checker_type = "STATIC_IP_CHECKERS"
      }
      

      Nell'espressione precedente:

      • PROJECT_ID è l'ID del tuo progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
      • EXAMPLE.com è l'URL host.
    3. (Facoltativo) Crea un canale di notifica e un criterio di avviso:

      I seguenti passaggi 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 controllo di uptime.

      1. Per creare un canale di notifica:

        1. Nella Google Cloud console, 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. Nella barra degli strumenti della console Google Cloud , seleziona il tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
        3. Seleziona Gestisci canali di notifica.
        4. 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  Controlli di uptime:

          Vai a Controlli di uptime

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

        2. Nella barra degli strumenti della console Google Cloud , seleziona il tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
        3. Individua il controllo di uptime, seleziona Altro, quindi seleziona Aggiungi criterio di avviso.
        4. Nella finestra di dialogo, vai alla sezione Notifiche e nome, espandi Canali di notifica ed effettua le tue selezioni.
        5. Assegna un nome al criterio di avviso e fai clic su Crea criterio.

      Puoi creare una criterio di avviso aggiungendo una risorsa google_monitoring_alert_policy al file di configurazione e applicando la nuova configurazione.

    C#

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    public static object CreateUptimeCheck(string projectId, string hostName,
        string displayName)
    {
        // Define a new config.
        var config = new UptimeCheckConfig()
        {
            DisplayName = displayName,
            MonitoredResource = new MonitoredResource()
            {
                Type = "uptime_url",
                Labels = { { "host", hostName } }
            },
            HttpCheck = new UptimeCheckConfig.Types.HttpCheck()
            {
                Path = "/",
                Port = 80,
            },
            Timeout = TimeSpan.FromSeconds(10).ToDuration(),
            Period = TimeSpan.FromMinutes(5).ToDuration()
        };
        // Create a client.
        var client = UptimeCheckServiceClient.Create();
        ProjectName projectName = new ProjectName(projectId);
        // Create the config.
        var newConfig = client.CreateUptimeCheckConfig(
            projectName,
            config,
            CallSettings.FromExpiration(
                Expiration.FromTimeout(
                    TimeSpan.FromMinutes(2))));
        Console.WriteLine(newConfig.Name);
        return 0;
    }
    

    Java

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    private static void createUptimeCheck(
        String projectId, String displayName, String hostName, String pathName) throws IOException {
      CreateUptimeCheckConfigRequest request =
          CreateUptimeCheckConfigRequest.newBuilder()
              .setParent(ProjectName.format(projectId))
              .setUptimeCheckConfig(
                  UptimeCheckConfig.newBuilder()
                      .setDisplayName(displayName)
                      .setMonitoredResource(
                          MonitoredResource.newBuilder()
                              .setType("uptime_url")
                              .putLabels("host", hostName))
                      .setHttpCheck(HttpCheck.newBuilder().setPath(pathName).setPort(80))
                      .setTimeout(Duration.newBuilder().setSeconds(10))
                      .setPeriod(Duration.newBuilder().setSeconds(300)))
              .build();
      try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
        UptimeCheckConfig config = client.createUptimeCheckConfig(request);
        System.out.println("Uptime check created: " + config.getName());
      } catch (Exception e) {
        usage("Exception creating uptime check: " + e.toString());
        throw e;
      }
    }

    Go

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    
    // createGet creates an example uptime check on a GET request.
    func createGet(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %w", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.CreateUptimeCheckConfigRequest{
    		Parent: "projects/" + projectID,
    		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
    			DisplayName: "new GET uptime check",
    			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
    				MonitoredResource: &monitoredres.MonitoredResource{
    					Type: "uptime_url",
    					Labels: map[string]string{
    						"host": "example.com",
    					},
    				},
    			},
    			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
    				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
    					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_GET,
    					Path:          "/",
    					Port:          80,
    				},
    			},
    			Timeout: &duration.Duration{Seconds: 10},
    			Period:  &duration.Duration{Seconds: 300},
    		},
    	}
    	config, err := client.CreateUptimeCheckConfig(ctx, req)
    	if err != nil {
    		return nil, fmt.Errorf("CreateUptimeCheckConfig GET: %w", err)
    	}
    	fmt.Fprintf(w, "Successfully created GET uptime check %q\n", config.GetDisplayName())
    	return config, nil
    }
    
    // createPost creates an example uptime check on a POST request.
    func createPost(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %w", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.CreateUptimeCheckConfigRequest{
    		Parent: "projects/" + projectID,
    		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
    			DisplayName: "new POST uptime check",
    			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
    				MonitoredResource: &monitoredres.MonitoredResource{
    					Type: "uptime_url",
    					Labels: map[string]string{
    						"host": "example.com",
    					},
    				},
    			},
    			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
    				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
    					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_POST,
    					ContentType:   monitoringpb.UptimeCheckConfig_HttpCheck_URL_ENCODED,
    					Path:          "/",
    					Port:          80,
    					Body:          []byte(base64.URLEncoding.EncodeToString([]byte("key: value"))),
    				},
    			},
    			Timeout: &duration.Duration{Seconds: 10},
    			Period:  &duration.Duration{Seconds: 300},
    		},
    	}
    	config, err := client.CreateUptimeCheckConfig(ctx, req)
    	if err != nil {
    		return nil, fmt.Errorf("CreateUptimeCheckConfig POST: %w", err)
    	}
    	fmt.Fprintf(w, "Successfully created POST uptime check %q\n", config.GetDisplayName())
    	return config, nil
    }
    

    Node.js

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    // Imports the Google Cloud client library
    const monitoring = require('@google-cloud/monitoring');
    
    // Creates a client
    const client = new monitoring.UptimeCheckServiceClient();
    
    /**
     * TODO(developer): Uncomment and edit the following lines of code.
     */
    // const projectId = 'YOUR_PROJECT_ID';
    // const hostname = 'mydomain.com';
    
    const request = {
      // i.e. parent: 'projects/my-project-id'
      parent: client.projectPath(projectId),
      uptimeCheckConfig: {
        displayName: 'My Uptime Check',
        monitoredResource: {
          // See the Uptime Check docs for supported MonitoredResource types
          type: 'uptime_url',
          labels: {
            host: hostname,
          },
        },
        httpCheck: {
          path: '/',
          port: 80,
        },
        timeout: {
          seconds: 10,
        },
        period: {
          seconds: 300,
        },
      },
    };
    
    // Creates an uptime check config for a GCE instance
    const [uptimeCheckConfig] = await client.createUptimeCheckConfig(request);
    console.log('Uptime check created:');
    console.log(`ID: ${uptimeCheckConfig.name}`);
    console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
    console.log('Resource: %j', uptimeCheckConfig.monitoredResource);
    console.log('Period: %j', uptimeCheckConfig.period);
    console.log('Timeout: %j', uptimeCheckConfig.timeout);
    console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
    console.log(
      'Check: %j',
      uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
    );
    console.log(
      `Content matchers: ${uptimeCheckConfig.contentMatchers
        .map(matcher => matcher.content)
        .join(', ')}`
    );
    console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);
    

    PHP

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    use Google\Api\MonitoredResource;
    use Google\Cloud\Monitoring\V3\Client\UptimeCheckServiceClient;
    use Google\Cloud\Monitoring\V3\CreateUptimeCheckConfigRequest;
    use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
    
    /**
     * Example:
     * ```
     * create_uptime_check($projectId, 'myproject.appspot.com', 'Test Uptime Check!');
     * ```
     *
     * @param string $projectId Your project ID
     * @param string $hostName
     * @param string $displayName
     */
    function create_uptime_check($projectId, $hostName = 'example.com', $displayName = 'New uptime check')
    {
        $projectName = 'projects/' . $projectId;
        $uptimeCheckClient = new UptimeCheckServiceClient([
            'projectId' => $projectId,
        ]);
    
        $monitoredResource = new MonitoredResource();
        $monitoredResource->setType('uptime_url');
        $monitoredResource->setLabels(['host' => $hostName]);
    
        $uptimeCheckConfig = new UptimeCheckConfig();
        $uptimeCheckConfig->setDisplayName($displayName);
        $uptimeCheckConfig->setMonitoredResource($monitoredResource);
        $createUptimeCheckConfigRequest = (new CreateUptimeCheckConfigRequest())
            ->setParent($projectName)
            ->setUptimeCheckConfig($uptimeCheckConfig);
    
        $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig($createUptimeCheckConfigRequest);
    
        printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
    }

    Python

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    def create_uptime_check_config_get(
        project_id: str, host_name: str = None, display_name: str = None
    ) -> uptime.UptimeCheckConfig:
        """Creates a new uptime check configuration
    
        Args:
            project_id: Google Cloud project id where the uptime check is created
            host_name: An example label's value for the "host" label
            display_name: A human friendly name of the configuration
    
        Returns:
            A structure that describes a new created uptime check
        """
        config = monitoring_v3.UptimeCheckConfig()
        config.display_name = display_name or "New GET uptime check"
        config.monitored_resource = {
            "type": "uptime_url",
            "labels": {"host": host_name or "example.com"},
        }
        config.http_check = {
            "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.GET,
            "path": "/",
            "port": 80,
        }
        config.timeout = {"seconds": 10}
        config.period = {"seconds": 300}
    
        client = monitoring_v3.UptimeCheckServiceClient()
        new_config = client.create_uptime_check_config(
            request={"parent": project_id, "uptime_check_config": config}
        )
        pprint.pprint(new_config)
        return new_config
    
    
    def create_uptime_check_config_post(
        project_id: str, host_name: str = None, display_name: str = None
    ) -> uptime.UptimeCheckConfig:
        """Creates a new uptime check configuration
    
        Args:
            project_id: Google Cloud project id where the uptime check is created
            host_name: An example label's value for the "host" label
            display_name: A human friendly name of the configuration
    
        Returns:
            A structure that describes a new created uptime check
        """
        config = monitoring_v3.UptimeCheckConfig()
        config.display_name = display_name or "New POST uptime check"
        config.monitored_resource = {
            "type": "uptime_url",
            "labels": {"host": host_name or "example.com"},
        }
        config.http_check = {
            "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.POST,
            "content_type": monitoring_v3.UptimeCheckConfig.HttpCheck.ContentType.URL_ENCODED,
            "body": "foo=bar".encode("utf-8"),
            "path": "/",
            "port": 80,
        }
        config.timeout = {"seconds": 10}
        config.period = {"seconds": 300}
    
        client = monitoring_v3.UptimeCheckServiceClient()
        new_config = client.create_uptime_check_config(
            request={"parent": project_id, "uptime_check_config": config}
        )
        pprint.pprint(new_config)
        return new_config
    
    

    Ruby

    Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    gem "google-cloud-monitoring"
    require "google/cloud/monitoring"
    
    def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
      client = Google::Cloud::Monitoring.uptime_check_service
      project_name = client.project_path project: project_id
      config = {
        display_name:       display_name.nil? ? "New uptime check" : display_name,
        monitored_resource: {
          type:   "uptime_url",
          labels: { "host" => host_name.nil? ? "example.com" : host_name }
        },
        http_check:         { path: "/", port: 80 },
        timeout:            { seconds: 10 },
        period:             { seconds: 300 }
      }
      new_config = client.create_uptime_check_config \
        parent:              project_name,
        uptime_check_config: config
      puts new_config.name
      new_config
    end

    REST

    Per creare un controllo di uptime, chiama il metodo projects.uptimeCheckConfigs.create. Imposta i parametri del metodo come segue:

    • parent: obbligatorio. Il progetto in cui creare il controllo di uptime. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app. Questo campo ha il seguente formato:

      projects/PROJECT_ID
      
    • Il corpo della richiesta deve contenere un oggetto UptimeCheckConfig per il nuovo controllo dell'uptime. Questa pagina fornisce informazioni su alcuni campi. Per la documentazione completa su questo oggetto e sui relativi campi, consulta UptimeCheckConfig:

      • Lascia vuoto il campo name dell'oggetto di configurazione. Il sistema imposta questo campo quando crea l'oggetto di configurazione della risposta.

      • Se stai configurando un controllo HTTP o HTTPS, devi compilare il campo HttpCheck dell'oggetto UptimeCheckConfig. In questo oggetto, imposta il campo requestMethod su GET o POST. Se questo campo viene omesso o impostato su METHOD_UNSPECIFIED, viene emessa una richiesta GET.

        Se stai configurando una richiesta POST, compila i campi contentType, customContentType (facoltativo) e body.

    Il metodo create restituisce l'oggetto UptimeCheckConfig per la nuova configurazione.

    Se la configurazione del tempo di attività creata non funziona come previsto, consulta la sezione Controlli non riusciti in questa pagina.

    Potrebbe verificarsi un ritardo fino a 5 minuti prima che i risultati del controllo di uptime inizino a essere visualizzati in Monitoring. Durante questo periodo, la dashboard di controllo dell'uptime indica lo stato "Nessun dato disponibile".

    Utilizzare i ping ICMP

    Per aiutarti a risolvere i problemi relativi ai controlli di uptime pubblici non riusciti, puoi configurare i controlli di uptime in modo che inviino fino a 3 ping ICMP durante il controllo. I ping possono aiutarti a distinguere tra errori causati, ad esempio, da problemi di connettività di rete e da timeout nell'applicazione.

    Per impostazione predefinita, i controlli del tempo di attività non inviano ping. Ogni ping aggiunge un po' di latenza al controllo di uptime. I controlli di uptime privati non possono inviare ping.

    Quando un controllo di uptime pubblico non va a buon fine, i risultati dei ping vengono scritti nei log di Cloud Logging. Se il ping non va a buon fine, i seguenti campi vengono aggiunti al campo httpRequest nella voce di log:

    • rtt_usec: tempo di round trip per ogni richiesta ping non riuscita.
    • unreachable_count: numero di richieste ping che hanno restituito il codice di stato ICMP_DEST_UNREACH.
    • no_answer_count: numero di richieste ping con timeout che non hanno restituito alcuna risposta.

    I risultati dei ping per i controlli di uptime riusciti non vengono registrati.

    Configurare i ping

    Ogni configurazione dei controlli di uptime include un oggetto HttpCheck o un oggetto TcpCheck. Entrambi gli oggetti includono un campo pingConfig. Utilizza questo campo per specificare il numero di ping ICMP da includere in ogni controllo, fino a 3. Per impostazione predefinita, non vengono inviati ping.

    Per configurare i ping, esegui una delle seguenti operazioni:

    • Quando utilizzi la console Google Cloud , espandi Altre opzioni di target e inserisci un valore nel campo Ping ICMP.

    • Quando utilizzi l'API Cloud Monitoring, utilizza l'oggetto PingConfig, che ha la seguente struttura:

      {
        "pingsCount": integer
      }
      

      Per saperne di più sull'utilizzo dell'API Monitoring per le configurazioni dei controlli di uptime, consulta Crea un controllo di uptime: API o Modifica un controllo di uptime: API.

    Verificare il controllo di uptime

    Quando crei un controllo di uptime nella console Google Cloud , puoi testare la configurazione prima di salvarla.

    Controlli riusciti

    Un controllo di uptime ha esito positivo quando si verificano le seguenti condizioni:

    • Lo stato HTTP corrisponde ai criteri selezionati.
    • La risposta non contiene contenuti obbligatori oppure la ricerca dei contenuti obbligatori nella risposta ha esito positivo.

    Controlli non riusciti

    Di seguito sono riportate alcune possibili cause di un errore di controllo dell'uptime:

    • Errore di connessione - Rifiutato: se utilizzi il tipo di connessione HTTP predefinito, verifica di aver installato un server web che risponda alle richieste HTTP. Un errore di connessione può verificarsi su una nuova istanza se non hai installato un server web. Consulta la Guida rapida per Compute Engine. Se utilizzi un tipo di connessione HTTPS, potresti dover eseguire passaggi di configurazione aggiuntivi. Per i problemi del firewall, vedi Elenco degli indirizzi IP del server di controllo dell'uptime.
    • Nome o servizio non trovato: il nome host potrebbe non essere corretto.
    • 403 Forbidden: il servizio restituisce un codice di errore al controllo dell'uptime. Ad esempio, la configurazione predefinita del server web Apache restituisce questo codice in Amazon Linux, ma restituisce il codice 200 (Success) in alcune altre versioni di Linux. Consulta l'esercitazione LAMP per Amazon Linux o la documentazione del tuo web server.
    • 404 Non trovato: il percorso potrebbe non essere corretto.
    • 408 Request timeout o nessuna risposta: il numero di porta potrebbe essere errato, il servizio potrebbe non essere in esecuzione, potrebbe essere inaccessibile o il timeout potrebbe essere troppo basso. Verifica che il firewall consenta il traffico dai server di uptime. Consulta Elenco degli indirizzi IP dei server di controllo dell'uptime. Il limite di timeout è specificato nelle opzioni di convalida della risposta.

      Un timeout della richiesta potrebbe verificarsi a causa della congestione della rete. Ad esempio, a causa di una congestione temporanea della rete, potresti notare che un controllo non va a buon fine, ma tutti gli altri hanno esito positivo. L'errore di un singolo controllo non causa una notifica quando il criterio di avviso utilizza la configurazione predefinita.

    Se il controllo di uptime è configurato per inviare ping, i risultati dei ping per i controlli di uptime non riusciti vengono scritti in Cloud Logging. Per ulteriori informazioni, vedi Utilizzare i ping ICMP.

    Passaggi successivi