Implante um job para importar registros do Cloud Storage para o Cloud Logging

Last reviewed 2024-01-02 UTC

Neste documento, descrevemos como implantar a arquitetura de referência descrita em Importar registros do Cloud Storage para o Cloud Logging.

Estas instruções são destinadas a engenheiros e desenvolvedores, incluindo DevOps, engenheiros de confiabilidade do site (SREs) e investigadores de segurança que querem configurar e executar o job de importação de registros. Neste documento, consideramos também que você já tem familiaridade com a execução de jobs de importação do Cloud Run e sabe como usar o Cloud Storage e o Cloud Logging.

Arquitetura

O diagrama a seguir mostra como os serviços do Google Cloud são usados nesta arquitetura de referência:

Diagrama do fluxo de trabalho da importação de registros do Cloud Storage para o Cloud Logging.

Para detalhes, consulte Importar registros do Cloud Storage para o Cloud Logging.

Objetivos

  • Criar e configurar um job de importação do Cloud Run
  • Criar uma conta de serviço para executar o job

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. Verifique se os registros que você pretende importar foram exportados anteriormente para o Cloud Storage, o que significa que eles já estão organizados no formato de exportação esperado.

  2. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

  3. Crie ou selecione um projeto do Google Cloud.

    • Crie um projeto do Google Cloud:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto do Google Cloud que você está criando.

    • Selecione o projeto do Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud.

  4. Substitua PROJECT_ID pelo ID do projeto de destino.

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Ative as APIs Cloud Run and Identity and Access Management (IAM):

    gcloud services enable run.googleapis.com iam.googleapis.com

Funções exigidas

Para receber as permissões necessárias para implantar esta solução, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Para conceder o papel Gravador de registros no bucket de registros: Administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin) no projeto de destino
  • Para conceder o papel Leitor de objetos do Storage no bucket de armazenamento: Administrador do Storage (roles/storage.admin) no projeto em que o bucket de armazenamento está hospedado
  • Para criar uma conta de serviço: Criar contas de serviço (roles/iam.serviceAccountCreator) no projeto de destino.
  • Para ativar serviços no projeto: Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin) no projeto de destino
  • Para fazer upgrade do bucket de registros e excluir os registros importados: Administrador do Logging (roles/logging.admin) no projeto de destino
  • Para criar, executar e modificar o job de importação: Desenvolvedor do Cloud Run (roles/run.developer) no projeto de destino

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Fazer upgrade do bucket de registros para usar a Análise de dados de registros

Recomendamos que você use o bucket de registros padrão e faça upgrade dele para usar a Análise de dados de registros. No entanto, em um ambiente de produção, use seu próprio bucket de registros se o bucket padrão não atender aos seus requisitos. Se decidir usar seu próprio bucket, você precisará rotear os registros ingeridos para o projeto de destino para esse bucket de registros. Para mais informações, consulte Configurar buckets de registros e Criar um coletor.

Ao fazer upgrade do bucket, é possível usar o SQL para consultar e analisar os registros. Não há custo extra para fazer upgrade do bucket ou usar a Análise de dados de registros.

Para fazer upgrade do bucket de registros padrão no projeto de destino, faça isto:

  • Faça upgrade do bucket de registros padrão para usar a Análise de dados de registros:

    gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
    

    Substitua:

    • BUCKET_ID: o nome do bucket de registros (por exemplo, _Default)
    • LOCATION: uma região compatível (por exemplo, global)

Criar o job de importação do Cloud Run

Ao criar o job, é possível usar a imagem do contêiner pré-criada fornecida para essa arquitetura de referência. Se você precisar modificar a implementação para alterar o período de armazenamento de 30 dias ou se tiver outros requisitos, crie sua imagem personalizada.

  • No Cloud Shell, crie o job com as configurações e as variáveis de 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
    

    Substitua:

    • JOB_NAME: o nome do job.
    • IMAGE_URL: a referência à imagem do contêiner. Use us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution ou o URL da imagem personalizada, se tiver criado uma usando as instruções no GitHub (em inglês).
    • REGION: a região onde você quer que o job esteja localizado. Para evitar custos extras, recomendamos manter a região do job igual à multirregião da região do bucket do Cloud Storage ou dentro dessa mesma multirregião. Por exemplo, se o bucket for a multirregião dos EUA, use us-central1. Para detalhes, consulte Otimização de custos.
    • TASKS: o número de tarefas que o job precisa executar. O valor padrão é 1. É possível aumentar o número de tarefas quando os tempos limite são atingidos.
    • CPU: o limite da CPU, que pode ser 1, 2, 4, 6 ou 8 CPUs. O valor padrão é 2. É possível aumentar o número quando os tempos limite são atingidos. Para detalhes, consulte Configurar limites de CPU.
    • MEMORY: o limite de memória. O valor padrão é 2Gi. É possível aumentar o número quando os tempos limite são atingidos. Para detalhes, consulte Configurar limites de memória.
    • END_DATE: o fim do período no formato MM/DD/AAAA. Os registros com carimbos de data/hora anteriores ou iguais a essa data são importados.
    • LOG_ID: o identificador do registro que você quer importar. O ID do registro é uma parte do campo logName da entrada de registro. Por exemplo, cloudaudit.googleapis.com.
    • START_DATE: o início do período no formato MM/DD/AAAA. Os registros com carimbos de data/hora posteriores ou iguais a essa data são importados.
    • STORAGE_BUCKET_NAME: o nome do bucket do Cloud Storage em que os registros são armazenados (sem o prefixo gs://).

    A opção max-retries é definida como zero para evitar novas tentativas de tarefas que falharam, o que pode causar entradas de registro duplicadas.

    Se o job do Cloud Run falhar devido ao tempo limite, poderá ocorrer uma importação incompleta. Para evitar importações incompletas devido a tempos limite, aumente o valor tasks, além dos recursos de CPU e memória.

Aumentar esses valores pode elevar os custos. Para detalhes sobre custos, consulte Otimização de custos.

Criar uma conta de serviço para executar o job do Cloud Run

  1. No Cloud Shell, crie a conta de serviço gerenciada pelo usuário:

    gcloud iam service-accounts create SA_NAME
    

    Substitua SA_NAME pelo nome da conta de serviço.

  2. Conceda o papel Leitor de objetos do Storage no bucket de armazenamento:

    gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \
    --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/storage.objectViewer
    

    Substitua:

    • STORAGE_BUCKET_NAME: o nome do bucket de armazenamento que você usou na configuração do job de importação. Por exemplo, my-bucket.
    • PROJECT_ID: o ID do projeto de destino.
  3. Conceda o papel de Gravador de registros no bucket de registros:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/logging.logWriter
    
  4. Defina a conta de serviço para o job do Cloud Run:

    gcloud run jobs update JOB_NAME \
    --region=REGION \
    --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Substitua REGION pela mesma região onde você implantou o job de importação do Cloud Run.

Executar o job de importação

  • No Cloud Shell, execute o job criado:

    gcloud run jobs execute JOB_NAME \
    --region=REGION
    

Para mais informações, consulte Executar jobs e Gerenciar execuções de jobs.

Se você precisar executar o job novamente, exclua os registros importados anteriormente para evitar a criação de cópias. Para detalhes, consulte Excluir registros importados posteriormente neste documento.

Ao consultar os registros importados, as cópias não aparecem nos resultados da consulta. O Cloud Logging remove cópias (entradas de registro do mesmo projeto, com o mesmo ID de inserção e carimbo de data/hora) dos resultados da consulta. Para mais informações, consulte o campo insert_id na Referência da API Logging.

Verificar resultados

Para validar se o job foi concluído com sucesso, no Cloud Shell, consulte os resultados da importação:

  gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'

A saída mostra os registros importados. Se o projeto foi usado para executar mais de um job de importação dentro do período especificado, a saída também mostrará os registros importados desses jobs.

Para mais opções e detalhes sobre como consultar entradas de registro, consulte gcloud logging read.

Excluir registros importados

Se você precisar executar o mesmo job mais de uma vez, exclua os registros importados anteriormente para evitar entradas duplicadas e aumento dos custos.

  • Para excluir registros importados, execute a exclusão dos registros no Cloud Shell:

    gcloud logging logs delete imported_logs
    

Lembre-se que a exclusão dos registros importados limpa todas as entradas de registro importadas para o projeto de destino, e não apenas os resultados da última execução do job de importação.

Próximas etapas

Colaboradores

Autor: Leonid Yankulin | Engenheiro de relações com desenvolvedores

Outros colaboradores: