Scrivere voci di log ed eseguire query utilizzando uno script Python
Questa guida rapida offre l'introduzione ad alcune delle funzionalità di Cloud Logging e mostra come svolgere le seguenti operazioni:
- Scrivi voci di log utilizzando uno script Python.
- Visualizza le voci di log utilizzando uno script Python.
- Elimina le voci di log utilizzando uno script Python.
- Esegui il routing dei log in un bucket Cloud Storage.
Logging può indirizzare le voci di log alle seguenti destinazioni:
- Bucket Cloud Storage
- Set di dati di BigQuery
- Pub/Sub
- Bucket di Logging
- Cloud de Confiance progetti
Prima di iniziare
Per completare questa guida rapida, devi disporre di un progetto Cloud de Confiance con la fatturazione abilitata. Se non hai un progetto Cloud de Confiance o se la fatturazione non è abilitata per il tuo progetto Cloud de Confiance , procedi nel seguente modo:-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance 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 che hai creato. Per maggiori dettagli, consulta la sezione Esegui la pulizia in questa pagina.
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
Apri Cloud Shell e verifica la configurazione del progetto Cloud de Confiance :
Nella console Cloud de Confiance , fai clic su terminal Attiva Cloud Shell.
Cloud Shell si apre in una finestra e viene visualizzato un messaggio di benvenuto.
Il messaggio di benvenuto riprende l'ID progetto Cloud de Confiance configurato. Se non è il Cloud de Confiance progetto che vuoi utilizzare, esegui questo comando dopo aver sostituito PROJECT_ID con l'ID del tuo progetto:
gcloud config set project PROJECT_ID
Linux
Assicurati che Python sia installato e configurato. Per informazioni sulla preparazione della macchina per lo sviluppo Python, vedi Configurazione di un ambiente di sviluppo Python.
Installa la libreria client di Cloud Logging:
pip install --upgrade google-cloud-logging
Configura le autorizzazioni Identity and Access Management per il tuo progetto Cloud de Confiance . Nei passaggi successivi, crea unaccount di serviziot per il tuo progettoCloud de Confiance , quindi genera e scarica un file nella tua workstation Linux.
-
Nella console Cloud de Confiance , vai alla pagina Service Accounts:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.
Seleziona il progetto di avvio rapido Cloud de Confiance e poi fai clic su Crea service account:
- Inserisci un nome per l'account.
- Inserisci una descrizione dell'account.
- Fai clic su Crea e continua.
Fai clic sul campo Seleziona un ruolo e seleziona Logging Admin.
Fai clic su Fine per completare la creazione del service account.
Crea un file della chiave e scaricalo sulla tua workstation:
- Per il account di servizio, fai clic su more_vert 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 poi fai clic su Crea. Dopo qualche istante, in una finestra viene visualizzato un messaggio simile al seguente:
-
Sulla 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:
Clona il progetto GitHub
python-logging
:git clone https://github.com/googleapis/python-logging
La directory
samples/snippets
contiene i due script utilizzati in questa guida rapida:snippets.py
consente di gestire le voci in un log.export.py
consente di gestire le esportazioni dei log.
Passa alla directory
snippets
:cd python-logging/samples/snippets
Scrittura di 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à pari a
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: * 2018-11-15T16:05:35.548471+00:00: Hello, world! * 2018-11-15T16:05:35.647190+00:00: Goodbye, world! * 2018-11-15T16: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 richiede alcuni istanti per ricevere ed elaborare le voci di log.
Puoi anche visualizzare le voci di log utilizzando Esplora log. Per ulteriori dettagli, vedi Visualizza i log utilizzando Esplora log.
Eliminare le 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
.
Log del percorso
In questa sezione imparerai a:
- Crea un bucket Cloud Storage come destinazione per i dati.
- Crea un sink che copia le nuove voci di log nella destinazione.
- Aggiorna le autorizzazioni del bucket Cloud Storage.
- Scrivi voci di log in Logging.
- (Facoltativo) Verifica il contenuto del bucket Cloud Storage.
Crea destinazione
La destinazione di esportazione per questa guida di avvio rapido è un bucket Cloud Storage. Per creare un bucket Cloud Storage:
-
Nella console Cloud de Confiance , vai alla pagina Bucket:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Cloud Storage.
- Fai clic su Crea bucket.
- Inserisci un nome per il bucket.
- Per Tipo di località, seleziona Regione, che seleziona una località del bucket con la latenza più bassa.
- Per Classe di archiviazione predefinita, seleziona Standard.
- In Controllo dell'accesso, seleziona Granulare.
- Per Strumenti di protezione, seleziona Nessuno, quindi fai clic su Crea.
Questa guida rapida utilizza il nome del bucket Cloud Storage
myloggingproject-1
.
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 lavello ha tre attributi:
- Nome
- Destinazione
- Filtro
Per saperne di più sui sink, consulta Sink.
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"
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 l'autorizzazione di scrittura al sink. Per informazioni su service account, ambiti di accesso e ruoli Identity and Access Management, consulta Service account.
Per aggiornare le autorizzazioni del bucket Cloud Storage:
Identifica l'identità writer del tuo sink:
-
Nella console Cloud de Confiance , vai alla pagina Router dei log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Viene visualizzata una tabella riepilogativa dei lavandini.
Trova il sink nella tabella, seleziona more_vert Menu, e poi seleziona Visualizza dettagli sink.
Copia l'identità dell'autore negli appunti.
-
-
Nella console Cloud de Confiance , vai alla pagina Bucket:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Cloud Storage.
Per aprire la visualizzazione dettagliata, fai clic sul nome del bucket.
Seleziona Autorizzazioni e fai clic su Concedi accesso.
Incolla l'identità dell'autore nella casella Nuove entità. Rimuovi il prefisso
serviceAccount:
dall'indirizzo dell'identità dell'autore.Imposta il Ruolo su
Storage Object Creator
, quindi fai clic su Salva.
Per saperne di più, vedi Impostare le autorizzazioni della destinazione.
Convalida sink
Per verificare che il sink e la destinazione siano configurati correttamente:
Scrivi nuove voci di log nel log
my-log
:python snippets.py my-log write
Visualizza i contenuti del bucket Cloud Storage:
-
Nella console Cloud de Confiance , vai alla pagina Bucket:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Cloud Storage.
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 arrivate in ritardo, potrebbero essere necessarie 2 o 3 ore prima che le prime voci vengano visualizzate nella destinazione o prima che venga visualizzato un errore di configurazione.
Dopo che il bucket ha ricevuto i dati, la visualizzazione dettagliata mostra un risultato simile a:
I dati in ogni cartella sono organizzati in una serie di cartelle etichettate con la cartella di primo livello costituita da un nome di log e poi successivamente l'anno, il mese e il giorno. Per visualizzare i dati esportati dal sink, fai clic sul nome della cartella
my-log
, quindi continua a fare clic sulle sottocartelle relative ad anno, mese e giorno finché non raggiungi un file che termina conjson
: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 a:
{"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
è maggiore di quello diINFO
, la voce di log contenente la stringa "Goodbye, world!" viene esportata nella destinazione sink. Le altre voci di log scritte non sono state esportate nella destinazione perché il loro livello di gravità è stato impostato sul valore predefinito e il livello di gravità predefinito è inferiore aINFO
.
-
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 venga visualizzato un errore di configurazione. Per ulteriori informazioni, consulta la sezione Voci di log arrivate 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 la sezione Aggiornare le autorizzazioni della 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 Cloud de Confiance vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.
(Facoltativo) Elimina le voci di log che hai creato. Se non elimini le voci del log, queste scadranno e verranno rimosse. Consulta la sezione Quote e limiti.
Per eliminare tutte le voci di log nel log
my-log
, esegui questo comando:python snippets.py my-log delete
Elimina il progetto Cloud de Confiance o le risorse di avvio rapido.
Per eliminare il tuo progetto Cloud de Confiance , nel riquadro Informazioni sul progetto della consoleCloud de Confiance , fai clic su Vai alle impostazioni del progetto, quindi su Chiudi.
Per eliminare le risorse della Guida rapida:
Elimina il sink eseguendo questo comando:
python export.py delete mysink
Elimina il bucket Cloud Storage. Vai alla console Cloud de Confiance e fai clic su Storage > Bucket. Seleziona la casella accanto al nome del bucket e fai clic su Elimina.
Passaggi successivi
- Per scoprire come leggere, scrivere e configurare i log delle tue applicazioni, consulta l'API Cloud Logging.
- Per informazioni su Esplora log, vedi Visualizza i log utilizzando Esplora log.
- Per scoprire come indirizzare i dati dei log alle destinazioni supportate, consulta la panoramica su routing e archiviazione.
- Per scoprire come raccogliere le voci di log dalle istanze VM, consulta la Panoramica di Ops Agent.
- Per informazioni su audit e conformità, consulta la panoramica di Cloud Audit Logs.