Questo documento descrive come eseguire il deployment dell'architettura di riferimento descritta in Importare i log da Cloud Storage in Cloud Logging.
Queste istruzioni sono rivolte a tecnici e sviluppatori, tra cui DevOps, SRE (Site Reliability Engineer) e addetti alla sicurezza, che vogliono configurare ed eseguire il job di importazione dei log. Questo documento presuppone inoltre che tu abbia familiarità con l'esecuzione di job di importazione Cloud Run e con l'utilizzo di Cloud Storage e Cloud Logging.
Architettura
Il seguente diagramma mostra come vengono utilizzati i servizi Google Cloud in questa architettura di riferimento:
Per maggiori dettagli, consulta Importare i log da Cloud Storage in Cloud Logging.
Obiettivi
- Crea e configura un job di importazione Cloud Run
- Crea un account di servizio per eseguire il job
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
Assicurati che i log che intendi importare siano stati esportati in precedenza in Cloud Storage, il che significa che sono già organizzati nel formato di esportazione previsto.
In the Google Cloud console, activate Cloud Shell.
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Enable the Cloud Run and Identity and Access Management (IAM) APIs:
gcloud services enable run.googleapis.com
iam.googleapis.com
Sostituisci PROJECT_ID con l'ID del progetto di destinazione.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per implementare questa soluzione, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per concedere il ruolo Scrittore di log al bucket dei log:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) nel progetto di destinazione -
Per concedere il ruolo Visualizzatore oggetti archiviazione al bucket di archiviazione:
Amministratore archiviazione (
roles/storage.admin
) nel progetto in cui è ospitato il bucket di archiviazione -
Per creare un account di servizio:
Crea account di servizio (
roles/iam.serviceAccountCreator
) nel progetto di destinazione -
Per attivare i servizi nel progetto:
Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin
) nel progetto di destinazione -
Per eseguire l'upgrade del bucket di log ed eliminare i log importati:
Amministratore logging (
roles/logging.admin
) nel progetto di destinazione -
Per creare, eseguire e modificare il job di importazione:
Cloud Run Developer (
roles/run.developer
) nel progetto di destinazione
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Esegui l'upgrade del bucket di log per utilizzare Analisi dei log
Ti consigliamo di utilizzare il bucket di log predefinito ed eseguirne l'upgrade per utilizzare Analisi dei log. Tuttavia, in un ambiente di produzione, puoi utilizzare il tuo bucket di log se quello predefinito non soddisfa i tuoi requisiti. Se decidi di utilizzare un tuo bucket, devi eseguire il routing dei log importati nel progetto di destinazione a questo bucket di log. Per ulteriori informazioni, consulta Configurare i bucket di log e Creare un sink.
Quando esegui l'upgrade del bucket, puoi utilizzare SQL per eseguire query e analizzare i log. Non sono previsti costi aggiuntivi per l'upgrade del bucket o l'utilizzo di Analisi dei log.
Per eseguire l'upgrade del bucket di log predefinito nel progetto di destinazione:
Esegui l'upgrade del bucket di log predefinito per utilizzare Analisi dei log:
gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
Sostituisci quanto segue:
- BUCKET_ID: il nome del bucket di log (ad esempio
_Default
) - LOCATION: una regione supportata (ad esempio
global
)
- BUCKET_ID: il nome del bucket di log (ad esempio
Crea il job di importazione Cloud Run
Quando crei il job, puoi utilizzare l'immagine container predefinita fornita per questa architettura di riferimento. Se devi modificare l'implementazione per cambiare il periodo di conservazione di 30 giorni o se hai altri requisiti, puoi creare la tua immagine personalizzata.
In Cloud Shell, crea il job con le configurazioni e le variabili di ambiente:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --region=REGION \ --tasks=TASKS \ --max-retries=0 \ --task-timeout=60m \ --cpu=CPU \ --memory=MEMORY \ --set-env-vars=END_DATE=END_DATE,LOG_ID=LOG_ID,\ START_DATE=START_DATE,STORAGE_BUCKET_NAME=STORAGE_BUCKET_NAME,\ PROJECT_ID=PROJECT_ID
Sostituisci quanto segue:
- JOB_NAME: il nome del tuo job.
- IMAGE_URL: il riferimento all'immagine del contenitore; utilizza
us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution
o l'URL dell'immagine personalizzata, se ne hai creata una utilizzando le istruzioni su GitHub. - REGION: la regione in cui vuoi che si trovi il job. Per evitare costi aggiuntivi, consigliamo di mantenere la regione del job invariata o all'interno della stessa regione con più regioni del bucket Cloud Storage. Ad esempio, se il bucket è negli Stati Uniti in più regioni, puoi utilizzare us-central1. Per informazioni dettagliate, consulta Ottimizzazione dei costi.
- TASKS: il numero di attività che il job deve eseguire.
Il valore predefinito è
1
. Puoi aumentare il numero di attività in caso di timeout. - CPU: il limite di CPU, che può essere 1, 2, 4, 6 o 8 CPU.
Il valore predefinito è
2
. Puoi aumentare il numero se si verificano timeout. Per maggiori dettagli, consulta Configurare i limiti della CPU. - MEMORY: il limite di memoria.
Il valore predefinito è
2Gi
. Puoi aumentare il numero se si verificano timeout. Per maggiori dettagli, consulta Configurare i limiti di memoria. - END_DATE: la fine dell'intervallo di date nel formato MM/GG/AAAA. I log con timestamp precedenti o uguali a questa data vengono importati.
- LOG_ID: l'identificatore dei log che vuoi importare. L'ID log fa parte del
campo
logName
della voce di log. Ad esempio:cloudaudit.googleapis.com
. - START_DATE: l'inizio dell'intervallo di date nel formato MM/GG/AAAA. I log con timestamp successivi o uguali a questa data vengono importati.
- STORAGE_BUCKET_NAME: il nome del bucket Cloud Storage in cui vengono archiviati i log (senza il prefisso
gs://
).
L'opzione
max-retries
è impostata su zero per impedire i tentativi di nuovo esecuzione per le attività non riuscite, che possono causare voci di log duplicate.Se il job Cloud Run non riesce a causa di un timeout, può verificarsi un'importazione incompleta. Per evitare importazioni incomplete a causa di timeout, aumenta il valore
tasks
e le risorse CPU e memoria.
L'aumento di questi valori potrebbe comportare un aumento dei costi. Per informazioni dettagliate sui costi, consulta Ottimizzazione dei costi.
Crea un account di servizio per eseguire il job Cloud Run
In Cloud Shell, crea l'account di servizio gestito dall'utente:
gcloud iam service-accounts create SA_NAME
Sostituisci SA_NAME con il nome dell'account di servizio.
Concedi il ruolo Visualizzatore oggetti Storage al bucket di archiviazione:
gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
Sostituisci quanto segue:
- STORAGE_BUCKET_NAME: il nome del bucket di archiviazione utilizzato nella configurazione del job di importazione. Ad esempio,
my-bucket
. - PROJECT_ID: l'ID progetto di destinazione.
- STORAGE_BUCKET_NAME: il nome del bucket di archiviazione utilizzato nella configurazione del job di importazione. Ad esempio,
Concedi il ruolo Logs Writer al bucket dei log:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter
Imposta l'account di servizio per il job Cloud Run:
gcloud run jobs update JOB_NAME \ --region=REGION \ --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci REGION con la stessa regione in cui hai eseguito il deployment del job di importazione Cloud Run.
Esegui il job di importazione
In Cloud Shell, esegui il job creato:
gcloud run jobs execute JOB_NAME \ --region=REGION
Per saperne di più, consulta Eseguire job e Gestire le esecuzioni dei job.
Se devi eseguire nuovamente il job, elimina i log importati in precedenza per evitare di creare duplicati. Per maggiori dettagli, consulta Eliminare i log importati più avanti in questo documento.
Quando esegui una query sui log importati, i duplicati non vengono visualizzati nei risultati della query.
Cloud Logging rimuove i duplicati (voci di log dello stesso progetto con lo stesso ID inserimento e timestamp) dai risultati delle query. Per ulteriori informazioni, consulta il
campo insert_id
nel riferimento all'API Logging.
Verificare i risultati
Per verificare che il job sia stato completato correttamente, in Cloud Shell puoi eseguire query sui risultati dell'importazione:
gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
L'output mostra i log importati. Se questo progetto è stato utilizzato per eseguire più di un job di importazione nel periodo di tempo specificato, l'output mostra anche i log importati da questi job.
Per altre opzioni e dettagli sulla query delle voci di log, consulta
gcloud logging read
.
Eliminare i log importati
Se devi eseguire lo stesso job più di una volta, elimina i log precedentemente importati per evitare voci duplicate e costi aggiuntivi.
Per eliminare i log importati, in Cloud Shell esegui l'eliminazione dei log:
gcloud logging logs delete imported_logs
Tieni presente che l'eliminazione dei log importati comporta l'eliminazione di tutte le voci di log che sono state importate nel progetto di destinazione e non solo dei risultati dell'ultima esecuzione del job di importazione.
Passaggi successivi
- Esamina il codice di implementazione nel repository GitHub.
- Scopri come analizzare i log importati utilizzando Log Analytics e SQL.
- Per altre architetture di riferimento, diagrammi e best practice, visita il Cloud Architecture Center.
Collaboratori
Autore: Leonid Yankulin | Developer Relations Engineer
Altri collaboratori:
- Summit Tuladhar | Senior Staff Software Engineer
- Wilton Wong | Enterprise Architect
- Xiang Shen | Solutions Architect