Sobre os registros de fluxo de VPC

Nesta página, descrevemos o formato de registro dos registros de fluxo de VPC, incluindo quais campos de base e metadados estão disponíveis. Ela também explica como você pode usar filtragem de registros para que apenas registros correspondentes a determinados critérios sejam gerados.

Formato do registro

Os registros contêm campos básicos, que são os campos principais de cada registro, e campos de metadados que acrescentam informações adicionais. É possível omitir os campos de metadados para economizar custos de armazenamento.

Alguns campos de registro aparecem em um formato múltiplo, com mais de um dado em cada campo. Por exemplo, o campo connection é do formato IpConnection, que contém o endereço IP e a porta de origem e destino, mais o protocolo, em um único campo. Esses vários campos estão descritos abaixo da tabela de formatos de registro.

Os valores dos campos de metadados não são baseados no caminho do plano de dados. Eles são aproximações, podendo estar ausentes ou incorretos. Por outro lado, os valores dos campos base são obtidos diretamente dos cabeçalhos dos pacotes.

Campo Formato do campo Tipo de campo: base ou metadados opcionais
conexão IpConnection
5 tuplas que descrevem o fluxo.
Base
reporter string
O lado que informou o fluxo. Pode ser SRC, DEST, SRC_GATEWAY ou DEST_GATEWAY.
Base
rtt_msec int64
Latência medida durante o intervalo de tempo. Esse campo está disponível apenas para tráfego TCP relatado por VMs. A latência medida é o tempo decorrido entre o envio de um SEQ e o recebimento de um ACK correspondente. O resultado da latência é a soma do RTT da rede e de qualquer tempo consumido pelo aplicativo.
Base
bytes_sent int64
Quantidade de bytes enviados da origem para o destino.
Base
packets_sent int64
Número de pacotes enviados da origem para o destino.
Base
start_time string
Carimbo de data/hora (formato de string de data RFC 3339) do primeiro pacote observado durante o intervalo de tempo agregado.
Base
end_time string
Carimbo de data/hora (formato de string de data RFC 3339) do último pacote observado durante o intervalo de tempo agregado.
Base
Campos de metadados de origem e destino
src_gateway GatewayDetails
Se a origem do fluxo for um endpoint local ou outro endpoint de nuvem conectado ao Google Cloud por um gateway, como um anexo da VLAN para o Cloud Interconnect ou um túnel do Cloud VPN, e se uma das condições a seguir for atendida, esse campo será preenchido com detalhes do gateway:
  • O gateway de origem é aquele que relata o fluxo.
  • O destino do fluxo é o informante, e a rede VPC à qual o gateway de origem está conectado está no mesmo projeto do Google Cloud que o projeto em que os registros de fluxo VPC informam os registros do destino do fluxo.
Metadados
dest_gateway GatewayDetails
Se o destino do fluxo for um endpoint local ou de outro endpoint de nuvem conectado ao Google Cloud por um gateway, como um anexo da VLAN para o Cloud Interconnect ou um túnel do Cloud VPN, e se uma das condições a seguir for atendida, esse campo será preenchido com detalhes do gateway:
  • O gateway de destino é aquele que relata o fluxo.
  • A origem do fluxo é o informante, e a rede VPC a que o gateway de destino está conectado está no mesmo projeto do Google Cloud que o projeto em que os registros de fluxo VPC informam os registros da origem do fluxo.
Metadados
src_gke_details GkeDetails
Se a origem do fluxo for um endpoint do Google Kubernetes Engine (GKE), esse campo será preenchido com detalhes do endpoint do GKE.
Metadados
dest_gke_details GkeDetails (em inglês)
Se o destino do fluxo for um bucket do GKE endpoint, esse campo é preenchido com o endpoint do GKE detalhes.
Metadados
src_google_service GoogleServiceDetails (em inglês)
Se a origem do fluxo for uma API do Google, este campo será preenchida com metadados disponíveis da API do Google.
Metadados
dest_google_service GoogleServiceDetails
Se o destino do fluxo for uma API do Google, esse campo será preenchido com os metadados disponíveis da API.
Metadados
src_instance InstanceDetails (link em inglês)
Se a origem do fluxo for uma VM localizada em uma VPC rede e uma das condições a seguir for atendida, esse campo será preenchida com detalhes da instância de VM:
  • A VM de origem é a informante do fluxo.
  • O destino do fluxo é o informante, e a VM de origem ou a rede VPC a que ela está anexada está no mesmo projeto do Google Cloud que o projeto em que os registros de fluxo de VPC informam os registros do destino do fluxo.
Metadados
dest_instance InstanceDetails (link em inglês)
Se o destino do fluxo for uma VM localizada em uma VPC e uma das condições a seguir for atendida, este campo é preenchido com detalhes da instância de VM.
  • A VM de destino é a que informa o fluxo.
  • A origem do fluxo é o informante, e a VM de destino ou a rede VPC que em que a VM de destino está anexada, está no mesmo projeto do Google Cloud como o projeto em que Relatórios dos registros de fluxo de VPC registros para a origem do fluxo.
Metadados
src_location GeographicDetails (Detalhes geográficos)
Se a origem do fluxo for um endereço IP público fora do rede VPC, esse campo é preenchido com metadados de local disponíveis.
Metadados
dest_location GeographicDetails
Se o destino do fluxo for um endereço IP público fora da rede VPC, esse campo será preenchido com metadados de local disponíveis.
Metadados
src_vpc VpcDetails (em inglês)
Se a origem do fluxo for uma VM localizada em uma VPC rede e uma das condições a seguir for atendida, esse campo será preenchido com detalhes da rede VPC:
  • A VM de origem é a informante do fluxo.
  • O destino do fluxo é o informante, e a VM de origem ou a rede VPC a que ela está anexada está no mesmo projeto do Google Cloud que o projeto em que os registros de fluxo de VPC informam os registros do destino do fluxo.
Metadados
dest_vpc VpcDetails (em inglês)
Se o destino do fluxo for uma VM localizada em uma rede VPC e uma das condições a seguir for atendida, esse campo será preenchido com detalhes da rede VPC:
  • A VM de destino é a que informa o fluxo.
  • A origem do fluxo é o informante, e a VM de destino ou a rede VPC a que ela está anexada está no mesmo projeto do Google Cloud que o projeto em que os registros de fluxo de VPC informam os registros da origem do fluxo.
Metadados
Outros campos de metadados
internet_routing_details InternetRoutingDetails
Se o flow for entre o Google Cloud e a Internet, esse campo será preenchido com os detalhes de roteamento. Disponível apenas para fluxos de saída.
Metadados
load_balancing LoadBalancingDetails (em inglês)
Se o fluxo passa por um balanceador de carga em um dos seguintes locais de configuração, este campo é preenchido com Cloud Load Balancing detalhes:
  • O informante do fluxo é o cliente do balanceador de carga, e o tipo do balanceador é APPLICATION_LOAD_BALANCER, PROXY_NETWORK_LOAD_BALANCER, PASSTHROUGH_NETWORK_LOAD_BALANCER ou PROTOCOL_FORWARDING.
  • O informante do fluxo é o back-end do balanceador de carga, e o tipo de balanceador de carga é PASSTHROUGH_NETWORK_LOAD_BALANCER ou PROTOCOL_FORWARDING.
Metadados
network_service NetworkServiceDetails (em inglês)
Se o cabeçalho Differentiated Services Code Point (DSCP) estiver definido, este campo é preenchido com detalhes do serviço de rede.
Metadados
psc PrivateServiceConnectDetails
Se o fluxo passar pelo Private Service Connect em uma das seguintes configurações, esse campo será preenchido com detalhes do Private Service Connect:
  • O usuário que relatou o tráfego do Private Service Connect é um consumidor e está usando um endpoint do Private Service Connect que tem como destino um serviço publicado ou APIs globais do Google.
  • Aquele que relata o tráfego do Private Service Connect é um produtor e usa um balanceador de carga de rede de passagem interna ou encaminhamento de protocolo interno.
Metadados

Formato do campo IpConnection

Campo Tipo Descrição
protocolo int32 Número do protocolo IANA
src_ip string Endereço IP de origem
dest_ip string Endereço IP de destino
src_port int32 Porta de origem
dest_port int32 Porta de destino

Formato do campo GatewayDetails

Campo Tipo Descrição
project_id string ID do projeto do Google Cloud do gateway
local string Região do gateway
name string Nome do gateway
Tipo string Tipo de gateway. Pode ser INTERCONNECT_ATTACHMENT ou VPN_TUNNEL.
vpc VpcDetails Detalhes da rede VPC do gateway

Formato do campo GkeDetails

Campo Tipo Descrição
cluster ClusterDetails Metadados do cluster do GKE
pod PodDetails Metadados do pod do GKE, preenchidos quando a origem ou o destino do tráfego for um pod.
serviço ServiceDetails Metadados do Serviço do GKE, preenchidos apenas em endpoints de Serviço. O registro contém até dois Serviços. Se houver mais de dois Serviços relevantes, esse campo conterá um único Serviço com um marcador MANY_SERVICES especial.

Formato do campo ClusterDetails

Campo Tipo Descrição
cluster_location string Local do cluster. É uma zona ou uma região, dependendo se o cluster for zonal ou regional.
cluster_name string Nome do cluster do GKE

Formato do campo PodDetails

Campo Tipo Descrição
pod_name string Nome do pod
pod_namespace string Namespace do pod
pod_workload WorkloadDetails Metadados sobre o recurso de carga de trabalho de nível superior que controla o Conjunto
Formato do campo WorkloadDetails
Campo Tipo Descrição
workload_name string Nome do controlador de carga de trabalho de nível superior
workload_type string Tipo do controlador de carga de trabalho de nível superior. Pode ser DEPLOYMENT, REPLICA_SET, STATEFUL_SET, DAEMON_SET, JOB, CRON_JOB, ou REPLICATION_CONTROLLER.

Formato do campo ServiceDetails

Campo Tipo Descrição
service_name string Nome do serviço. Se houver mais de dois Serviços relevantes, o campo será definido como um marcador MANY_SERVICES especial.
service_namespace string Namespace do Serviço

Exemplo:

Se houver dois serviços, o campo Serviço será semelhante a:

service: [
 0: {
  service_name: "my-lb-service"
  service_namespace: "default"
 }
 1: {
  service_name: "my-lb-service2"
  service_namespace: "default"
 }
]

Se houver mais de dois serviços, o campo Serviço será semelhante a:

service: [
 0: {
  service_name: "MANY_SERVICES"
 }
]

Formato do campo GoogleServiceDetails

Campo Tipo Descrição
Tipo string Esse campo está definido como GOOGLE_API.

Formato do campo InstanceDetails

Campo Tipo Descrição
project_id string ID do projeto do Google Cloud que contém o recurso de VM
região string Região da VM
vm_name string Nome da instância da VM
zona string Zona da VM

Formato do campo GeographicDetails

Campo Tipo Descrição
asn int32 O ASN da rede externa à qual este endpoint pertence.
cidade string Cidade para endpoints externos
continent string Continente para endpoints externos
país string País para endpoints externos, representado por códigos de país ISO 3166-1 Alfa-3.
região string Região para endpoints externos

Formato do campo VpcDetails

Campo Tipo Descrição
project_id string ID do projeto do Google Cloud que contém a VPC. Em uma configuração de VPC compartilhada, project_id é o ID do projeto host.
subnetwork_name string Nome da sub-rede, se aplicável
subnetwork_region string Região da sub-rede, se aplicável
vpc_name string Nome da rede

Formato do campo InternetRoutingDetails

Campo Tipo Descrição
egress_as_path AsPath Lista de caminhos AS relevantes. Se houver vários caminhos AS disponíveis para o fluxo, o campo pode conter mais de um caminho AS.

Formato do campo AsPath

Campo Tipo Descrição
as_details AsDetails Lista de detalhes do AS para todos os sistemas no caminho do AS. A lista começa do primeiro AS externo à rede do Google Cloud e termina com o AS ao qual o endereço IP remoto pertence.

Formato do campo AsDetails

Campo Tipo Descrição
asn uint32 O número de sistema autônomo (ASN, na sigla em inglês) do AS

Formato do campo LoadBalancingDetails

Campo Tipo Descrição
forwarding_rule_project_id string ID do projeto do Google Cloud da regra de encaminhamento
reporter string Relatório do Cloud Load Balancing. Pode ser CLIENT ou BACKEND.
  • Se a pessoa que informou o fluxo for o balanceador de carga cdo liente, esse campo é definido como CLIENT:
  • Se o informante do fluxo for o back-end do balanceador de carga, esse campo será definido como BACKEND.
Tipo string Tipo do balanceador de carga. Pode ser APPLICATION_LOAD_BALANCER, PROXY_NETWORK_LOAD_BALANCER, PASSTHROUGH_NETWORK_LOAD_BALANCER, ou PROTOCOL_FORWARDING.
esquema string Esquema do balanceador de carga. Pode ser EXTERNAL_MANAGED, INTERNAL_MANAGED, EXTERNAL, INTERNAL, ou INTERNAL_SELF_MANAGED.
url_map_name string Nome do mapa de URL. Preenchido se o tipo de balanceador de carga é APPLICATION_LOAD_BALANCER.
forwarding_rule_name string Nome da regra de encaminhamento
backend_service_name string Nome do serviço de back-end. Será preenchido se o informante for BACKEND e o tipo de balanceador de carga for PASSTHROUGH_NETWORK_LOAD_BALANCER. Se o tipo de grupo de back-end for TARGET_POOL, esse campo não será preenchido.
backend_group_name string Nome do grupo de back-ends. Será preenchido se o informante for BACKEND e o tipo de balanceador de carga for PASSTHROUGH_NETWORK_LOAD_BALANCER.
backend_group_type string Tipo do grupo de back-ends. Pode ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP, ou TARGET_POOL. Preenchido se o informante for BACKEND e o balanceador de carga o tipo é PASSTHROUGH_NETWORK_LOAD_BALANCER.
backend_group_location string Local do grupo de back-ends. Pode ser uma zona ou região, dependendo se o escopo do grupo de back-ends é zonal ou regional. Preenchido se o informante for BACKEND e o balanceador de carga o tipo é PASSTHROUGH_NETWORK_LOAD_BALANCER. Se o tipo de grupo de back-end for TARGET_POOL, esse campo não será preenchido.
vpc VpcDetails Detalhes da rede VPC do balanceador de carga

Formato do campo NetworkServiceDetails

Campo Tipo Descrição
dscp int32 Se o campo "Serviços diferenciados" estiver presente nos cabeçalhos dos pacotes, ele será preenchido com o valor DSCP.

Formato do campo PrivateServiceConnectDetails

Campo Tipo Descrição
reporter string Gerador de relatórios do Private Service Connect. Pode ser CONSUMER ou PRODUCER.
psc_endpoint PrivateServiceConnectEndpointDetails Detalhes do endpoint. Preenchido se o denunciante for CONSUMER.
psc_attachment PrivateServiceConnectAttachmentDetails Detalhes do anexo de serviço. Preenchido se o tráfego inclui um produtor do Private Service Connect.

Formato do campo PrivateServiceConnectEndpointDetails

Campo Tipo Descrição
project_id string ID do projeto do Google Cloud do endpoint do Private Service Connect
região string Região do endpoint. Não preenchido se o tipo de serviço segmentado é GLOBAL_GOOGLE_APIS.
psc_connection_id string ID da conexão do Private Service Connect
target_service_type string Tipo de serviço de destino. Pode ser GLOBAL_GOOGLE_APIS ou PUBLISHED_SERVICE.
vpc VpcDetails Detalhes da rede VPC do endpoint do Private Service Connect

Formato do campo PrivateServiceConnectAttachmentDetails

Campo Tipo Descrição
project_id string ID do projeto do Google Cloud do anexo de serviço
região string Região do anexo de serviço
vpc VpcDetails Detalhes da rede VPC do anexo de serviço

Anotações de metadados

Os registros contêm campos de base e de metadados. A seção Formato de registro lista quais campos são do tipo metadados e quais são do tipo base. Todos os campos de base são sempre incluídos. É possível personalizar quais campos de metadados manter.

  • Se você selecionar todos os metadados, todos os campos de metadados no formato de registros de fluxo de VPC serão incluídos nos registros de fluxo. Quando novos campos de metadados são adicionados ao formato de registro, os registros de fluxo incluem automaticamente os novos campos.

  • Se você não selecionar metadados, todos os campos de metadados serão omitidos.

  • Se você selecionar metadados personalizados, poderá especificar os campos de metadados que quer incluir pelo campo pai, como src_vpc, ou pelos nomes completos, como src_vpc.project_id.

    Quando novos campos de metadados são adicionados ao de registro, eles são excluídos dos registros de fluxo, a menos que estejam dentro de um campo pai que você especificou para incluir.

    • Quando você especifica metadados personalizados usando campos pais, quando novos campos de metadados são adicionados ao formato de registro no campo pai, os registros de fluxo incluem automaticamente os novos campos.

    • Se você especificar metadados personalizados usando o nome completo do campo, novos campos de metadados adicionados ao campo pai serão excluídos dos registros de fluxo.

Para informações sobre como personalizar campos de metadados, consulte as instruções da CLI do Google Cloud ou da API sobre como ativar a geração de registros de fluxo de VPC quando você cria uma sub-rede.

Anotações de metadados do GKE

É possível que fluxos que tenham um endpoint em um cluster do GKE sejam anotados com anotações do GKE, que incluem detalhes do cluster, do pod e do serviço do endpoint.

Anotações de serviço do GKE

O tráfego enviado para um ClusterIP, NodePort ou LoadBalancer recebe anotações de serviço. Se for enviado para um NodePort ou LoadBalancer, o fluxo receberá a anotação de serviço nos dois saltos da conexão.

O tráfego enviado diretamente para a porta de serviço de um pod será anotado com uma anotação de serviço no endpoint de destino.

O tráfego enviado para a porta de serviço de um pod em que o pod está fazendo mais de um serviço na mesma porta de serviço será anotado com vários serviços no endpoint de destino. Isso se limita a dois serviços. Se houver mais, o endpoint será anotado com um marcador MANY_SERVICES especial.

Anotações de pod no tráfego da Internet

O tráfego entre um pod e a Internet não recebe anotações de pod por padrão. Os registros de fluxo de VPC não podem adicionar anotações de pod porque, de pacotes para a Internet, o agente de mascaramento traduz o endereço IP do pod para o endereço IP do nó antes que os registros de fluxo de VPC vejam o pacote.

Devido ao mascaramento, as anotações de pod só serão visíveis se os destinos estiverem dentro dos destinos padrão não mascaradosou em uma lista nonMasqueradeCIDRs personalizada. Se você incluir destinos de Internet em uma lista nonMasqueradeCIDRs personalizada, será necessário fornecer uma maneira para que os endereços IP internos do pod sejam traduzidos antes de serem entregues à Internet. Para clusters particulares e não particulares, é possível usar o Cloud NAT. Consulte Interação do GKE para mais detalhes.

Filtragem de registros

Ao ativar os registros de fluxo de VPC, é possível definir um filtro com base nos campos de base e de metadados que preservam apenas os registros que correspondem ao filtro. Todos os outros registros serão descartados antes de serem gravados no Logging. Isso economiza dinheiro e reduz o tempo necessário para encontrar as informações que você está procurando.

É possível filtrar qualquer subconjunto de campos listados em Formato de registro, exceto os seguintes:

  • rtt_msec
  • bytes_sent
  • packets_sent
  • start_time
  • end_time

A filtragem de registros de fluxo de VPC usa CEL, uma linguagem de expressão incorporada para expressões lógicas baseadas em atributos. As expressões de filtro dos registros de fluxo de VPC têm um limite de 2.048 caracteres. Para mais informações, consulte Operadores lógicos de CEL compatíveis.

Para mais informações sobre a CEL, consulte a introdução da CEL e a definição da linguagem. O recurso de filtro de geração é compatível com um subconjunto limitado de sintaxe CEL.

Para informações sobre como criar uma sub-rede que usa filtragem de registros, consulte as instruções da CLI gcloud ou da API sobre Como ativar os registros de fluxo de VPC ao criar uma sub-rede.

Para informações sobre como configurar a filtragem de registros, consulte as instruções da CLI gcloud ou da API sobre como atualizar parâmetros dos registros de fluxo de VPC.

Exemplo 1: limitar a coleta de registros a uma VM específica chamada my-vm. Nesse caso, serão gravados apenas os registros em que o campo src_instance for informado como my-vm pela origem do tráfego ou em que o campo dst_instance for informado como my-vm pelo destino do tráfego.

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr="(src_instance.vm_name == 'my-vm' && reporter=='SRC') || (dest_instance.vm_name == 'my-vm' && reporter=='DEST')"

Exemplo 2: limitar a coleta de registros a pacotes com endereços IP de origem na sub-rede 10.0.0.0/8.

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr="inIpRange(connection.src_ip, '10.0.0.0/8')"

Exemplo 3: limitar a coleta de registros ao tráfego externo a uma VPC.

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr '!(has(src_vpc.vpc_name) && has(dest_vpc.vpc_name))'

Operadores lógicos compatíveis com CEL

Expressão Tipos compatíveis Descrição
verdadeiro, falso Booleano Constantes booleanas

x == y

x != y

Booleano, Int, String

Operadores de comparação

Exemplo: connection.protocol == 6

x && y

x || y

Booleano

Operadores lógicos booleanos

Exemplo: connection.protocol == 6 && src_instance.vm_name == "vm_1"

!x Booleano Negação
1, 2.0, 0, ... Int Literais numéricos constantes
x + y String Concatenação de strings
"foo", 'foo', ... String Literal de string constante
x.lower() String Retorna o valor em minúsculas da string
x.upper() String Retorna o valor em maiúsculas da string
x.contains(y) String Retorna verdadeiro se a string contiver a substring especificada
x.startsWith(y) String Retorna verdadeiro se a string começar com a substring especificada
x.endsWith(y) String Retorna verdadeiro se a string terminar com a substring especificada
inIpRange(X, Y) String

Retorna verdadeiro se X for um IP e Y for um intervalo de IP que contenha X

Exemplo: inIpRange("1.2.3.1", "1.2.3.0/24")

x.containsFieldValue(y) x: list
y: map(string, string)

Retorna verdadeiro se a lista contiver um objeto com campos que correspondem aos pares de chave-valor especificados

Exemplo: dest_gke_details.service.containsFieldValue({'service_name': 'service1', 'service_namespace': 'namespace1'})

has(x) String

Retorna verdadeiro se o campo estiver presente.

A seguir