Los registros de flujo de VPC registran una muestra de flujos de red que enviaron y recibieron las instancias de VM, incluidas las instancias que se usaron como nodos de GKE. Estos registros se pueden usar para supervisar redes, detectar intrusiones, realizar análisis de seguridad en tiempo real y optimizar gastos.
En esta página, se da por sentado que estás familiarizado con los conceptos descritos en la descripción general de los registros de flujo de VPC.
Habilita los registros de flujo de VPC
Cuando habilitas los registros de flujo de VPC, se habilitan en todas las VM de una subred. Sin embargo, puedes reducir la cantidad de información que se escribe en el registro. Consulta Agregación y muestreo de registros para obtener detalles sobre los parámetros que puedes controlar.
Habilita los registros de flujo de VPC cuando creas una subred
Console
- Ve a la página Redes de VPC en Google Cloud Console.
Ir a la página Redes de VPC - Haz clic en la red en la que quieres agregar una subred.
- Haz clic en Agregar subred.
- En Registros de flujo, selecciona Activado.
- Si deseas ajustar el muestreo y la agregación de registros, haz clic en Configurar registros y ajusta cualquiera de las siguientes opciones:
- Intervalo de agregación
- Si deseas o no Incluir metadatos en las entradas de registro finales
De forma predeterminada, Incluir metadatos solo incluye determinados campos. Consulta Personaliza los campos de metadatos para obtener más información. Para personalizar los campos de metadatos, debes usar la interfaz de línea de comandos degcloud
o la API. - La tasa de muestreo.
100%
significa que se conservan todas las entradas.
- Propaga los demás campos como corresponda.
- Haz clic en Agregar.
gcloud
gcloud compute networks subnets create SUBNET_NAME \ --enable-flow-logs \ [--logging-aggregation-interval=AGGREGATION_INTERVAL \ [--logging-flow-sampling=0.0...1.0] \ [--logging-filter-expr=EXPRESSION] \ [--logging-metadata=(include-all | exclude-all | custom)] \ [--logging-metadata-fields=FIELDS] \ [other flags as needed]
En el ejemplo anterior, se ilustra lo siguiente:
--logging-aggregation-interval=
AGGREGATION_INTERVAL
establece el intervalo de agregación para los registros de flujo en esa subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: 5 s (predeterminado), 30 s, 1 min, 5 min, 10 min o 15 min.--logging-flow-sampling
es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde0.0
(sin muestreo) hasta1.0
(todos los registros). El valor predeterminado es0.5
.--logging-filter-expr=
EXPRESSION
limita la recopilación de registros solo a los registros que coinciden con la expresión. Para obtener más detalles, consulta Filtrado de registros.--logging-metadata=(include-all | exclude-all | custom)
activa y desactiva las anotaciones de metadatos del registro o las establece comocustom
. Si se establece comocustom
, especifica también--logging-metadata-fields
. El valor predeterminado esinclude-all
. Nota: No todos los campos se incluyen eninclude-all
. Consulta Personaliza los campos de metadatos para obtener más información.--logging-metadata-fields
es la lista separada por comas de los campos de metadatos que deseas incluir en los registros. Ejemplo:--logging-metadata-fields=src_instance,dst_instance
. Solo se puede establecer si--logging-metadata=custom
.
API
Habilita los registros de flujo de VPC cuando crees una nueva subred.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "logConfig": { "aggregationInterval": "AGGREGATION_INTERVAL", "flowSampling": SAMPLING_RATE, "filterExpr": EXPRESSION, "metadata": METADATA_SETTING, "metadataFields": METADATA_FIELDS, "enable": true }, "ipCidrRange": "IP_RANGE", "network": "NETWORK_URL", "name": "SUBNET_NAME" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que se creará la subred.REGION
es la región donde se creará la subred.AGGREGATION_INTERVAL
establece el intervalo de agregación para los registros de flujo en la subred. El intervalo se puede establecer en cualquiera de las siguientes opciones:INTERVAL_5_SEC
,INTERVAL_30_SEC
,INTERVAL_1_MIN
,INTERVAL_5_MIN
,INTERVAL_10_MIN
oINTERVAL_15_MIN
.SAMPLING_RATE
es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde0.0
(sin muestreo) hasta1.0
(todos los registros). El valor predeterminado es.0.5
.EXPRESSION
es la expresión de filtro que usas para filtrar qué registros se escriben. Para obtener más detalles, consulta Filtrado de registros.METADATA_SETTING
especifica si se registran todos los metadatos (INCLUDE_ALL_METADATA
), no se registran metadatos (EXCLUDE_ALL_METADATA
) o solo se registran metadatos específicos (CUSTOM_METADATA
). Si este campo se establece enCUSTOM_METADATA
, también debes propagar el campometadataFields
. No todos los campos se incluyen enINCLUDE_ALL_METADATA
. Consulta Personaliza los campos de metadatos para obtener más información.METADATA_FIELDS
son los campos de metadatos que deseas capturar cuando configurasmetadata: CUSTOM_METADATA
. Esta es una lista de campos de metadatos separados por comas, comosrc_instance, src_vpc.project_id
.IP_RANGE
es el rango de direcciones IP internas principal de la subred.NETWORK_URL
es la URL de la red de VPC en la que se creará la subred.SUBNET_NAME
es un nombre para la subred.
Para obtener más información, consulta el método subnetworks.insert
.
Habilita los registros de flujo de VPC en una subred existente
Console
- Ve a la página Redes de VPC en Google Cloud Console.
Ir a la página Redes de VPC - Haz clic en la subred que quieres actualizar.
- Haz clic en Editar.
- En Registros de flujo, selecciona Activado.
- Si deseas ajustar el muestreo y la agregación de registros, haz clic en Configurar registros y ajusta cualquiera de las siguientes opciones:
- Intervalo de agregación
- Si deseas o no Incluir metadatos en las entradas de registro finales
De forma predeterminada, Incluir metadatos solo incluye determinados campos. Consulta Personaliza los campos de metadatos para obtener más información. Para personalizar los campos de metadatos, debes usar la interfaz de línea de comandos degcloud
o la API. - La tasa de muestreo.
100%
significa que se conservan todas las entradas.
- Haz clic en Guardar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --enable-flow-logs \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=0.0...1.0] \ [--logging-filter-expr=EXPRESSION] \ [--logging-metadata=(include-all | exclude-all | custom)] \ [--logging-metadata-fields=FIELDS]
En el ejemplo anterior, se ilustra lo siguiente:
--logging-aggregation-interval=
AGGREGATION_INTERVAL
establece el intervalo de agregación para los registros de flujo en esa subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: 5 s (predeterminado), 30 s, 1 min, 5 min, 10 min o 15 min.--logging-flow-sampling
es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde0.0
(sin muestreo) hasta1.0
(todos los registros). El valor predeterminado es.0.5
.--logging-filter-expr=
EXPRESSION
limita la recopilación de registros solo a los registros que coinciden con la expresión. Para obtener más detalles, consulta Filtrado de registros.--logging-metadata=(include-all | exclude-all | custom)
activa y desactiva las anotaciones de metadatos del registro o las establece comocustom
. Si se establece comocustom
, especifica también--logging-metadata-fields
. La opción predeterminada es la de activación. Nota:include-all
no incluye anotaciones de GKE. Para ver las anotaciones de GKE, seleccionacustom
y especifica esas anotaciones.--logging-metadata-fields
es la lista separada por comas de los campos de metadatos que deseas incluir en los registros. Ejemplo:--logging-metadata-fields=src_instance,dst_instance
. Solo se puede establecer si--logging-metadata=custom
.
API
Habilita los registros de flujo VPC para una subred existente.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { "enable": true ...other logging fields. }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que se encuentra la subred.REGION
es la región en la que se encuentra la subred.SUBNET_NAME
es el nombre de la subred existente.- SUBNET_FINGERPRINT es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.
- Para los otros campos de registro, consulta la sección sobre cómo habilitar el registro de flujo de VPC cuando creas una subred.
Para obtener más información, consulta el método subnetworks.patch
.
Consulta el volumen de registro estimado para las subredes existentes
Google Cloud Console proporciona una estimación del volumen de registro para las subredes existentes, que luego puedes usar a fin de estimar el costo de habilitar los registros de flujo. La estimación se basa en los flujos capturados en intervalos de 5 segundos para la subred en los últimos 7 días. Además, el tamaño de cada registro depende de si habilitas las anotaciones de metadatos.
- Ve a la página Redes de VPC en Google Cloud Console.
Ir a la página Redes de VPC - Haz clic en la subred cuyos costos deseas calcular.
- Haz clic en Editar.
- En Registros de flujo, selecciona Activado.
- Haz clic en Configurar registros.
- Consulta Registros estimados generados por día para ver la estimación.
- Haz clic en Cancelar para que no se guarde ninguno de tus cambios.
Visualiza qué subredes tienen habilitados los registros de flujo de VPC
Puedes verificar qué subredes en una red tienen habilitados los registros de flujo de VPC.
Console
- Ve a la página Redes de VPC en Google Cloud Console.
Ir a la página Redes de VPC - Consulta la columna Registros de flujo para ver si el registro está activado o desactivado.
gcloud
gcloud compute networks subnets list \ --project PROJECT_ID \ --filter="network=NETWORK_URL" \ --format="csv(name,logConfig.enable)"
En el ejemplo anterior, se ilustra lo siguiente:
PROJECT_ID
es el ID del proyecto que consultas.NETWORK_URL
es el FQDN de la red que contiene las subredes.
Actualiza los parámetros de registro de flujo de VPC
Puedes modificar los parámetros de muestreo de registros. Consulta Muestreo y agregación de registros para obtener más información sobre los parámetros que puedes controlar.
Console
- Ve a la página Redes de VPC en Google Cloud Console.
Ir a la página Redes de VPC - Haz clic en la subred que quieres actualizar.
- Haz clic en Editar.
- Haz clic en Configurar registros para ajustar el muestreo y la agregación de registros:
- Intervalo de agregación
- Si deseas o no Incluir metadatos en las entradas de registro finales
De forma predeterminada, Incluir metadatos solo incluye determinados campos. Consulta Personaliza los campos de metadatos para obtener más información. Para personalizar los campos de metadatos, debes usar la interfaz de línea de comandos degcloud
o la API. - La tasa de muestreo.
100%
significa que se conservan todas las entradas.
- Haz clic en Guardar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=0.0...1.0] \ [--logging-filter-expr=EXPRESSION] \ [--logging-metadata=(include-all | exclude-all | custom)] \ [--logging-metadata-fields=FIELDS]
En el ejemplo anterior, se ilustra lo siguiente:
--logging-aggregation-interval=
AGGREGATION_INTERVAL
establece el intervalo de agregación para los registros de flujo en esa subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: 5 s (predeterminado), 30 s, 1 min, 5 min, 10 min o 15 min.--logging-flow-sampling
es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde0.0
(sin muestreo) hasta1.0
(todos los registros). El valor predeterminado es.0.5
.--logging-filter-expr=
EXPRESSION
limita la recopilación de registros solo a los registros que coinciden con la expresión. Para obtener más detalles, consulta Filtrado de registros.--logging-metadata=(include-all | exclude-all | custom)
activa y desactiva las anotaciones de metadatos del registro o las establece comocustom
. Si se establece comocustom
, especifica también--logging-metadata-fields
. La opción predeterminada es la de activación. Nota:include-all
no incluye anotaciones de GKE. Para ver las anotaciones de GKE, seleccionacustom
y especifica esas anotaciones.--logging-metadata-fields
es la lista separada por comas de los campos de metadatos que deseas incluir en los registros. Ejemplo:--logging-metadata-fields=src_instance,dst_instance
. Solo se puede establecer si--logging-metadata=custom
.
API
Modifica los campos de muestreo de registros para actualizar los comportamientos de los registros de flujo de VPC.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { ...fields to modify }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que se encuentra la subred.REGION
es la región en la que se encuentra la subred.SUBNET_NAME
es el nombre de la subred existente.- SUBNET_FINGERPRINT es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.
- Para ver los campos que puedes modificar, consulta la sección sobre cómo habilitar el registro de flujo de VPC cuando creas una subred.
Para obtener más información, consulta el método subnetworks.patch
.
Inhabilita los registros de flujo de VPC en una subred
Console
- Ve a la página Redes de VPC en Google Cloud Console.
Ir a la página Redes de VPC - Haz clic en la subred que quieres actualizar.
- Haz clic en Editar.
- En Registros de flujo, selecciona Desactivado.
- Haz clic en Guardar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --no-enable-flow-logs
API
Inhabilita los registros de flujo de VPC en una subred para dejar de recopilar registros.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { "enable": false }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que se encuentra la subred.REGION
es la región en la que se encuentra la subred.SUBNET_NAME
es el nombre de la subred existente.- SUBNET_FINGERPRINT es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.
Para obtener más información, consulta el método subnetworks.patch
.
Accede a los registros a través de Logging
Configura IAM
Sigue la guía de control de acceso para Logging.
Visualiza los registros desde la página de visor de registros.
Necesitarás el ID del proyecto de tu proyecto para estos comandos.
Accede a todos los registros
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - Selecciona Subred en el primer menú desplegable.
- Selecciona compute.googleapis.com/vpc_flows en el segundo menú desplegable.
- Haz clic en Aceptar.
O, como alternativa, haz lo siguiente:
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID del proyecto.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
- Haz clic en Enviar filtro.
Accede a los registros de una subred específica
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el primer menú desplegable, desplaza el cursor hacia Subred y, luego, muévelo hacia la derecha para abrir el menú de selección de subredes individual.
- En el segundo menú desplegable, selecciona compute.googleapis.com/vpc_flows.
- Haz clic en Aceptar.
O, como alternativa, haz lo siguiente:
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID de tu proyecto ySUBNET_NAME
por tu subred.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" resource.labels.subnetwork_name="SUBNET_NAME"
- Haz clic en Enviar filtro.
Accede a los registros de una VM específica
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID de tu proyecto y VM_NAME por tu VM.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.src_instance.vm_name="VM_NAME"
- Haz clic en Enviar filtro.
Accede a los registros de tráfico a un rango de subred específico
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID del proyecto ySUBNET_RANGE
por un rango de CIDR (192.168.1.0/24
).resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" ip_in_net(jsonPayload.connection.dest_ip, SUBNET_RANGE)
- Haz clic en Enviar filtro.
Accede a los registros de un clúster de GKE específico
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID de tu proyecto ySUBNET_NAME
por tu subred.resource.type="gce_subnetwork" logName="projects/{#project_id}/logs/vpc_flows" jsonPayload.src_gke_details.cluster.cluster_name="{#cluster_name}" OR jsonPayload.dest_gke_details.cluster.cluster_name="{#cluster_name}"
- Haz clic en Enviar filtro.
Accede a los registros de puertos y protocolos específicos
En el caso de un puerto de destino individual, haz lo siguiente:
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID del proyecto, PORT por el puerto de destino y PROTOCOL por el protocolo.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.connection.dest_port=PORT jsonPayload.connection.protocol=PROTOCOL
- Haz clic en Enviar filtro.
En el caso de más de un puerto de destino, haz lo siguiente:
- Ve a la página Registros en Google Cloud Console.
Ir a la página Registros - En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
- Pega lo siguiente en el campo. Reemplaza
PROJECT_ID
por el ID del proyecto, PORT1 y PORT2 por los puertos de destino, y PROTOCOL por el protocolo.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.connection.dest_port=(PORT1 OR PORT2) jsonPayload.connection.protocol=PROTOCOL
- Haz clic en Enviar filtro.
Exporta registros a BigQuery, Pub/Sub y destinos personalizados
Puedes exportar los registros de flujo de Logging a un destino de tu elección, como se describe en la documentación de Logging. Consulta la sección anterior para ver ejemplos de filtros.
Soluciona problemas
Ningún vpc_flows
aparece en Logging en el recurso gce_subnetwork
- Confirma que el registro esté habilitado para la subred determinada.
- Los flujos de VPC solo se admiten en redes de VPC. Si tienes una red heredada, no verás ningún registro.
- En redes de VPC compartida, los registros solo aparecen en el proyecto host y no en el proyecto de servicio. Asegúrate de buscar los registros en el proyecto host.
- Los filtros de exclusión de registros bloquean los registros especificados.
Asegúrate de que ninguna regla de exclusión descarte los registros de flujo de VPC.
- Ve a Uso del recurso.
- Haz clic en la pestaña Exclusiones.
- Asegúrate de que no haya ninguna regla de exclusión que pueda descartar los registros de flujo de VPC.
Los valores de RTT o de bytes no aparecen en algunos registros
- Es posible que falten mediciones de RTT si no se realizó una muestra de una cantidad suficiente de paquetes que capture el RTT. Esto es más frecuente en conexiones con poco volumen.
- No hay valores RTT disponibles para flujos UDP.
- Algunos paquetes se envían sin carga útil. Si solo se realizaron muestras sobre paquetes de solo encabezado, el valor en bytes será 0.
Faltan algunos flujos
- Solo se admiten protocolos de UDP y TCP. Los registros de flujo de VPC no admiten ningún otro protocolo.
- Los registros se muestrean. Algunos paquetes en flujos de volumen muy bajo pueden pasarse por alto.
Faltan anotaciones de GKE en algunos registros
Consulta las anotaciones de GKE para comprender los detalles de las anotaciones de GKE.
- Asegúrate de que Google Kubernetes Engine Monitoring esté habilitado en el clúster. En algunos casos, es posible que falten algunas de las anotaciones si GKE Monitoring no está habilitado. Para verificar si GKE Monitoring está habilitado en el clúster, sigue estas instrucciones.
- Si GKE Monitoring está habilitado en el clúster y aún ves anotaciones de GKE faltantes, puedes verificar si el agente que envía actualizaciones de metadatos a Monitoring está enviando actualizaciones de forma correcta en el panel de la API de Monitoring para tu proyecto en Cloud Console. En algunos casos, puede haber errores debido a que se superó la cuota de la API. Ve al panel de cuotas de la API y comprueba si hay errores de cuota excedida. Si hay errores de cuota excedida, sigue las instrucciones en Administra tu cuota para solicitar un aumento de cuota.
Faltan registros para algunos flujos de GKE
Asegúrate de que la Visibilidad dentro de los nodos esté habilitada en el clúster. De lo contrario, los flujos entre los Pods del mismo nodo no se registran.
Los registros de flujo parecen estar inhabilitados aunque los hayas habilitado
Cuando configuras una subred de solo proxy para balanceadores de cargas internos de HTTP(S) y usas el comando
gcloud compute networks subnets
a fin de habilitar los registros de flujo de VPC, parece que el comando se ejecuta con éxito, pero los registros de flujo en realidad no están habilitados. La marca--enable-flow-logs
no se aplica cuando también incluyes la marca--purpose=INTERNAL_HTTPS_LOAD_BALANCER
.Si usas Cloud Console o la API a fin de habilitar los registros de flujo, verás el mensaje de error: “Valor no válido para el campo ‘resource.enableFlowLogs’: ‘true’. Campo no válido configurado en la subred con el propósito INTERNAL_HTTPS_LOAD_BALANCEER”.
Debido a que las subredes de solo proxy no tienen VM, no admiten los registros de flujo de VPC. Este es el comportamiento esperado.
Precios
Se aplicará el precio estándar para Logging, BigQuery o Pub/Sub. El precio de los registros de flujo de VPC se describe en Precios de telemetría de red.
¿Qué sigue?
- Consulta la documentación de Logging.
- Consulta la documentación sobre la exportación de Logging.