Neste documento, você verá como criar coletores agregados. Para mais informações sobre como gerenciar coletores existentes, consulte Encaminhar registros para destinos compatíveis: gerenciar coletores.
Informações gerais
Os coletores agregados combinam e roteiam entradas de registro dos recursos do Google Cloud contidos por uma organização ou pasta. Por exemplo, é possível agregar e rotear entradas de registro de auditoria de todas as pastas contidas em uma organização para um bucket do Cloud Storage.
Sem o recurso de coletor agregado, os coletores são limitados ao encaminhamento de entradas de registro do recurso exato em que o coletor foi criado: um projeto, uma organização, uma pasta ou uma conta de faturamento do Google Cloud.
É possível criar coletores agregados para pastas e organizações do Google Cloud. Como os projetos do Google Cloud e as contas de faturamento não contêm recursos filhos, não é possível criar coletores agregados para eles.
Destinos possíveis
Você pode usar coletores agregados para rotear registros dentro ou entre as mesmas organizações e pastas para os seguintes destinos:
- Buckets de registro do Cloud Logging: fornece armazenamento no Cloud Logging. Um bucket de registros pode armazenar registros ingeridos por vários projetos do Google Cloud. É possível combinar os dados do Cloud Logging com outros dados, fazendo upgrade de um bucket de registros para usar a análise de registros e criando um conjunto de dados do BigQuery vinculado. Para informações sobre como visualizar registros armazenados em buckets de registros, consulte Visão geral de consultas e registros de registros e Visualizar registros roteados para buckets do Cloud Logging.
- Projetos do Google Cloud: direcione entradas de registro para um projeto diferente do Google Cloud. Quando você encaminha registros para um projeto diferente do Google Cloud, o roteador do projeto de destino recebe os registros e os processa. Os coletores no projeto de destino determinam como as entradas de registro recebidas são roteadas.
- Tópicos do Pub/Sub: oferece suporte a integrações de terceiros, como o Splunk. As entradas de registro são formatadas em JSON e encaminhadas para um tópico do Pub/Sub. Para informações sobre a visualização de registros roteados para o Pub/Sub, consulte Ver registros roteados para o Pub/Sub.
- Conjuntos de dados do BigQuery: fornece armazenamento de entradas de registro em conjuntos de dados do BigQuery. É possível usar os recursos de análise de Big Data nos registros armazenados. Para combinar os dados do Cloud Logging com outras fontes de dados, recomendamos que você faça upgrade dos buckets de registro para usar a análise de registros e crie um conjunto de dados vinculado do BigQuery. Para mais informações sobre a visualização de registros roteados para o BigQuery, consulte Ver registros roteados para o BigQuery.
- Buckets do Cloud Storage: fornece armazenamento de dados de registro no Cloud Storage. As entradas de registro são armazenadas como arquivos JSON. Para mais informações sobre a visualização de registros roteados para o Cloud Storage, consulte Ver registros roteados para o Cloud Storage.
Antes de começar
Antes de criar um coletor, verifique se:
Você tem uma pasta ou organização do Google Cloud com registros que podem ver no Explorador de registros.
Você tem um dos seguintes papéis do IAM para a organização ou pasta do Google Cloud a partir da qual está roteando registros.
- Proprietário (
roles/owner
) - Administrador do Logging (
roles/logging.admin
) - Gravador de configuração de registros (
roles/logging.configWriter
)
As permissões contidas nesses papéis permitem criar, excluir ou modificar coletores. Para informações sobre como definir papéis do IAM, consulte o Guia de controle de acesso do Logging.
- Proprietário (
Você tem um recurso em um destino compatível ou pode criar um.
O destino de roteamento precisa ser criado antes do coletor por meio da Google Cloud CLI, do console do Google Cloud ou das APIs do Google Cloud. É possível criar o destino em qualquer projeto do Google Cloud em qualquer organização, mas é preciso verificar se a conta de serviço do coletor tem permissões para gravar no destino.
Criar um coletor agregado
Para usar coletores agregados, crie um coletor em uma organização ou pasta do
Google Cloud e defina o parâmetro includeChildren
do coletor como
True
. Esse coletor pode, então, rotear entradas de registro da organização ou pasta, além de (recursivamente) qualquer pasta contida, contas de faturamento ou projetos do Google Cloud. Defina os filtros de inclusão e exclusão do coletor para especificar as entradas de registro que você quer rotear para o destino.
É possível criar até 200 coletores por pasta ou organização.
Para criar um coletor agregado para sua pasta ou organização, faça o seguinte:
Console
No console do Google Cloud, selecioneGeração de registros no menu de navegação eRoteador de registros:
Acessar o roteador de registrosSelecione uma pasta ou organização existente.
Selecione Criar coletor.
No painel Detalhes do coletor, insira os seguintes detalhes:
Nome do coletor: forneça um identificador para o coletor. Depois de criar o coletor, não será possível renomeá-lo, mas será possível excluí-lo e criar um novo coletor.
Descrição do coletor (opcional): descreva a finalidade ou o caso de uso do coletor.
No painel Destino do coletor, selecione o serviço de coletor e o destino:
- Selecionar serviço de coletor: selecione o serviço em que você quer os registros roteados.
Com base no serviço selecionado, é possível selecionar os seguintes destinos:
- Bucket do Cloud Logging: selecione ou crie um bucket do Logging. Se você criar um bucket de registros, ele precisará estar no nível do projeto. Não é possível criar um bucket de registros no nível de pasta ou organização.
- Tabela do BigQuery: selecione ou crie o conjunto de dados específico para receber os registros roteados. Você também tem a opção de usar tabelas particionadas.
- Bucket do Cloud Storage: selecione ou crie o bucket específico do Cloud Storage para receber os registros roteados.
- Tópico do Pub/Sub: selecione ou crie o tópico específico para receber os registros roteados.
Splunk: selecione o tópico do Pub/Sub do serviço Splunk.
Por exemplo, se o destino do coletor for um conjunto de dados do BigQuery, o destino do coletor será o seguinte:
bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
No painel Escolher registros a serem incluídos no coletor, faça o seguinte:
Selecione Incluir registros ingeridos por este recurso e todos os recursos filhos, que cria um coletor agregado.
No campo Criar inclusão de filtro, insira uma expressão de filtro que corresponda às entradas de registro que você quer incluir. Se você não definir um filtro, todos os registros do recurso selecionado serão roteados para o destino.
Por exemplo, é possível criar um filtro para encaminhar todos os registros de acesso a dados para um único bucket do Logging. Esse filtro tem a seguinte aparência:
LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
O comprimento de um filtro não pode exceder 20.000 caracteres.
Para conferir se você inseriu o filtro correto, selecione Visualizar registros. Isso abre o Explorador de registros em uma nova guia com o filtro pré-preenchido.
(Opcional) No painel Escolher registros a serem excluídos do coletor, faça o seguinte:
No campo Nome do filtro de exclusão, insira um nome.
No campo Criar um filtro de exclusão, insira uma expressão de filtro que corresponda às entradas de registro que você quer excluir. Também é possível usar a função
sample
para selecionar uma parte das entradas de registro a serem excluídas.
É possível criar até 50 filtros de exclusão por coletor. O comprimento de um filtro não pode exceder 20.000 caracteres.
Selecione Criar coletor.
API
Para criar um coletor, use organizations.Sinks.create ou folders.Sinks.create na API Logging. Prepare os argumentos do método da seguinte maneira:
Defina o parâmetro
parent
como a organização ou pasta do Google Cloud em que o coletor será criado. O pai precisa ser um dos seguintes parâmetros:organizations/ORGANIZATION_ID
folders/FOLDER_ID
No objeto LogSink no corpo da solicitação do método, faça o seguinte:
Defina
includeChildren
comoTrue
.Defina a propriedade
filter
. O comprimento de um filtro não pode exceder 20.000 caracteres.Para alguns exemplos de filtros úteis, consulte Criar filtros para coletores agregados.
Defina os campos restantes do LogSink como faria para qualquer coletor. Para mais informações, consulte Rotear registros para destinos compatíveis.
Chame organizations.sinks.create ou folders.sinks.create para criar o coletor.
Recupere o nome da conta de serviço no campo
writer_identity
retornado da resposta da API.Conceda a essa conta de serviço permissão para gravar no destino do coletor.
Se você não tiver permissão para fazer essa alteração no destino do coletor, envie o nome da conta de serviço para alguém que possa fazer essa alteração.
Para mais informações sobre a concessão de permissões de contas de serviço para recursos, consulte a seção definir permissões de destino.
gcloud
Para criar um coletor, use o comando logging sinks create
.
Forneça o nome do coletor, o destino do coletor, o filtro e o ID da pasta ou organização de onde você está roteando os registros:
gcloud logging sinks create SINK_NAME SINK_DESTINATION --include-children \ --folder=FOLDER_ID --log-filter="LOG_FILTER"
Por exemplo, se você estiver criando um coletor agregado no nível da pasta e cujo destino for um conjunto de dados do BigQuery, o comando poderá ter a seguinte aparência:
gcloud logging sinks create SINK_NAME \ bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID --include-children \ --folder=FOLDER_ID --log-filter="logName:activity"
Observações:
Para criar um coletor no nível da organização, substitua
--folder=FOLDER_ID
por--organization=ORGANIZATION_ID
.Para que o coletor inclua todos os recursos da organização, a sinalização
--include-children
precisa ser definida, mesmo quando a sinalização--organization
for passada paracreate
. Quando for definido comofalse
(padrão), um coletor encaminhará apenas registros do recurso host.Para alguns exemplos de filtros úteis, consulte Criar filtros para coletores agregados.
Recupere o nome da conta de serviço usado para criar o coletor com base na saída do comando.
Conceda a essa conta de serviço permissão para gravar no destino do coletor.
Se você não tiver permissão para fazer essa alteração no destino do coletor, envie o nome da conta de serviço para alguém que possa fazer essa alteração.
Para mais informações sobre a concessão de permissões de contas de serviço para recursos, consulte a seção definir permissões de destino.
As alterações feitas em um coletor podem levar alguns minutos para serem aplicadas.
Criar filtros para coletores agregados
Como qualquer outro, o coletor agregado contém um filtro que seleciona entradas de registro individuais. Para exemplos de filtros que você pode usar para criar um coletor agregado, consulte Consultas de amostra usando o Explorador de registros.
Veja a seguir alguns exemplos de comparações de filtros que são úteis ao usar o recurso de coletores agregados. Alguns exemplos utilizam a seguinte notação:
:
: é o operador de substring. Não substitua o operador=
....
representa qualquer comparação de filtros adicional.- As variáveis são indicadas por texto colorido. As substitua por valores válidos.
O comprimento de um filtro não pode exceder 20.000 caracteres.
Para mais detalhes sobre a sintaxe da filtragem, consulte Linguagem de consulta do Logging.
Selecionar a origem do registro
Para rotear registros de organizações, pastas ou projetos específicos do Google Cloud, use uma das seguintes comparações de amostra:
logName:"projects/PROJECT_ID/logs/" AND ...
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ...
logName:"folders/FOLDER_ID/logs/" AND ...
logName:"organizations/ORGANIZATION_ID/logs/" AND ...
Selecione o recurso monitorado.
Para rotear registros de apenas um recurso monitorado específico em um projeto do Google Cloud, use várias comparações para especificar o recurso exatamente:
logName:"projects/PROJECT_ID/logs" AND resource.type=RESOURCE_TYPE AND resource.labels.instance_id=INSTANCE_ID
Para uma lista de tipos de recursos, consulte Tipos de recursos monitorados.
Selecione uma amostra de entradas de registro
Para encaminhar uma amostra aleatória de entradas de registro, adicione a função incorporada sample
. Por exemplo, para rotear somente 10% das entradas de registro
correspondentes ao seu filtro atual, use esta adição:
sample(insertId, 0.10) AND ...
Para mais informações, consulte a função sample
.
Para mais informações sobre os filtros do Cloud Logging, consulte Linguagem de consulta do Logging.
Definir permissões de destino
Nesta seção, descrevemos como conceder permissões de gerenciamento de identidade e acesso ao Logging para gravar registros no destino do coletor. Para a lista de papéis e permissões do Logging, consulte Controle de acesso.
Quando você cria ou atualiza um coletor que direciona registros para qualquer destino diferente de um bucket de registros no projeto atual, é necessário ter uma conta de serviço para esse coletor. O Logging cria e gerencia automaticamente a conta de serviço para você:
- A partir de 22 de maio de 2023, quando você criar um coletor e não houver uma conta de serviço para o recurso subjacente, o Logging criará a conta de serviço. O Logging usa a mesma conta de serviço para todos os coletores no recurso subjacente. Os recursos podem ser um projeto do Google Cloud, uma organização, uma pasta ou uma conta de faturamento.
- Antes de 22 de maio de 2023, o Logging criou uma conta de serviço para cada coletor. Desde 22 de maio de 2023, o Logging usa uma conta de serviço compartilhada para todos os coletores no recurso subjacente.
A identidade do gravador de um coletor é o identificador da conta de serviço associada a esse coletor. Todos os coletores têm uma identidade de gravador, a menos que gravem em um bucket de registros no projeto atual do Google Cloud.
Para rotear registros para um recurso protegido por um perímetro de serviço, é necessário adicionar a conta de serviço desse coletor a um nível de acesso e, em seguida, atribuí-la ao perímetro de serviço de destino de dados. Isso não é necessário para coletores não agregados. Para detalhes, consulte VPC Service Controls: Cloud Logging.
Para definir permissões a fim de rotear o coletor para o destino, faça o seguinte:
Console
Para informações sobre a conta de serviço do coletor, faça o seguinte:
- No console do Google Cloud, selecioneGeração de registros no menu
de navegação eRoteador de registros:
Acessar o roteador de registros Selecione menu more_vert Ver detalhes do coletor.
No painel Detalhes do coletor, o campo
writerIdentity
contém a identidade da conta de serviço. A stringserviceAccount:
faz parte da identidade da conta de serviço. Exemplo:serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
- No console do Google Cloud, selecioneGeração de registros no menu
de navegação eRoteador de registros:
No projeto de destino, conceda à identidade de gravador o papel necessário para a conta de serviço gravar no destino. Para conceder um papel a um principal, é preciso ter o papel de proprietário (
roles/owner
):- Para destinos do Cloud Storage, adicione a identidade do gravador do coletor como principal usando o IAM e conceda a ele o papel Criador de objetos do Storage (
roles/storage.objectCreator
). - Para destinos do BigQuery, adicione a identidade do gravador do coletor
como principal usando o IAM e conceda a ele o
papel de Editor de dados do BigQuery
(
roles/bigquery.dataEditor
). - Para destinos do Pub/Sub, incluindo o Splunk, adicione a identidade do gravador do coletor
como principal usando o IAM e conceda a ele o
papel de editor do Pub/Sub
(
roles/pubsub.publisher
). - Para destinos de bucket do Logging em projetos diferentes do Google Cloud, adicione a identidade de gravador do coletor como principal usando o IAM e conceda a ele o papel de gravador do bucket de registros (
roles/logging.bucketWriter
). - (Visualização) Para diferentes destinos de projetos do Google Cloud, adicione a identidade de gravador do coletor como principal usando o IAM e conceda a ele o papel de gravador de registros (
roles/logging.logWriter
). Especificamente, um principal precisa da permissãologging.logEntries.route
.
- Para destinos do Cloud Storage, adicione a identidade do gravador do coletor como principal usando o IAM e conceda a ele o papel Criador de objetos do Storage (
API
Para informações sobre a conta de serviço do coletor, chame o método de API organizations.sinks.get ou folders.sinks.get.
O campo
writerIdentity
contém a identidade da conta de serviço. A stringserviceAccount:
faz parte da identidade da conta de serviço. Exemplo:serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
No projeto de destino, conceda à identidade de gravador o papel necessário para a conta de serviço gravar no destino. Para conceder um papel a um principal, é preciso ter o papel de proprietário (
roles/owner
):- Para destinos do Cloud Storage, adicione a identidade do gravador do coletor como principal usando o IAM e conceda a ele o papel Criador de objetos do Storage (
roles/storage.objectCreator
). - Para destinos do BigQuery, adicione a identidade do gravador do coletor
como principal usando o IAM e conceda a ele o
papel de Editor de dados do BigQuery
(
roles/bigquery.dataEditor
). - Para destinos do Pub/Sub, incluindo o Splunk, adicione a identidade do gravador do coletor
como principal usando o IAM e conceda a ele o
papel de editor do Pub/Sub
(
roles/pubsub.publisher
). - Para destinos de bucket do Logging em projetos diferentes do Google Cloud, adicione a identidade de gravador do coletor como principal usando o IAM e conceda a ele o papel de gravador do bucket de registros (
roles/logging.bucketWriter
). - (Visualização) Para diferentes destinos de projetos do Google Cloud, adicione a identidade de gravador do coletor como principal usando o IAM e conceda a ele o papel de gravador de registros (
roles/logging.logWriter
). Especificamente, um principal precisa da permissãologging.logEntries.route
.
- Para destinos do Cloud Storage, adicione a identidade do gravador do coletor como principal usando o IAM e conceda a ele o papel Criador de objetos do Storage (
gcloud
Para ver informações sobre a conta de serviço do coletor, execute o seguinte comando:
gcloud logging sinks describe SINK_NAME
O campo
writerIdentity
contém a identidade da conta de serviço. A stringserviceAccount:
faz parte da identidade da conta de serviço. Exemplo:serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
No projeto de destino, conceda à identidade de gravador o papel necessário para a conta de serviço gravar no destino. Para conceder um papel a um principal, é preciso ter o papel de proprietário (
roles/owner
):- Para destinos do Cloud Storage, adicione a identidade do gravador do coletor como principal usando o IAM e conceda a ele o papel Criador de objetos do Storage (
roles/storage.objectCreator
). - Para destinos do BigQuery, adicione a identidade do gravador do coletor
como principal usando o IAM e conceda a ele o
papel de Editor de dados do BigQuery
(
roles/bigquery.dataEditor
). - Para destinos do Pub/Sub, incluindo o Splunk, adicione a identidade do gravador do coletor
como principal usando o IAM e conceda a ele o
papel de editor do Pub/Sub
(
roles/pubsub.publisher
). - Para destinos de bucket do Logging em projetos diferentes do Google Cloud, adicione a identidade de gravador do coletor como principal usando o IAM e conceda a ele o papel de gravador do bucket de registros (
roles/logging.bucketWriter
). - (Visualização) Para diferentes destinos de projetos do Google Cloud, adicione a identidade de gravador do coletor como principal usando o IAM e conceda a ele o papel de gravador de registros (
roles/logging.logWriter
). Especificamente, um principal precisa da permissãologging.logEntries.route
.
Por exemplo, se você estiver roteando registros entre buckets do Logging em projetos diferentes do Google Cloud, adicione
roles/logging.bucketWriter
à conta de serviço da seguinte maneira:Consiga a política do Identity and Access Management do projeto do Google Cloud de destino e grave-a em um arquivo local no formato JSON:
gcloud projects get-iam-policy DESTINATION_PROJECT_ID --format json > output.json
Adicione uma condição do IAM que permita à conta de serviço gravar apenas no destino criado. Exemplo:
{ "bindings": [ { "members": [ "user:username@gmail.com" ], "role": "roles/owner" }, { "members": [ "SERVICE_ACCOUNT" ], "role": "roles/logging.bucketWriter", "condition": { "title": "Bucket writer condition example", "description": "Grants logging.bucketWriter role to service account SERVICE_ACCOUNT used by sink SINK_NAME", "expression": "resource.name.endsWith(\'locations/global/buckets/BUCKET_ID\')" } } ], "etag": "BwWd_6eERR4=", "version": 3 }
Atualize a política do IAM:
gcloud projects set-iam-policy DESTINATION_PROJECT_ID output.json
- Para destinos do Cloud Storage, adicione a identidade do gravador do coletor como principal usando o IAM e conceda a ele o papel Criador de objetos do Storage (
A seguir
Para mais informações sobre como gerenciar coletores existentes, consulte Registros de rota para destinos compatíveis: gerenciar coletores.
Se você encontrar problemas ao usar coletores para rotear registros, consulte Resolver problemas de roteamento e coletores.
Para saber como visualizar os registros roteados nos destinos deles e como os registros são formatados e organizados, consulte Ver os registros nos destinos do coletor