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:
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ê vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso, utilize a calculadora de preços.
Antes de começar
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.
In the Google Cloud console, activate Cloud Shell.
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
Substitua PROJECT_ID pelo ID do projeto de destino.
Verifique se o faturamento está ativado para seu projeto do Google Cloud .
-
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 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
)
- BUCKET_ID: o nome do bucket de registros (por exemplo,
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 em que 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 mais 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.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.
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.
- STORAGE_BUCKET_NAME: o nome do bucket de armazenamento que você usou na configuração do job de importação. Por exemplo,
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
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.
No Cloud Shell, execute o job criado:
gcloud run jobs execute JOB_NAME \ --region=REGION
Para excluir registros importados, execute a exclusão dos registros no Cloud Shell:
gcloud logging logs delete imported_logs
- Revise o código de implementação no repositório do GitHub (em inglês).
- Saiba como analisar registros importados usando a Análise de dados de registros e SQL.
- Para mais arquiteturas de referência, diagramas e práticas recomendadas, confira a Central de arquitetura do Cloud.
- Summit Tuladhar | Engenheiro de software sênior
- Wilton Wong | Arquiteto corporativo
- Xiang Shen | Arquiteto de soluções
Funções exigidas
Para receber as permissões necessárias para implantar essa solução, peça ao administrador para conceder a você os seguintes papéis do IAM:
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando 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:
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.
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
Executar o job de importação
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.
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: