Scrivi voci di log ed esegui query utilizzando uno script Python

La libreria client di Cloud Logging per Python ti consente di scrivere, eseguire query e gestire le voci di log in modo programmatico, in modo da poter monitorare e risolvere i problemi delle tue applicazioni. In questa guida rapida, utilizzerai uno script Python per scrivere, visualizzare ed eliminare voci di log e configurerai un sink per instradare i log a un bucket Cloud Storage. Oltre ai bucket Cloud Storage, Logging consente di indirizzare le voci di log a set di dati BigQuery, Pub/Sub, bucket di Logging e altri progetti Google Cloud .

Prima di iniziare

Per completare questa guida rapida, devi avere un progetto Google Cloud con la fatturazione abilitata. Se non hai un progetto Google Cloud o se non hai abilitato la fatturazione per il tuo progetto Google Cloud , segui questi passaggi:
  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment di workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  7. Verify that billing is enabled for your Google Cloud project.

Questa guida rapida utilizza Cloud Logging e Cloud Storage. L'utilizzo di queste risorse può comportare un costo. Al termine di questa guida rapida, puoi evitare l'addebito di ulteriori costi eliminando le risorse create. Per ulteriori dettagli, consulta Esegui la pulizia in questa pagina.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare, elencare ed eliminare voci di log e bucket Cloud Storage, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

  • Creare, elencare ed eliminare voci di log: Logging Admin (roles/logging.admin)
  • Creare, elencare ed eliminare bucket Cloud Storage: Storage Admin (roles/storage.admin)

Per saperne di più 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.

I ruoli Logs Writer (roles/logging.logWriter) e Visualizzatore log (roles/logging.viewer) contengono le autorizzazioni per creare ed elencare le voci di log. Per eliminare le voci di log, concedi il ruolo Amministratore Logging (roles/logging.admin), che contiene le autorizzazioni per creare, elencare ed eliminare le voci di log. Tieni presente che il ruolo Amministratore Logging (roles/logging.admin) concede anche le autorizzazioni per eseguire tutte le azioni in Logging.

Per iniziare

Per completare questa guida rapida, puoi utilizzare l'ambiente Cloud Shell o un ambiente Linux generico. Python è preinstallato in Cloud Shell.

Cloud Shell

  1. Apri Cloud Shell e verifica la configurazione del progetto Google Cloud :

    1. Nella console Google Cloud , fai clic su Attiva Cloud Shell.

      Cloud Shell si apre in una finestra e mostra un messaggio di benvenuto.

    2. Il messaggio di benvenuto mostra l'ID progetto Google Cloud configurato. Se questo non è il progetto Google Cloud che vuoi utilizzare, esegui il comando seguente dopo aver sostituito PROJECT_ID con l'ID del tuo progetto:

      gcloud config set project PROJECT_ID
      

Linux

  1. Assicurati che Python sia installato e configurato. Per informazioni sulla preparazione della macchina per lo sviluppo con Python, consulta Configurazione di un ambiente di sviluppo Python.

  2. Installa la libreria client di Cloud Logging:

    pip install --upgrade google-cloud-logging
    
  3. Configura le autorizzazioni di Identity and Access Management per il tuo progetto Google Cloud . Nei passaggi seguenti, crei un account di servizio per il tuo progettoGoogle Cloud , quindi generi e scarichi un file sulla tua workstation Linux.

    1. Nella console Google Cloud , vai alla pagina Service account:

      Vai a Service account

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

    2. Seleziona il progetto Google Cloud della guida rapida, quindi fai clic su Crea service account:

      • Inserisci un nome per l'account.
      • Inserisci una descrizione dell'account.
      • Fai clic su Crea e continua.
    3. Fai clic sul campo Seleziona un ruolo e seleziona Logging Admin.

    4. Fai clic su Fine per completare la creazione del service account.

    5. Crea un file della chiave e scaricalo sulla tua workstation:

      • Per il tuo account di servizio, fai clic su Altre opzioni e seleziona Gestisci chiavi.
      • Nel riquadro Chiavi, fai clic su Aggiungi chiave.
      • Fai clic su Crea nuova chiave.
      • In Tipo di chiave, seleziona JSON e fai clic su Crea. Dopo un istante, viene visualizzata una finestra con un messaggio simile al seguente:

        Chiave privata salvata nel computer.

  4. Sulla tua workstation Linux, fornisci le credenziali di autenticazione alla tua applicazione impostando la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul percorso del file della chiave. Ad esempio:

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/FILE_NAME.json"
    

    Questa variabile di ambiente si applica solo alla sessione di Shell corrente, quindi se apri una nuova sessione, imposta di nuovo la variabile.

Clona origine

Per configurare Cloud Shell per questa guida rapida:

  1. Clona il progetto GitHub python-logging:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    La directory samples/snippets contiene i due script utilizzati in questa guida rapida:

    • snippets.py consente di gestire le voci di un log.
    • export.py consente di gestire le esportazioni dei log.
  2. Passa alla directory snippets:

    cd logging/samples/snippets
    

Scrivi voci di log

Lo script snippets.py utilizza le librerie client Python per scrivere voci di log in Logging. Quando l'opzione write viene specificata nella riga di comando, lo script scrive le seguenti voci di log:

  • Una voce con dati non strutturati e nessun livello di gravità specificato.
  • Una voce con dati non strutturati e un livello di gravità ERROR.
  • Una voce con dati strutturati JSON e nessun livello di gravità specificato.

Per scrivere nuove voci di log nel log my-log, esegui lo script snippets.py con l'opzione write:

python snippets.py my-log write

Visualizza voci di log

Per visualizzare le voci di log in Cloud Shell, esegui lo script snippets.py con l'opzione list:

python snippets.py my-log list

Il comando viene completato con il risultato:

Listing entries for logger my-log:
* 2025-11-13T16:05:35.548471+00:00: Hello, world!
* 2025-11-13T16:05:35.647190+00:00: Goodbye, world!
* 2025-11-13T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

Se il risultato non mostra alcuna voce, riprova a eseguire il comando. Logging impiega alcuni istanti per ricevere ed elaborare le voci di log.

Puoi anche visualizzare le voci di log che hai scritto utilizzando Esplora log. Per maggiori dettagli, consulta Visualizza i log utilizzando Esplora log.

Elimina voci di log

Per eliminare tutte le voci di log nel log my-log, esegui lo script snippets.py con l'opzione delete:

python snippets.py my-log delete

Il comando viene completato con il risultato:

Deleted all logging entries for my-log.

Instrada i log

In questa sezione, eseguirai questi passaggi:

  • Crea un bucket Cloud Storage come destinazione per i tuoi dati.
  • Crea un sink che copia le nuove voci di log nella destinazione.
  • Aggiorna le autorizzazioni del bucket Cloud Storage.
  • Scrivere voci di log in Logging.
  • Facoltativamente, verifica i contenuti del bucket Cloud Storage.

Crea destinazione

La destinazione di esportazione per questa guida rapida è un bucket Cloud Storage. Per creare un bucket Cloud Storage, segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Bucket:

    Vai a Bucket

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

  2. Fai clic su Crea bucket.
  3. Inserisci un nome per il bucket. Questa guida rapida utilizza il nome myloggingproject-1.
  4. In Tipo di località, seleziona Regione, che seleziona una località del bucket con la latenza più bassa.
  5. In Imposta una classe predefinita, seleziona Standard.
  6. In Controllo dell'accesso, seleziona Granulare.
  7. In Strumenti di protezione, seleziona Nessuno, quindi fai clic su Crea.

Crea un sink

Un sink è una regola che determina se Logging esegue il routing di una voce di log appena arrivata a una destinazione. Un sink ha tre attributi:

  • Nome
  • Destinazione
  • Filtro

Per saperne di più sui sink, consulta Informazioni sui sink di log.

Se una voce di log appena arrivata soddisfa le condizioni della query, viene indirizzata alla destinazione.

Lo script export.py utilizza le librerie client Python per creare, elencare, modificare ed eliminare i sink. Per creare il sink mysink che esporta tutte le voci di log con una gravità di almeno INFO nel bucket Cloud Storage myloggingproject-1, esegui questo comando:

python export.py create mysink myloggingproject-1 "severity>=INFO"

Lo script restituisce quanto segue:

Created sink mysink

Per visualizzare i sink, esegui lo script export.py con l'opzione list:

python export.py list

Lo script restituisce quanto segue:

mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

Aggiorna le autorizzazioni di destinazione

Le autorizzazioni della destinazione, in questo caso il bucket Cloud Storage, non vengono modificate quando crei un sink utilizzando lo script export.py. Devi modificare le impostazioni delle autorizzazioni del bucket Cloud Storage per concedere le autorizzazioni di scrittura nel sink. Per informazioni sui service account, sugli ambiti di accesso e sui ruoli di Identity and Access Management, consulta Service account.

Per aggiornare le autorizzazioni sul bucket Cloud Storage:

  1. Identifica l'identità writer del sink:

    1. Nella console Google Cloud , vai alla pagina Router dei log:

      Vai a Router dei log

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

      Viene visualizzata una tabella di riepilogo dei sink.

    2. Trova il sink nella tabella, seleziona Menu, quindi seleziona Visualizza dettagli sink.

    3. Copia l'identità del writer negli appunti.

  2. Nella console Google Cloud , vai alla pagina Bucket:

    Vai a Bucket

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

  3. Per aprire la visualizzazione dettagliata, fai clic sul nome del bucket.

  4. Seleziona Autorizzazioni e fai clic su Concedi l'accesso.

  5. Incolla l'identità writer nella casella Nuove entità. Rimuovi il prefisso serviceAccount: dall'indirizzo dell'identità writer.

  6. Imposta Ruolo su Storage Admin, quindi fai clic su Salva.

Per saperne di più, consulta Imposta le autorizzazioni della destinazione.

Convalida sink

Per verificare che il sink e la destinazione siano configurati correttamente, segui questi passaggi:

  1. Scrivi nuove voci di log nel log my-log:

    python snippets.py my-log write
    
  2. Visualizza i contenuti del bucket Cloud Storage:

    1. Nella console Google Cloud , vai alla pagina Bucket:

      Vai a Bucket

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

    2. Per aprire la visualizzazione dettagliata, fai clic sul nome del bucket. La visualizzazione dettagliata elenca le cartelle che contengono dati. Se non sono presenti dati nel bucket, viene visualizzato il seguente messaggio:

      There are no live objects in this bucket.

      Come descritto in Voci di log in ritardo, potrebbero essere necessarie 2 o 3 ore prima che le prime voci vengano visualizzate nella destinazione o prima che ti venga notificato un errore di configurazione.

      Una volta che il bucket ha ricevuto i dati, la visualizzazione dettagliata mostra un risultato simile al seguente:

      Visualizzazione dettagliata dei contenuti del bucket.

    3. I dati di ogni cartella sono organizzati in una serie di cartelle etichettate con la cartella di primo livello costituita da un nome di log e, successivamente, da anno, mese e giorno. Per visualizzare i dati esportati dal sink, fai clic sul nome della cartella my-log, quindi continua a fare clic sulle sottocartelle di anno, mese e giorno fino a raggiungere un file che termina con json:

      Visualizzazione della sottocartella dei contenuti del bucket.

    4. Il file JSON contiene le voci di log esportate nel bucket Cloud Storage. Fai clic sul nome del file JSON per visualizzarne i contenuti. I contenuti sono simili ai seguenti:

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      Poiché il livello di gravità di ERROR è superiore al livello di gravità di INFO, la voce di log contenente la stringa "Goodbye, world!" viene esportata nella destinazione del sink. Le altre voci di log scritte non sono state esportate nella destinazione perché il loro livello di gravità è stato impostato sul valore predefinito, che è inferiore a INFO.

Risoluzione dei problemi

Esistono diversi motivi per cui un bucket Cloud Storage potrebbe essere vuoto:

  • Il bucket non ha ricevuto dati. Potrebbero essere necessarie 2 o 3 ore prima che le prime voci vengano visualizzate nella destinazione o prima che ti venga notificato un errore di configurazione. Per saperne di più, consulta Voci di log con arrivo in ritardo.

  • Si è verificato un errore di configurazione. In questo caso, riceverai un'email con un oggetto simile al seguente:

     [ACTION REQUIRED] Logging export config error in myloggingproject.

    Il contenuto del corpo dell'email descrive il problema di configurazione. Ad esempio, se non aggiorni le autorizzazioni di destinazione, l'email elenca il seguente codice di errore:

     bucket_permission_denied

    Per correggere questa condizione specifica, consulta Aggiorna le autorizzazioni di destinazione in questa pagina.

  • Non sono state scritte voci di log dopo la creazione del sink. Il sink viene applicato solo alle voci di log appena arrivate. Per correggere questa situazione, scrivi nuove voci di log:

     python snippets.py my-log write
    

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

  1. (Facoltativo) Elimina le voci di log che hai creato. Se non elimini le voci di log, queste scadranno e verranno rimosse. Consulta Quote e limiti.

    Per eliminare tutte le voci di log nel log my-log, esegui questo comando:

     python snippets.py my-log delete
    
  2. Elimina il tuo progetto Google Cloud o le risorse della guida rapida.

    • Per eliminare il progetto Google Cloud , nel riquadro Informazioni progetto della consoleGoogle Cloud , fai clic su Vai alle impostazioni progetto, quindi su Chiudi.

    • Per eliminare le risorse della guida rapida:

      1. Elimina il sink eseguendo questo comando:

        python export.py delete mysink
        
      2. Elimina il bucket Cloud Storage. Vai alla console Google Cloud e fai clic su Storage > Bucket. Seleziona la casella accanto al nome del bucket e fai clic su Elimina.

Passaggi successivi