Este documento descreve como implementar a arquitetura de referência descrita no artigo Importe registos do Cloud Storage para o Cloud Logging.
Estas instruções destinam-se a engenheiros e programadores, incluindo DevOps, engenheiros de fiabilidade do site (SREs) e investigadores de segurança, que pretendem configurar e executar a tarefa de importação de registos. Este documento também pressupõe que tem experiência na execução de tarefas de importação do Cloud Run e sabe como usar o Cloud Storage e o Cloud Logging.
Arquitetura
O diagrama seguinte mostra como os Google Cloud serviços são usados nesta arquitetura de referência:
Para ver detalhes, consulte o artigo Importe registos do Cloud Storage para o Cloud Logging.
Objetivos
- Crie e configure uma tarefa de importação do Cloud Run
- Crie uma conta de serviço para executar a tarefa
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Antes de começar
Certifique-se de que os registos que pretende importar foram exportados anteriormente para o Cloud Storage, o que significa que 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.
Certifique-se de que a faturação está ativada para o seu Google Cloud projeto.
-
Para conceder a função Logs Writer no contentor de registos:
Administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin
) no projeto de destino -
Para conceder a função de visualizador de objetos de armazenamento no contentor de armazenamento:
Administrador de armazenamento (
roles/storage.admin
) no projeto onde o contentor de armazenamento está alojado -
Para criar uma conta de serviço:
Criar contas de serviço (
roles/iam.serviceAccountCreator
) no projeto de destino -
Para ativar os serviços no projeto:
Administrador de utilização de serviços (
roles/serviceusage.serviceUsageAdmin
) no projeto de destino -
Para atualizar o contentor de registos e eliminar os registos importados:
Administrador de registos (
roles/logging.admin
) no projeto de destino -
Para criar, executar e modificar a tarefa de importação:
Cloud Run Developer (
roles/run.developer
) no projeto de destino Atualize o contentor de registos predefinido para usar o Log Analytics:
gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
Substitua o seguinte:
- BUCKET_ID: o nome do contentor de registos (por exemplo,
_Default
) - LOCATION: uma região suportada (por exemplo,
global
)
- BUCKET_ID: o nome do contentor de registos (por exemplo,
No Cloud Shell, crie a tarefa 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 o seguinte:
- JOB_NAME: o nome da sua profissão.
- IMAGE_URL: a referência à imagem do contentor; use
us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution
ou o URL da imagem personalizada, se tiver criado uma seguindo as instruções no GitHub. - REGION: a região onde quer que a tarefa esteja localizada; para evitar custos adicionais, recomendamos que mantenha a região da tarefa igual ou dentro da mesma multirregião que a região do contentor do Cloud Storage. Por exemplo, se o seu bucket for multirregião dos EUA, pode usar us-central1. Para ver detalhes, consulte o artigo Otimização de custos.
- TASKS: o número de tarefas que a tarefa tem de executar.
O valor predefinido é
1
. Pode aumentar o número de tarefas se ocorrerem tempos limite. - CPU: o limite da CPU, que pode ser de 1, 2, 4, 6 ou 8 CPUs.
O valor predefinido é
2
. Pode aumentar o número se ocorrerem tempos limite. Para obter detalhes, consulte o artigo Configure os limites de CPU. - MEMORY: o limite de memória.
O valor predefinido é
2Gi
. Pode aumentar o número se ocorrerem tempos limite. Para mais detalhes, consulte o artigo Configure limites de memória. - END_DATE: o fim do intervalo de datas no formato MM/DD/AAAA. São importados registos com data/hora anterior ou igual a esta data.
- LOG_ID: o identificador do registo dos registos que quer importar. O ID do registo faz parte do campo
logName
da entrada do registo. Por exemplo,cloudaudit.googleapis.com
. - START_DATE: o início do intervalo de datas no formato MM/DD/AAAA. Os registos com datas/horas posteriores ou iguais a esta data são importados.
- STORAGE_BUCKET_NAME: o nome do contentor do Cloud Storage onde os registos estão armazenados (sem o prefixo
gs://
).
A opção
max-retries
está definida como zero para evitar novas tentativas de tarefas com falhas, o que pode causar entradas de registo duplicadas.Se a tarefa do Cloud Run falhar devido a um limite de tempo, pode resultar numa importação incompleta. Para evitar importações incompletas devido a limites de tempo, aumente o valor, bem como os recursos de CPU e memória.
tasks
No Cloud Shell, crie a conta de serviço gerida pelo utilizador:
gcloud iam service-accounts create SA_NAME
Substitua SA_NAME pelo nome da conta de serviço.
Conceda a função Storage Object Viewer no contentor 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 o seguinte:
- STORAGE_BUCKET_NAME: o nome do contentor de armazenamento que usou na configuração da tarefa de importação. Por exemplo,
my-bucket
. - PROJECT_ID: o ID do projeto de destino.
- STORAGE_BUCKET_NAME: o nome do contentor de armazenamento que usou na configuração da tarefa de importação. Por exemplo,
Conceda a função de Escritor de registos no contentor de registos:
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 a tarefa 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 implementou a tarefa de importação do Cloud Run.
No Cloud Shell, execute o trabalho criado:
gcloud run jobs execute JOB_NAME \ --region=REGION
Para eliminar registos importados, no Cloud Shell, execute a eliminação de registos:
gcloud logging logs delete imported_logs
- Reveja o código de implementação no repositório do GitHub.
- Saiba como analisar registos importados através da análise de registos e do SQL.
- Para ver mais arquiteturas de referência, diagramas e práticas recomendadas, explore o Centro de arquitetura na nuvem.
- Summit Tuladhar | Senior Staff Software Engineer
- Wilton Wong | Enterprise Architect
- Xiang Shen | Solutions Architect
Funções necessárias
Para receber as autorizações de que precisa para implementar esta solução, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Atualize o contentor de registos para usar o Log Analytics
Recomendamos que use o contentor de registos predefinido e o atualize para usar o Log Analytics. No entanto, num ambiente de produção, pode usar o seu próprio contentor de registos se o contentor predefinido não cumprir os seus requisitos. Se decidir usar o seu próprio contentor, tem de encaminhar os registos carregados para o projeto de destino para este contentor de registos. Para mais informações, consulte os artigos Configure contentores de registos e Crie um destino.
Quando atualiza o contentor, pode usar SQL para consultar e analisar os seus registos. Não existem custos adicionais para atualizar o contentor ou usar o Log Analytics.
Para atualizar o contentor de registos predefinido no projeto de destino, faça o seguinte:
Crie a tarefa de importação do Cloud Run
Quando cria a tarefa, pode usar a imagem do contentor pré-criada que é fornecida para esta arquitetura de referência. Se precisar de modificar a implementação para alterar o período de retenção de 30 dias ou tiver outros requisitos, pode criar a sua própria imagem personalizada.
O aumento destes valores pode aumentar os custos. Para ver detalhes sobre os custos, consulte o artigo Otimização de custos.
Crie uma conta de serviço para executar a tarefa do Cloud Run
Execute a tarefa de importação
Para mais informações, consulte os artigos Execute tarefas e Faça a gestão das execuções de tarefas.
Se precisar de executar novamente a tarefa, elimine os registos importados anteriormente para evitar criar duplicados. Para ver detalhes, consulte a secção Elimine registos importados mais adiante neste documento.
Quando consulta os registos importados, os duplicados não são apresentados nos resultados da consulta.
O Cloud Logging remove duplicados (entradas de registo do mesmo projeto, com o
mesmo ID de inserção e data/hora) dos resultados da consulta. Para mais informações, consulte o campo insert_id
na referência da API Logging.
Valide os resultados
Para validar que a tarefa foi concluída com êxito, pode consultar os resultados da importação no Cloud Shell:
gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
O resultado mostra os registos importados. Se este projeto foi usado para executar mais do que uma tarefa de importação no período especificado, o resultado também mostra registos importados dessas tarefas.
Para mais opções e detalhes sobre a consulta de entradas de registo, consulte o artigo
gcloud logging read
.
Elimine registos importados
Se precisar de executar a mesma tarefa mais do que uma vez, elimine os registos importados anteriormente para evitar entradas duplicadas e custos aumentados.
Tenha em atenção que a eliminação de registos importados limpa todas as entradas de registo que foram importadas para o projeto de destino e não apenas os resultados da execução da tarefa de importação mais recente.
O que se segue
Colaboradores
Autor: Leonid Yankulin | Developer Relations Engineer
Outros colaboradores: