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ê 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.
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.
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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
Enable the Cloud Run and Identity and Access Management (IAM) APIs:
gcloud services enable run.googleapis.com
iam.googleapis.com
Substitua PROJECT_ID pelo ID do projeto de destino.
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 de 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
)
- BUCKET_ID: o nome do bucket de registros (por exemplo,
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
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.
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
- 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.
Colaboradores
Autor: Leonid Yankulin | Engenheiro de relações com desenvolvedores
Outros colaboradores:
- Summit Tuladhar | Engenheiro de software sênior
- Wilton Wong | Arquiteto corporativo
- Xiang Shen | Arquiteto de soluções em nuvem