Avvisi: controlli di uptime per argomenti Pub/Sub

1. Introduzione

Ultimo aggiornamento: 21 giugno 2023

Avvisi sui controlli di uptime per la disponibilità

Gli avvisi sui controlli di uptime ti consentono di identificare e risolvere rapidamente i problemi che potrebbero influire sui tuoi servizi. Se ricevi avvisi relativi alle interruzioni, puoi adottare misure per ridurre al minimo l'impatto sui tuoi utenti e clienti.

I controlli dell'uptime vengono eseguiti a intervalli, il più breve dei quali è di 60 secondi. Potrebbe essere utile monitorare anche i codici di errore come eventi dinamici tramite avvisi basati sui log come indicatore aggiuntivo di mancata disponibilità se hai bisogno di una granularità superiore a 60 secondi. Se un intervallo di 60 secondi o più è accettabile, i controlli di uptime sono un modo semplice per misurare il servizio con poca configurazione aggiuntiva.

Se un servizio non è disponibile, un controllo dell'uptime rileverà il problema anche se non c'è traffico. Il traffico, invece, può essere influenzato da fattori quali manutenzione, aggiornamenti e persino fattori esterni al sistema, come maltempo o eventi sportivi che distraggono l'utilizzo.

Per ulteriori informazioni su quando utilizzare i controlli di uptime, consulta Garantire l'uptime delle risorse Google Cloud.

Argomenti Pub/Sub come canale di notifica degli avvisi

Un argomento Pub/Sub può essere utilizzato come canale di notifica di Google Cloud Monitoring per inviare avvisi a una sottoscrizione Pub/Sub. In questo modo puoi integrare gli avvisi di Cloud Monitoring con altri sistemi, inclusi servizi di notifica di terze parti.

Per utilizzare un argomento Pub/Sub come canale di notifica, devi prima creare un argomento Pub/Sub e una sottoscrizione Pub/Sub. Poi, devi creare un canale di notifica Cloud Monitoring che utilizzi l'argomento Pub/Sub come destinazione.

Quando viene attivato un avviso, Cloud Monitoring invia un messaggio all'argomento Pub/Sub. Il sottoscrittore della sottoscrizione Pub/Sub può quindi elaborare il messaggio e intraprendere l'azione appropriata.

Cosa creerai

In questo codelab, eseguirai il deployment di un'app, creerai un argomento Pub/Sub e un avviso di controllo di uptime per l'app che utilizza l'argomento Pub/Sub come canale di notifica.

Cosa imparerai a fare

  • Come creare un argomento Pub/Sub
  • Come creare un controllo di uptime e un avviso

Questo codelab è incentrato sulla creazione di un avviso per un controllo di uptime. Concetti e codice dell'applicazione non pertinenti sono trattati solo superficialmente e sono forniti solo per operazioni di copia e incolla.

Che cosa ti serve

  • Un account Google Cloud con autorizzazioni per:
  • Esegui il deployment delle applicazioni Cloud Run
  • Crea argomenti Pub/Sub
  • Crea controlli di uptime
  • crea avvisi

2. Preparazione

Seleziona o crea un progetto Google Cloud

Per selezionare un progetto esistente, utilizza il menu a discesa:

b35bf95b8bf3d5d8.png

Per creare un nuovo progetto in Google Cloud, puoi seguire questi passaggi:

  1. Vai alla console di Google Cloud Platform.
  2. Fai clic sul pulsante Crea progetto.
  3. Inserisci un nome per il progetto.
  4. Seleziona un account di fatturazione per il tuo progetto.
  5. Fai clic su pulsante Crea.

Il progetto verrà creato e visualizzerai la dashboard del progetto. Da qui, puoi iniziare a utilizzare i servizi Google Cloud.

Ecco alcuni dettagli aggiuntivi su ogni passaggio:

  • Nome:il nome del progetto deve essere univoco all'interno dell'organizzazione.
  • Account di fatturazione:puoi utilizzare un account di fatturazione esistente o crearne uno nuovo.
  • Crea:dopo aver inserito tutte le informazioni richieste, fai clic sul pulsante Crea per creare il progetto.

Per saperne di più, consulta la documentazione di Google Cloud sulla creazione di progetti.

3. Esegui il deployment dell'applicazione API

Di cosa tratta l'applicazione o l'API di esempio?

La nostra applicazione è una semplice applicazione API Inventory che espone un endpoint API REST con un paio di operazioni per elencare gli articoli dell'inventario e ottenere il conteggio dell'inventario di articoli specifici.

Una volta eseguito il deployment dell'API e supponendo che sia ospitata all'indirizzo https://<somehost>, possiamo accedere agli endpoint API nel seguente modo:

https://<somehost>/inventory

Verranno elencati tutti gli articoli di prodotto con i livelli di inventario disponibili.

https://<somehost>/inventory/{productid}

In questo modo verrà fornito un singolo record con l'ID prodotto e il livello di inventario disponibile per quel prodotto.

I dati della risposta restituita sono in formato JSON.

Nota: questa applicazione API è solo a scopo dimostrativo e non rappresenta un'implementazione API sicura e solida. Lo scopo è quello di avere a disposizione un'applicazione rapida per esplorare lo scopo principale del lab, ovvero Google Cloud Operations.

Dati di esempio e richiesta/risposta API

Per semplificare le cose, l'applicazione non è basata su un database nel backend. Contiene tre ID prodotto di esempio e i relativi livelli di inventario disponibile.

ID prodotto

Livello di inventario disponibile

I-1

10

I-2

20

I-3

30

Di seguito sono riportati la richiesta e la risposta dell'API di esempio:

Richiesta API

Risposta dell'API

https://<somehost>/inventory

[ { "I-1": 10, "I-2": 20, "I-3": 30 }]

https://<somehost>/inventory/I-1

{ "productid": "I-1", "qty": 10}

https://<somehost>/inventory/I-2

{ "productid": "I-2", "qty": 20}

https://<somehost>/inventory/I-200

{ "productid": I-200, "qty": -1}

Clona il repository

Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Nella console GCP, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

bce75f34b2c53987.png

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

f6ef2b5f13479f3a.png

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui hai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro in questo lab può essere svolto semplicemente con un browser.

Configura gcloud

In Cloud Shell, imposta l'ID progetto e salvalo come variabile PROJECT_ID.

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

Ora esegui questo comando:

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

In questa cartella verrà creata una cartella denominata cloud-code-sample-repository.

(Facoltativo) Esegui l'applicazione su Cloud Shell

Per eseguire l'applicazione localmente:

  1. Dal terminale, vai alla versione Python dell'API tramite il seguente comando:

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. Nel terminale, fornisci il comando seguente (al momento della stesura, Cloud Shell viene fornito con Python 3.9.x installato e utilizzeremo la versione predefinita. Se prevedi di eseguirlo localmente sul tuo laptop, puoi utilizzare Python 3.8+) :

$ python app.py

  1. Puoi eseguire il seguente comando per avviare il server Python in locale.

1f798fbddfdc2c8e.png 46edf454cc70c5a6.png

Fai clic su Anteprima sulla porta 8080. 5. Si aprirà una finestra del browser. Visualizzerai un errore 404, il che va bene. Modifica l'URL e cambia la parte dopo il nome host in /inventory.

Ad esempio, sul mio computer ha questo aspetto:

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

Verrà visualizzato l'elenco degli articoli di inventario come spiegato in precedenza:

709d57ee2f0137e4.png

  1. Ora puoi arrestare il server andando al terminale e premendo Ctrl+C.

Esegui il deployment dell'applicazione

Ora eseguiremo il deployment di questa applicazione API su Cloud Run. La procedura prevedeva l'utilizzo del client a riga di comando gcloud per eseguire il comando di deployment del codice in Cloud Run.

Dal terminale, esegui il seguente comando gcloud:

$ gcloud run deploy --source .

Ti verranno poste diverse domande e alcuni punti sono menzionati di seguito:

  1. Nome del servizio (python-flask-api): scegli questo valore predefinito o un nome come my-inventory-api
  2. API [run.googleapis.com] not enabled on project [613162942481]. Vuoi abilitare e riprovare (l'operazione richiederà alcuni minuti)? (y/N)? Y
  3. Specifica una regione: scegli 31 (us-west-1)
  4. API [artifactregistry.googleapis.com] not enabled on project [613162942481]. Vuoi abilitare e riprovare (l'operazione richiederà alcuni minuti)? (y/N)? Y
  5. Il deployment dall'origine richiede un repository Docker Artifact Registry per archiviare i container creati. Verrà creato un repository denominato [cloud-run-source-deploy] nella regione [us-west1].
  6. Do you want to continue (Y/n)? Y
  7. Consenti chiamate non autenticate a [my-inventory-api] (y/N)? Y

Alla fine, verrà avviato il processo per prendere il codice sorgente, containerizzarlo, eseguirne il push su Artifact Registry e poi eseguire il deployment del servizio e della revisione Cloud Run. Devi avere pazienza durante questa procedura (può richiedere 3-4 minuti) e dovresti vedere che la procedura viene completata con l'URL del servizio visualizzato.

Di seguito è riportato un esempio di esecuzione:

87ba8dbf88e8cfa4.png

testa l'applicazione

Ora che abbiamo eseguito il deployment dell'applicazione in Cloud Run, puoi accedere all'applicazione API nel seguente modo:

  1. Prendi nota dell'URL del servizio del passaggio precedente. Ad esempio, nella mia configurazione viene visualizzato come https://my-inventory-api-bt2r5243dq-uw.a.run.app. Chiamiamolo <SERVICE_URL>.
  2. Apri un browser e accedi ai seguenti tre URL per gli endpoint API:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

Deve essere conforme alle specifiche che abbiamo fornito in una sezione precedente con richiesta e risposta API di esempio.

Recupera i dettagli del servizio da Cloud Run

Abbiamo eseguito il deployment del nostro servizio API su Cloud Run, un ambiente di serverless computing. Possiamo visitare il servizio Cloud Run tramite la console Google Cloud in qualsiasi momento.

Nel menu principale, vai a Cloud Run. Verrà visualizzato l'elenco dei servizi in esecuzione in Cloud Run. Dovresti visualizzare il servizio di cui hai appena eseguito il deployment. A seconda del nome selezionato, dovresti vedere qualcosa di simile a questo:

2633965c4bc957cc.png

Fai clic sul nome del servizio per visualizzarne i dettagli. Di seguito sono riportati i dettagli del campione:

33042ae64322ce07.png

Nota l'URL, che non è altro che l'URL del servizio che puoi inserire nel browser e accedere all'API Inventory che abbiamo appena implementato. Consulta le metriche e altri dettagli.

Iniziamo subito con la suite operativa di Google Cloud.

4. Crea un argomento Pub/Sub per ricevere la notifica di avviso

Per creare un argomento Pub/Sub, puoi seguire questi passaggi nella console Google Cloud:

  1. Cerca Pub/Sub nella casella di ricerca e vai a Pub/Sub. 935028bd8f6328ef.png
  2. Se non l'hai già fatto, fai clic sulla scheda Argomenti. 7fd8bf91386a88fd.png
  3. Fai clic sul pulsante Crea argomento. cd9d197f9023c41b.png
  4. Inserisci un nome per l'argomento.

173f313b4a3c4934.png

  1. Fai clic sul pulsante Crea. ca9a02477da21a44.png
  2. Copia il nome dell'argomento utilizzando il pulsante dell'icona di copia. Ti servirà per la sezione successiva.

20848252ee83df93.png

5. Crea un controllo di uptime

Per creare un controllo di uptime per un'applicazione Google Cloud Run:

  1. Vai alla console di Google Cloud Platform.
  2. Fai clic sulla scheda Monitoraggio.
  3. Fai clic sulla scheda Controlli di uptime.
  4. Nella parte superiore della pagina, fai clic sul pulsante Crea controllo di uptime.

96561799ca500777.png

  1. Utilizza i seguenti valori:
  2. Protocollo : HTTPS
  3. Tipo di risorsa : URL
  4. Nome host : inserisci la parte dell'URL del servizio Cloud Run senza https. Un esempio è riportato nella schermata seguente. Se non conosci l'URL del servizio, vai a Cloud Run dalla console Google Cloud principale e vai ai dettagli del servizio Cloud Run come spiegato in precedenza per ottenere l'URL del servizio.
  5. Percorso : healthy
  6. Frequenza di controllo: 1 minuto

342865c6d921ff41.png

  1. Fai clic su Continua.
  2. Attiva l'opzione La corrispondenza dei contenuti è abilitata.
  3. Inserisci "All Izz Well" in Contenuto della risposta. Questa stringa è già presente nell'applicazione quando invia risposte complete.
  4. Keep

6c9ad336b5479478.png

  1. Mantieni Codice di risposta HTTP accettabile impostato su Classi di codici di risposta e 2xx come unica classe di codici di risposta. In questo modo, solo i codici di risposta con 2xx verranno valutati per la stringa e qualsiasi altro codice verrà automaticamente conteggiato come controllo non riuscito. 5a75d8a9e8a11dd4.png
  2. Fai clic su Continua.
  3. Seleziona l'argomento Cloud Pub/Sub come canale di notifica e fai clic su Ok.

d00db9f6ac56d07c.png

  1. Fai clic su Continua.
  2. Aggiungere un titolo riconoscibile d639135da780cce3.png
  3. Fai clic sul pulsante Test.

968753a66ed43a75.png

  1. Rivedi e fai clic sul pulsante Crea quando è tutto pronto 72e5e2081a36d902.png

Il controllo di uptime verrà creato e inizierà a monitorare l'applicazione Cloud Run. Puoi visualizzare lo stato del controllo di uptime nella scheda Controlli di uptime.

3fd026b0c07ef4ec.png

6. Complimenti

Congratulazioni, hai configurato correttamente il controllo di uptime per inviare avvisi a Pub/Sub.