1. Introduzione
In questo codelab, esamineremo l'utilizzo della funzionalità Aiutami a scrivere per creare test di monitoraggio sintetico per i tuoi servizi esistenti.
Attività previste
- Eseguirai il deployment di un'API su Google Cloud Run, che fungerà da base per il servizio che testeremo.
- Poi scriverai un monitoraggio sintetico, una funzionalità di Cloud Monitoring.
- Utilizzerai la funzionalità Aiutami a scrivere per scrivere il monitor sintetico.
Cosa imparerai…
- Che cos'è il monitoraggio sintetico.
- Come utilizzare la funzionalità Aiutami a scrivere di Gemini in Synthetic Monitoring per creare scenari di test che convalidino la funzionalità principale del servizio.
Cosa ti serve…
- Browser web Chrome
- Un account Gmail
- Un progetto cloud con fatturazione abilitata
- Gemini Code Assist abilitato per il tuo progetto cloud
Questo lab è rivolto a sviluppatori di tutti i livelli, inclusi i principianti. Sebbene l'applicazione di esempio sia in linguaggio Python, non è necessario avere familiarità con la programmazione in Python per capire cosa sta succedendo.
2. Configurazione
Ora abiliteremo Gemini in Cloud nel nostro progetto Google Cloud. Segui i passaggi riportati di seguito:
- Visita https://console.cloud.google.com e assicurati di aver selezionato il progetto Google Cloud che intendi utilizzare per questo lab. Fai clic sull'icona Apri Gemini in alto a destra.

- La finestra di chat di Gemini in Cloud si aprirà sul lato destro della console. Fai clic sul pulsante Attiva come mostrato di seguito. Se non vedi il pulsante Abilita e visualizzi invece un'interfaccia di chat, è probabile che tu abbia già abilitato Gemini in Cloud per il progetto e puoi passare direttamente al passaggio successivo.

- Una volta attivato, puoi provare Gemini in Cloud ponendo una o due query. Vengono mostrate alcune query di esempio, ma puoi provare la seguente query
What is Synthetic Monitoring?

Gemini in Google Cloud risponderà alla tua domanda. Consulta l'elenco della documentazione di riferimento fornita su come scrivere monitoraggi sintetici in Google Cloud.
Puoi fare clic sull'icona
nell'angolo in alto a destra per chiudere la finestra della chat di Gemini in Cloud.
3. Esegui il deployment di un'API Inventory di esempio su Google Cloud Run
Prima di iniziare a scrivere i test, avremo bisogno di un'API di esempio da testare. A questo scopo, scriveremo una semplice API di inventario che verrà implementata su Google Cloud Run.
Utilizzeremo Cloud Shell IDE, un ambiente di sviluppo completamente gestito basato su Code OSS. L'ambiente include l'estensione IDE Cloud Code, che rende efficiente l'utilizzo dei servizi Google Cloud. Segui i passaggi riportati di seguito:
- Visita ide.cloud.google.com. Potrebbe essere necessario un po' di tempo prima che l'IDE venga visualizzato, quindi abbi pazienza.
- Fai clic sul pulsante Cloud Code - Sign in (Cloud Code - Accedi) nella barra di stato in basso, come mostrato. Autorizza il plug-in come indicato. Se nella barra di stato vedi "Cloud Code - no project", selezionalo e poi scegli il progetto Google Cloud specifico dall'elenco dei progetti con cui prevedi di lavorare.

- Fai clic sul pulsante Gemini nell'angolo in basso a destra, come mostrato, e seleziona un'ultima volta il progetto Google Cloud corretto. Se ti viene chiesto di abilitare l'API Cloud AI Companion, fallo e vai avanti.
- Dopo aver selezionato il progetto Google Cloud, assicurati di visualizzarlo nel messaggio di stato di Cloud Code nella barra di stato e che Code Assist sia attivato a destra, nella barra di stato, come mostrato di seguito:

- Fai clic sul nome del progetto Google Cloud nella barra di stato in basso.

- Verrà visualizzato un elenco di opzioni. Fai clic su Nuova applicazione dall'elenco di seguito.

- Seleziona l'applicazione Cloud Run.
- Seleziona il modello di applicazione Python (Flask): Cloud Run.
- Salva la nuova applicazione nella posizione che preferisci.
- Una notifica conferma la creazione della tua applicazione e si apre una nuova finestra con l'applicazione caricata, come mostrato di seguito. Viene aperto un file
README.md. Per il momento puoi chiudere questa visualizzazione.

- In Esplora risorse, visita il file
app.pye sostituiscilo con i contenuti mostrati di seguito:
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- È il momento di eseguire il deployment dell'API di inventario su Cloud Run. Dovremo avviare una nuova sessione del terminale dall'IDE Cloud Shell tramite l'icona del menu in alto a sinistra. Fai clic sull'icona del menu e poi su Terminale → Nuovo terminale come mostrato di seguito:

- Nella sessione del terminale, esegui questo comando:
gcloud run deploy --source .
- Il comando precedente chiederà informazioni su un
regionda implementare. Sceglius-central1. Ti verrà chiesto di consentire l'accesso aunauthenticated invocations. Consenti l'accesso dicendoy. - Una volta eseguito correttamente il deployment del servizio, verrà fornito un URL del servizio. Annota questo numero.
4. Testa l'API Inventory
Ora puoi testare l'API Inventory avviando il browser e accedendo ai seguenti endpoint:
SERVICE_URL/inventory
Dovresti ottenere tre articoli di inventario in base ai dati di esempio nel servizio. Di seguito è riportato un esempio di risposta:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
Ora possiamo recuperare un articolo di inventario specifico tramite l'URL riportato di seguito. Dovresti ottenere l'elemento dell'inventario con il valore id pari a 1.
SERVICE_URL/inventory/1
La risposta dovrebbe essere simile a:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
Infine, possiamo provare a recuperare un articolo di inventario che non esiste.
SERVICE_URL/inventory/200
Dovresti ricevere un messaggio di errore perché non esiste alcun articolo di inventario con il valore id di 200. La risposta dovrebbe essere simile alla seguente:
{
"error": "Item not found"
}
Ora siamo pronti a scrivere i nostri test di monitoraggio sintetico in Cloud Monitoring con l'aiuto di Gemini.
5. Monitoraggio sintetico in Google Cloud
Come indicato nella documentazione, i monitor sintetici consentono di definire cosa testare e una sequenza di test. Ad esempio, puoi testare la pagina di accesso della tua applicazione, la procedura di pagamento del tuo negozio di e-commerce o le chiamate API che la tua applicazione effettua a servizi di terze parti.
Quando crei un monitor sintetico, esegui il deployment di una funzione Cloud di 2ª gen. basata su Cloud Run. La funzione deve essere scritta in Node.js e basarsi sul framework Synthetics SDK open source. Cloud Monitoring distribuisce e gestisce questo framework.
Cloud Monitoring supporta i seguenti tipi di monitoraggi sintetici:
- I monitor sintetici personalizzati o basati su Mocha ti consentono di eseguire il deployment di una funzione Cloud Functions monouso completamente configurabile.
- I controlli dei link non funzionanti ti consentono di specificare opzioni, come l'URI di origine, il numero di link testati e il numero di tentativi, prima di eseguire il deployment di una Cloud Function preconfigurata.
Cloud Monitoring svolge gran parte del lavoro pesante durante l'esecuzione di questi monitor sintetici. È responsabile di:
- Esecuzione periodica della tua funzione Cloud.
- Raccolta e archiviazione dei risultati di ogni esecuzione:
- Informazioni su esito positivo e negativo, come il messaggio di errore, il tipo di errore e la riga di codice
- Tempo di esecuzione
- Log
- Metriche
Ci avvaleremo dell'aiuto di Gemini e in particolare della funzionalità Help Me Write, che ci fornirà il codice iniziale per i test, in modo da poterlo utilizzare per testare e creare funzionalità aggiuntive. Iniziamo.
6. Scrittura del monitoraggio sintetico per gli scenari di test dell'API Inventory
Ora andiamo alla console Cloud per scrivere il nostro monitor sintetico.
Visita la pagina Monitoraggio sintetico in Cloud Console. Verrà visualizzata la pagina mostrata di seguito:

Fai clic sul link CREA MONITOR SINTETICO nella pagina precedente. Verrà visualizzato un modulo di configurazione come mostrato di seguito:

Abbiamo fornito un nome s1, ma puoi scegliere qualsiasi altro nome. Nota il pulsante AIUTAMI A CODIFICARE nella schermata precedente. Fai clic su di esso.
Verrà visualizzato un popup in cui dovrai fornire il prompt che descrive gli scenari di test che vuoi eseguire per assicurarti che l'API Inventory funzioni correttamente.

Nella casella di modifica del prompt, utilizza un prompt come quello riportato di seguito:
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
Tieni presente che abbiamo fornito tre scenari di test e devi sostituire il valore SERVICE_URL con il nome effettivo del servizio Cloud Run per il tuo servizio.
Dopo aver fatto clic su GENERA, Gemini genererà il codice della suite di test e anche il file package.json, come mostrato di seguito. Il codice generato per te potrebbe essere diverso da quello visualizzato di seguito. Dai un'occhiata al codice e ai file delle dipendenze nel file package.json.

Fai clic su INSERT INTO CLOUD FUNCTION. Viene visualizzato un modulo di creazione di Cloud Functions con i valori necessari precompilati.

Fai clic su APPLICA FUNZIONE e poi sul pulsante CREA. In questo esempio non abbiamo scelto alcuna configurazione del canale di avviso, ma puoi selezionarla.
In questo modo verrà avviato in background il processo di creazione della funzione Google Cloud. L'operazione potrebbe richiedere alcuni minuti.

Una volta eseguito il deployment della funzione Cloud Functions, Cloud Monitoring inizierà a richiamare il monitor sintetico.
All'inizio vedrai che non ci sono chiamate, come mostrato di seguito:

Una volta che sono presenti esecuzioni specifiche, potrai visualizzare le varie esecuzioni. La schermata seguente mostra che i test sono superati:

Se fai clic sul nome del monitor sintetico (ad es. s1), verranno visualizzate le varie esecuzioni, come mostrato di seguito:

7. Complimenti!
Congratulazioni. Hai eseguito il deployment di un'API di esempio in Google Cloud Run e hai scritto test di monitoraggio sintetico per convalidare la funzionalità del servizio. Durante la procedura, hai utilizzato Gemini per generare il codice per la suite di test.