À propos des enregistrements des journaux de flux VPC

Cette page décrit le format d'enregistrement des journaux de flux VPC, y compris les champs de base et de métadonnées disponibles. Il explique également comment vous pouvez utiliser le filtrage des journaux afin que seuls les journaux correspondant à certains critères soient générés.

Format de l'enregistrement

Les enregistrements de journal contiennent des champs de base, qui constituent les principaux champs de chaque enregistrement de journal, ainsi que des champs de métadonnées qui ajoutent des informations supplémentaires. Les champs de métadonnées peuvent être omis pour réduire les coûts de stockage.

Le format "multi-champs" de certains champs affiche plusieurs données dans un même champ. Par exemple, le champ connection est au format IpConnection, qui contient l'adresse IP et les ports sources et de destination ainsi que le protocole, dans un seul champ. Ces champs particuliers sont décrits sous le tableau relatif au format de l'enregistrement.

Remarque : Les valeurs des champs de métadonnées ne sont pas basées sur le chemin du plan de données. Elles sont approximatives, et peuvent être manquantes ou incorrectes. En revanche, les valeurs des champs de base proviennent directement des en-têtes des paquets.

Champ Format du champ Type de champ : métadonnées de base ou facultatives
connexion IpConnection
5-tuple décrivant le flux.
Couches
reporter string
Côté ayant signalé le flux. Il peut s'agir de SRC, DEST, SRC_GATEWAY ou DEST_GATEWAY.
Couches
rtt_msec int64
Latence mesurée pendant l'intervalle de temps. Ce champ n'est disponible que pour le trafic TCP signalé par les VM. La latence mesurée correspond au temps écoulé entre l'envoi d'une séquence et la réception de l'indicateur ACK correspondant. Le résultat de la latence correspond à la somme de la latence DAR du réseau et de tout délai lié à l'application.
Couches
bytes_sent int64
Quantité d'octets envoyés depuis la source vers la destination.
Couches
packets_sent int64
Nombre de paquets envoyés depuis la source vers la destination.
Couches
start_time string
Horodatage (format de chaîne de date RFC 3339) du premier paquet observé pendant l'intervalle de temps cumulé.
Couches
end_time string
Code temporel (format de chaîne de date RFC 3339) du dernier paquet observé pendant l'intervalle de temps cumulé.
Couches
Champs de métadonnées source et de destination
src_gateway GatewayDetails
Si la source du flux est un point de terminaison cloud ou sur site connecté à Google Cloud via une passerelle telle qu'un rattachement VLAN pour Cloud Interconnect ou un tunnel Cloud VPN, et si l'une des conditions suivantes est remplie, ce champ est renseigné avec les détails de la passerelle :
  • La passerelle source est l'outil qui signale le flux.
  • La destination du flux est l'outil de signalement, et le réseau VPC auquel la passerelle source est connectée se trouve dans le même projet Google Cloud que le projet dans lequel les journaux de flux VPC signalent les journaux pour la destination du flux.
Métadonnées
dest_gateway GatewayDetails
Si la destination du flux est un point de terminaison cloud ou sur site connecté à Google Cloud via une passerelle telle qu'un rattachement VLAN pour Cloud Interconnect ou un tunnel Cloud VPN, et si l'une des conditions suivantes est remplie, ce champ est renseigné avec les informations de la passerelle :
  • La passerelle de destination est l'outil de création du flux.
  • La source du flux est l'outil de création de rapports, et le réseau VPC auquel la passerelle de destination est connectée se trouve dans le même projet Google Cloud que le projet dans lequel les journaux de flux VPC génèrent des journaux pour la source du flux.
Métadonnées
src_gke_details GkeDetails
Si la source du flux est un point de terminaison Google Kubernetes Engine (GKE), ce champ contient les détails du point de terminaison GKE.
Métadonnées
dest_gke_details GkeDetails
Si la destination du flux est un point de terminaison GKE, ce champ contient les détails du point de terminaison GKE.
Métadonnées
src_google_service GoogleServiceDetails
Si la source du flux est une API Google, les métadonnées de l'API Google disponibles sont insérées dans ce champ.
Métadonnées
dest_google_service GoogleServiceDetails
Si la destination du flux est une API Google, les métadonnées de l'API Google disponibles sont insérées dans ce champ.
Métadonnées
src_instance InstanceDetails
Si la source du flux est une VM située sur un réseau VPC et que l'une des conditions suivantes est remplie, les détails de l'instance de VM sont insérés dans ce champ :
  • La VM source est l'outil de signalement du flux.
  • La destination du flux est l'outil de signalement, et la VM source, ou le réseau VPC auquel la VM source est associée, se trouve dans le même projet Google Cloud que le projet dans lequel les journaux de flux VPC transmettent les journaux pour la destination du flux.
Métadonnées
dest_instance InstanceDetails
Si la destination du flux est une VM située sur un réseau VPC et que l'une des conditions suivantes est remplie, les détails de l'instance de VM sont insérés dans ce champ.
  • La VM de destination est l'outil de signalement du flux.
  • La source du flux est l'outil de signalement, et la VM de destination, ou le réseau VPC auquel la VM de destination est associée, se trouve dans le même projet Google Cloud que le projet dans lequel les journaux de flux VPC signalent les journaux pour la source du flux.
Métadonnées
src_location GeographicDetails
Si la source du flux est une adresse IP publique en dehors du réseau VPC, les métadonnées disponibles relatives à l'emplacement sont insérées dans ce champ.
Métadonnées
dest_location GeographicDetails
Si la destination du flux est une adresse IP publique en dehors du réseau VPC, les métadonnées disponibles concernant l'emplacement sont insérées dans ce champ.
Métadonnées
src_vpc VpcDetails
Si la source du flux est une VM située sur un réseau VPC et que l'une des conditions suivantes est remplie, ce champ contient les détails du réseau VPC :
  • La VM source est l'outil de signalement du flux.
  • La destination du flux est l'outil de signalement, et la VM source ou le réseau VPC auquel la VM source est associée se trouvent dans le même projet Google Cloud que le projet dans lequel les journaux de flux VPC signalent les journaux pour la destination du flux.
Métadonnées
dest_vpc VpcDetails
Si la destination du flux est une VM située sur un réseau VPC et que l'une des conditions suivantes est remplie, ce champ contient les détails du réseau VPC :
  • La VM de destination est l'outil de signalement du flux.
  • La source du flux est l'outil de signalement, et la VM de destination, ou le réseau VPC auquel la VM de destination est associée, se trouve dans le même projet Google Cloud que le projet dans lequel les journaux de flux VPC signalent les journaux pour la source du flux.
Métadonnées
Autres champs de métadonnées
internet_routing_details InternetRoutingDetails
Si le flux est établi entre Google Cloud et Internet, ce champ est renseigné avec des détails de routage. Disponible uniquement pour les flux de sortie.
Métadonnées
load_balancing LoadBalancingDetails
Si le flux passe par un équilibreur de charge dans l'une des configurations suivantes, ce champ est renseigné avec les informations de Cloud Load Balancing :
  • Le signaleur du flux est le client de l'équilibreur de charge, et le type d'équilibreur de charge est APPLICATION_LOAD_BALANCER, PROXY_NETWORK_LOAD_BALANCER, PASSTHROUGH_NETWORK_LOAD_BALANCER ou PROTOCOL_FORWARDING.
  • Le signaleur du flux est le backend de l'équilibreur de charge, et le type d'équilibreur de charge est PASSTHROUGH_NETWORK_LOAD_BALANCER ou PROTOCOL_FORWARDING.
Métadonnées
network_service NetworkServiceDetails
Si l'en-tête DSCP (Differentiated Services Code Point) est défini, ce champ contient les détails du service réseau.
Métadonnées
psc PrivateServiceConnectDetails
Si le flux passe par Private Service Connect dans l'une des configurations suivantes, ce champ est renseigné avec des informations sur Private Service Connect :
  • L'utilisateur qui signale le trafic Private Service Connect est un consommateur et utilise un point de terminaison Private Service Connect qui cible un service publié ou des API Google globales.
  • Le signaleur du trafic Private Service Connect est un producteur et utilise un équilibreur de charge réseau passthrough interne ou un transfert de protocole interne.
Métadonnées

Format de champ IpConnection

Champ Type Description
protocol int32 Numéro de protocole IANA
src_ip string Adresse IP source
dest_ip string Adresse IP de destination
src_port int32 Port source
dest_port int32 Port de destination

Format de champ GatewayDetails

Champ Type Description
project_id chaîne ID de projet Google Cloud de la passerelle
emplacement chaîne Région de la passerelle
nom chaîne Nom de la passerelle
type chaîne Type de passerelle. Il peut s'agir de INTERCONNECT_ATTACHMENT ou VPN_TUNNEL.
vpc VpcDetails Détails du réseau VPC de la passerelle

Format de champ GkeDetails

Champ Type Description
cluster ClusterDetails Métadonnées du cluster GKE.
pod PodDetails Métadonnées du pod GKE, renseignées lorsque la source ou la destination du trafic est un pod.
service ServiceDetails Métadonnées du service GKE, renseignées seulement dans les points de terminaison du service. L'enregistrement contient jusqu'à deux services. S'il existe plus de deux services pertinents, ce champ contient un seul service avec un marqueur MANY_SERVICES spécial.

Format de champ ClusterDetails

Champ Type Description
cluster_location chaîne Emplacement du cluster. Il peut s'agir d'une zone ou d'une région selon que le cluster est zonal ou régional.
cluster_name chaîne Nom du cluster GKE.

Format de champ PodDetails

Champ Type Description
pod_name chaîne Nom du pod
pod_namespace chaîne Espace de noms du pod
pod_workload WorkloadDetails Métadonnées sur la ressource de charge de travail de premier niveau qui contrôle le pod
Format de champ WorkloadDetails
Champ Type Description
workload_name chaîne Nom du contrôleur de charge de travail de premier niveau
workload_type chaîne Type du contrôleur de charge de travail de premier niveau. Il peut s'agir de DEPLOYMENT, REPLICA_SET, STATEFUL_SET, DAEMON_SET, JOB, CRON_JOB ou REPLICATION_CONTROLLER.

Format de champ ServiceDetails

Champ Type Description
service_name chaîne Nom du service. S'il existe plus de deux services pertinents, le champ est défini sur un marqueur MANY_SERVICES spécial.
service_namespace chaîne Espace de noms du service.

Exemple :

S'il existe deux services, le champ "Service" se présente comme suit :

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

S'il existe plus de deux services, le champ "Service" se présente comme suit :

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

Format de champ GoogleServiceDetails

Champ Type Description
type chaîne Ce champ est défini sur GOOGLE_API.

Format de champ InstanceDetails

Champ Type Description
project_id chaîne ID du projet Google Cloud contenant la ressource VM
région chaîne Région de la VM
vm_name chaîne Nom d'instance de la VM
zone chaîne Zone de la VM

Format de champ GeographicDetails

Champ Type Description
asn int32 Numéro ASN du réseau externe auquel ce point de terminaison appartient.
city chaîne Ville des points de terminaison externes
continent chaîne Continent des points de terminaison externes
pays chaîne Pays des points de terminaison externes, représentés par leurs codes pays sur trois lettres (code alpha-3 selon l'ISO 3166-1).
région chaîne Région des points de terminaison externes

Format de champ VpcDetails

Champ Type Description
project_id chaîne ID du projet Google Cloud contenant le VPC. Dans une configuration de VPC partagé, project_id correspond à l'ID du projet hôte.
subnetwork_name chaîne Nom du sous-réseau, le cas échéant
subnetwork_region chaîne Région du sous-réseau, le cas échéant
vpc_name chaîne Nom du réseau

Format du champ InternetRoutingDetails

Champ Type Description
egress_as_path AsPath Liste des chemins AS correspondants. Si plusieurs chemins AS sont disponibles pour le flux, le champ peut contenir plusieurs chemins AS.

Format du champ AsPath

Champ Type Description
as_details AsDetails Liste des détails AS pour tous les systèmes dans le chemin AS. La liste commence par le premier AS externe au réseau Google Cloud et se termine par l'AS auquel appartient l'adresse IP distante.

Format du champ AsDetails

Champ Type Description
asn uint32 Numéro de système autonome (ASN) de l'AS

Format de champ LoadBalancingDetails

Champ Type Description
forwarding_rule_project_id chaîne ID de projet Google Cloud de la règle de transfert
reporter chaîne Outil de signalement Cloud Load Balancing. Peut correspondre à CLIENT ou BACKEND.
  • Si le rapporteur du flux est le client de l'équilibreur de charge, ce champ est défini sur CLIENT.
  • Si le rapporteur du flux est le backend de l'équilibreur de charge, ce champ est défini sur BACKEND.
type chaîne Type d'équilibreur de charge. Il peut s'agir de APPLICATION_LOAD_BALANCER, PROXY_NETWORK_LOAD_BALANCER, PASSTHROUGH_NETWORK_LOAD_BALANCER ou PROTOCOL_FORWARDING.
schéma chaîne Schéma de l'équilibreur de charge. Il peut s'agir de EXTERNAL_MANAGED, INTERNAL_MANAGED, EXTERNAL, INTERNAL ou INTERNAL_SELF_MANAGED.
url_map_name chaîne Nom du mappage d'URL. Inséré si le type de l'équilibreur de charge est APPLICATION_LOAD_BALANCER.
forwarding_rule_name chaîne Nom de la règle de transfert
backend_service_name chaîne Nom du service de backend. Inséré si le signaleur est BACKEND et que le type d'équilibreur de charge est PASSTHROUGH_NETWORK_LOAD_BALANCER. Si le type de groupe de backend est TARGET_POOL, ce champ n'est pas renseigné.
backend_group_name chaîne Nom du groupe de backend. Inséré si le signaleur est BACKEND et que le type d'équilibreur de charge est PASSTHROUGH_NETWORK_LOAD_BALANCER.
backend_group_type chaîne Type du groupe de backend. Il peut s'agir de INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP ou TARGET_POOL. Inséré si le signaleur est BACKEND et que le type d'équilibreur de charge est PASSTHROUGH_NETWORK_LOAD_BALANCER.
backend_group_location chaîne Emplacement du groupe de backend. Peut être une zone ou une région, selon que le champ d'application du groupe de backend est zonal ou régional. Inséré si le signaleur est BACKEND et que le type d'équilibreur de charge est PASSTHROUGH_NETWORK_LOAD_BALANCER. Si le type de groupe de backend est TARGET_POOL, ce champ n'est pas renseigné.
vpc VpcDetails Détails du réseau VPC de l'équilibreur de charge

Format de champ NetworkServiceDetails

Champ Type Description
dscp int32 Si le champ Differentiated Services est présent dans les en-têtes de paquets, la valeur DSCP est insérée dans ce champ.

Format de champ PrivateServiceConnectDetails

Champ Type Description
reporter chaîne Outil de signalement Private Service Connect Peut correspondre à CONSUMER ou PRODUCER.
psc_endpoint PrivateServiceConnectEndpointDetails Informations sur le point de terminaison. Champ renseigné si l'auteur du signalement est CONSUMER.
psc_attachment PrivateServiceConnectAttachmentDetails Détails du rattachement de service. Inséré si le flux de trafic inclut un producteur Private Service Connect.

Format de champ PrivateServiceConnectEndpointDetails

Champ Type Description
project_id chaîne ID de projet Google Cloud du point de terminaison Private Service Connect
région chaîne Région du point de terminaison. Non renseigné si le type de service cible est GLOBAL_GOOGLE_APIS.
psc_connection_id chaîne ID de connexion Private Service Connect
target_service_type chaîne Type de service cible. Peut correspondre à GLOBAL_GOOGLE_APIS ou PUBLISHED_SERVICE.
vpc VpcDetails Informations sur le réseau VPC du point de terminaison Private Service Connect

Format de champ PrivateServiceConnectAttachmentDetails

Champ Type Description
project_id chaîne ID de projet Google Cloud du rattachement de service
région chaîne Région du rattachement de service
vpc VpcDetails Détails du réseau VPC du rattachement de service

Annotations des métadonnées

Les enregistrements de journal contiennent des champs de base et des champs de métadonnées. La section Format de l'enregistrement répertorie les champs qui sont des métadonnées de type et ceux de base. Tous les champs de base sont toujours inclus. Vous pouvez personnaliser les champs de métadonnées à conserver.

  • Si vous sélectionnez toutes les métadonnées, tous les champs de métadonnées au format d'enregistrement des journaux de flux VPC sont inclus dans les journaux de flux. Lorsque de nouveaux champs de métadonnées sont ajoutés au format d'enregistrement, les journaux de flux incluent automatiquement les nouveaux champs.

  • Si vous ne sélectionnez aucune métadonnée, tous les champs de métadonnées sont omis.

  • Si vous sélectionnez des métadonnées personnalisées, vous pouvez spécifier les champs de métadonnées que vous souhaitez inclure par le champ parent, tels que src_vpc, ou par leur nom complet, par exemple src_vpc.project_id.

    Lorsque de nouveaux champs de métadonnées sont ajoutés au format d'enregistrement, ils sont exclus des journaux de flux, sauf s'ils se trouvent dans un champ parent que vous avez spécifié.

    • Si vous spécifiez des métadonnées personnalisées à l'aide de champs parents, lorsque de nouveaux champs de métadonnées sont ajoutés au format d'enregistrement au sein de ce champ parent, les journaux de flux incluent automatiquement les nouveaux champs.

    • Si vous spécifiez des métadonnées personnalisées à l'aide du nom complet du champ, les nouveaux champs de métadonnées ajoutés au champ parent sont exclus des journaux de flux.

Pour en savoir plus sur la personnalisation des champs de métadonnées, consultez les instructions de Google Cloud CLI ou de l'API pour activer la journalisation de flux VPC lorsque vous créez un sous-réseau.

Annotations de métadonnées GKE

Les flux comportant un point de terminaison dans un cluster GKE peuvent être annotés avec des annotations de métadonnées GKE, qui peuvent inclure des détails sur le cluster, le pod et le service du point de terminaison.

Annotations de service GKE

Le trafic envoyé à une ressource ClusterIP, NodePort ou LoadBalancer peut recevoir des annotations de service. Si le trafic est envoyé à une ressource NodePort ou LoadBalancer, le flux reçoit l'annotation de service sur les deux sauts de la connexion.

Le trafic envoyé directement au port de service d'un pod est annoté avec une annotation de service sur le point de terminaison de destination.

Le trafic envoyé au port de service d'un pod où le pod sauvegarde plusieurs services sur le même port de service est annoté avec plusieurs services sur le point de terminaison de destination. Ce processus est limité à deux services. S'il y en a plus, le point de terminaison sera annoté avec un marqueur MANY_SERVICES spécial.

Annotations de pod sur le trafic Internet

Le trafic entre un pod et Internet ne reçoit pas d'annotations de pod par défaut. Les journaux de flux VPC ne peuvent pas ajouter d'annotations de pod, car pour les paquets à destination d'Internet, l'agent de masquage traduit l'adresse IP du pod en adresse IP du nœud avant que les journaux de flux VPC ne voient le paquet.

En raison du masquage, les annotations de pod ne sont visibles que si les destinations se trouvent dans l'un des deux emplacements suivants : des destinations non masquées par défaut ou une liste nonMasqueradeCIDRs personnalisée. Si vous incluez des destinations Internet dans une liste nonMasqueradeCIDRs personnalisée, vous devez fournir un moyen de traduire les adresses IP internes du pod avant qu'elles ne soient transmises à Internet. Pour les clusters privés et non privés, vous pouvez utiliser Cloud NAT. Consultez la section Interaction avec GKE pour en savoir plus.

Filtrage des journaux

Lorsque vous activez les journaux de flux VPC, vous pouvez définir un filtre basé sur les champs de base et de métadonnées qui ne conservent que les journaux correspondant au filtre. Tous les autres journaux sont supprimés avant d'être écrits dans Logging, ce qui vous permet de réaliser des économies et de réduire le temps nécessaire à la localisation des informations recherchées.

Vous pouvez filtrer sur n'importe quel sous-ensemble des champs répertoriés dans Format des enregistrements, à l'exception des champs suivants :

  • rtt_msec
  • bytes_sent
  • packets_sent
  • start_time
  • end_time

Le filtrage des journaux de flux VPC utilise CEL, un langage d'expression intégré pour les expressions logiques basées sur des attributs. Les expressions de filtre pour les journaux de flux VPC sont limitées à 2 048 caractères. Pour en savoir plus, consultez la section Opérateurs logiques CEL compatibles.

Pour plus d'informations sur la syntaxe CEL, consultez la présentation de CEL et la définition du langage. La fonctionnalité de filtre de génération est compatible avec un sous-ensemble limité de la syntaxe CEL.

Pour en savoir plus sur la création d'un sous-réseau qui utilise le filtrage de journaux, consultez les instructions de gcloud CLI ou de l'API pour Activer les journaux de flux VPC lorsque vous créez un sous-réseau.

Pour en savoir plus sur la configuration du filtrage des journaux, consultez les instructions de gcloud CLI ou de l'API pour mettre à jour les paramètres des journaux de flux VPC.

Exemple 1 : Limiter la collecte des journaux à une VM spécifique nommée my-vm. Dans ce cas, les journaux ne sont enregistrés que lorsque le champ src_instance, tel qu'il est signalé par la source du trafic, correspond à my-vm ou lorsque le champ dst_instance, tel qu'il est signalé par la destination du trafic, correspond à my-vm.

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')"

Exemple 2 : Limiter la collecte des journaux aux paquets dont les adresses IP sources se trouvent dans le sous-réseau 10.0.0.0/8.

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

Exemple 3 : Limiter la collecte des journaux au trafic externe à un VPC

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

Opérateurs logiques CEL compatibles

Expression Types compatibles Description
true, false Booléen Constantes booléennes

x == y

x != y

Boolean, Int, String

Opérateurs de comparaison

Exemple : connection.protocol == 6

x && y

x || y

Booléen

Opérateurs logiques booléens

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

!x Booléen Négation
1, 2.0, 0, ... Int Littéraux numériques constants
x + y Chaîne Concaténation de chaînes
"foo", 'foo', ... Chaîne Littéral de chaîne constante
x.lower() Chaîne Renvoie la valeur en minuscules de la chaîne
x.upper() Chaîne Renvoie la valeur en majuscules de la chaîne
x.contains(y) Chaîne Renvoie la valeur "true" si la chaîne contient la sous-chaîne spécifiée
x.startsWith(y) Chaîne Renvoie la valeur "true" si la chaîne commence par la sous-chaîne spécifiée
x.endsWith(y) Chaîne Renvoie la valeur "true" si la chaîne se termine par la sous-chaîne spécifiée
inIpRange(X, Y) Chaîne

Renvoie la valeur "true" si X est une adresse IP et si Y est une plage d'adresses IP contenant X.

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

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

Renvoie la valeur "true" si la liste contient un objet dont les champs correspondent aux paires clé/valeur spécifiées.

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

has(x) Chaîne

Renvoie la valeur "true" si le champ est présent.

Étapes suivantes