Esegui il deployment di un job per importare i log da Cloud Storage a Cloud Logging

Last reviewed 2025-02-19 UTC

Questo documento descrive come implementare l'architettura di riferimento descritta in Importare i log da Cloud Storage a Cloud Logging.

Queste istruzioni sono destinate a ingegneri e sviluppatori, inclusi DevOps, Site Reliability Engineer (SRE) e investigatori della 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:

Diagramma del flusso di lavoro di importazione dei log da Cloud Storage a Cloud Logging.

Per maggiori dettagli, consulta Importare i log da Cloud Storage a 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 vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Prima di iniziare

  1. 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.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  3. 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Sostituisci PROJECT_ID con l'ID progetto di destinazione.

  4. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .

  5. Ruoli obbligatori

    Per ottenere le autorizzazioni necessarie per implementare questa soluzione, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    • Per concedere il ruolo Logs Writer nel bucket dei log: Project IAM Admin (roles/resourcemanager.projectIamAdmin) nel progetto di destinazione
    • Per concedere il ruolo Visualizzatore oggetti Storage nel bucket di archiviazione: Storage Admin (roles/storage.admin) nel progetto in cui è ospitato il bucket di archiviazione
    • Per creare un account di servizio: Crea service account (roles/iam.serviceAccountCreator) nel progetto di destinazione
    • Per abilitare i servizi sul progetto: Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin) sul progetto di destinazione
    • Per eseguire l'upgrade del bucket di log ed eliminare i log importati: Amministratore logging (roles/logging.admin) sul progetto di destinazione
    • Per creare, eseguire e modificare il job di importazione: Sviluppatore Cloud Run (roles/run.developer) sul progetto di destinazione

    Per ulteriori informazioni 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.

    Eseguire l'upgrade del bucket di log per utilizzare Analisi dei log

    Ti consigliamo di utilizzare il bucket di log predefinito ed eseguire l'upgrade per utilizzare Analisi dei log. Tuttavia, in un ambiente di produzione, puoi utilizzare il tuo bucket di log se il bucket predefinito non soddisfa i tuoi requisiti. Se decidi di utilizzare il tuo bucket, devi indirizzare i log inseriti nel progetto di destinazione a questo bucket di log. Per saperne di più, 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 dei log (ad esempio _Default)
      • LOCATION: una regione supportata (ad esempio, global)

    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 job.
      • IMAGE_URL: il riferimento all'immagine del container; utilizza us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution o l'URL dell'immagine personalizzata, se ne hai creata una seguendo le istruzioni riportate su GitHub.
      • REGION: la regione in cui vuoi che si trovi il job; per evitare costi aggiuntivi, ti consigliamo di mantenere la regione del job uguale o all'interno della stessa multi-regione della regione del bucket Cloud Storage. Ad esempio, se il bucket si trova nella multiregione Stati Uniti, puoi utilizzare us-central1. Per i dettagli, consulta la sezione Ottimizzazione dei costi.
      • TASKS: il numero di attività che il job deve eseguire. Il valore predefinito è 1. Puoi aumentare il numero di attività se si verificano timeout.
      • CPU: il limite della 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, vedi 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. Vengono importati i log con timestamp precedenti o uguali a questa data.
      • 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. Vengono importati i log con timestamp successivi o uguali a questa data.
      • STORAGE_BUCKET_NAME: il nome del bucket Cloud Storage in cui sono archiviati i log (senza il prefisso gs://).

      L'opzione max-retries è impostata su zero per evitare i nuovi tentativi per le attività non riuscite, che possono causare voci di log duplicate.

      Se il job Cloud Run non riesce a causa di un timeout, l'importazione potrebbe essere incompleta. Per evitare importazioni incomplete a causa di timeout, aumenta il valore di tasks, nonché 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

    1. In Cloud Shell, crea il account di servizio gestito dall'utente:

      gcloud iam service-accounts create SA_NAME
      

      Sostituisci SA_NAME con il nome del service account.

    2. Concedi il ruolo Visualizzatore oggetti Storage sul 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 che hai utilizzato nella configurazione del job di importazione. Ad esempio, my-bucket.
      • PROJECT_ID: l'ID progetto di destinazione.
    3. Concedi il ruolo Scrittore log sul bucket dei log:

      gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/logging.logWriter
      
    4. Imposta il 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 i dettagli, vedi 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 della query. Per ulteriori informazioni, consulta il campo insert_id nel riferimento API Logging.

    Verificare i risultati

    Per verificare che il job sia stato completato correttamente, in Cloud Shell puoi eseguire una 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 ulteriori opzioni e dettagli sull'esecuzione di query sulle voci di log, vedi gcloud logging read.

    Elimina i log importati

    Se devi eseguire lo stesso job più di una volta, elimina i log importati in precedenza per evitare voci duplicate e costi maggiori.

    • 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 elimina tutte le voci di log importate nel progetto di destinazione e non solo i risultati dell'ultima esecuzione del job di importazione.

    Passaggi successivi

    Collaboratori

    Autore: Leonid Yankulin | Developer Relations Engineer

    Altri collaboratori: