Utilisez les journaux de flux pour enregistrer les métadonnées du trafic réseau, y compris les 5-tuples, dans Google Distributed Cloud (GDC) air-gapped dans la pile d'observabilité sous la forme de journaux interrogeables. Utilisez ces journaux pour :
- Comprendre les flux de trafic pour un service particulier dans une organisation
- Comprendre et identifier les problèmes liés à l'état du réseau d'une charge de travail Kubernetes
- Vérifier les règles de réseau Kubernetes
Le journal de flux est une fonctionnalité GDC basée sur le projet Open Source Hubble : https://github.com/cilium/hubble. Configurez les journaux de flux à l'aide de la ressource FlowLog de l'API Networking.
Avant de commencer
Vous devez obtenir l'autorisation de gérer ou d'afficher les journaux de flux depuis la console GDC. Pour gérer les journaux de flux, demandez à votre administrateur d'organisation IAM de vous accorder le rôle d'administrateur des journaux de flux (
flowlog-admin). Pour n'afficher que les journaux de flux existants, demandez à l'administrateur de l'organisation IAM de vous accorder le rôle Lecteur de journaux de flux (flowlog-viewer).Pour en savoir plus sur la définition des liaisons de rôles à partir de la console GDC, consultez Accorder l'accès aux ressources.
Avant d'interroger et d'afficher les journaux de flux sur les tableaux de bord, vous devez obtenir l'accès à l'instance de surveillance. Pour en savoir plus, consultez Interroger et afficher des métriques.
Créer un journal de flux
Créez un journal de flux pour enregistrer les métadonnées du trafic réseau filtrées par un ensemble de spécifications donné.
Créer un journal de flux avec des filtres de protocole et de point de terminaison
Créez un fichier nommé
example-flowlog.yamlavec le contenu suivant :apiVersion: networking.gdc.goog/v1 kind: FlowLog metadata: name: "FLOW_LOG_NAME" namespace: "platform" spec: filters: - l4Protocols: - udp endpoint: ports: - 53 lifetime: duration: "12h"Remplacez
FLOW_LOG_NAMEpar le nom choisi pour le journal de flux.Dans cet exemple, le journal de flux capture tout le trafic UDP sur le port 53 (comme le trafic DNS). Il arrête d'enregistrer les journaux 12 heures après la création de l'objet.
Créez l'objet de journal de flux :
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlRemplacez
MANAGEMENT_API_SERVERpar le chemin d'accès du fichier kubeconfig pour le serveur d'API Management zonal.Vérifiez que la valeur
FLOW_LOG_NAMEa été correctement rapprochée et que le processus de journalisation a démarré en examinant le champStatus:kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEExemple d'état :
Status: Clusters: Cluster: org-1-infra-cluster Conditions: Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Name: cilium-flowlog-config Namespace: kube-system Node: org-1-infra Cluster: user-vm-1-cluster Conditions: Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Name: cilium-flowlog-config Namespace: kube-system Node: user-vm-1 Cluster: user-vm-2-cluster Conditions: Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Name: cilium-flowlog-config Namespace: kube-system Node: user-vm-2 Conditions: Last Transition Time: 2024-01-18T19:17:53Z Message: Observed Generation: 1 Reason: Active Status: True Type: Logging Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Last Transition Time: 2024-01-18T19:17:53Z Message: Observed Generation: 1 Reason: Succeeded Status: True Type: Reconciled Start Time: 2024-01-18T19:17:53Z End Time: 2024-01-18T20:17:53ZCet exemple de résultat contient les conditions suivantes :
Propagated: la configuration des journaux de flux a été envoyée aux clustersuser-vm-1,user-vm-2etorg-1-infra.Reconciled: le journal de flux a bien été programmé sur les clustersuser-vm-1,user-vm-2etorg-1-infra.Logging: le journal de flux n'a pas expiré, n'est pas désactivé, n'a rencontré aucune erreur et peut produire des journaux si les filtres correspondent aux flux.Start TimeetEnd Timeindiquent que le job a démarré à19:17:53et expire à20:17:53.
Pour que ce journal de flux puisse produire des entrées de journal, toutes les conditions
Propagated,ReconciledetLoggingdoivent être remplies.
Modifier le journal de flux
Pour modifier un journal de flux existant, modifiez la définition de l'objet de journal de flux créé dans le fichier example-flowlog.yaml, puis appliquez-la à nouveau :
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
Afficher les journaux de flux dans le tableau de bord de surveillance
Ouvrez le tableau de bord des journaux opérationnels. Pour en savoir plus, consultez Interroger les journaux opérationnels.
Définissez la valeur du menu déroulant identifier sur
network-flow-logs, puis cliquez sur add json parser et fournissez la valeur suivante à la requête :{identifier="network-flow-logs"} | json.
Cliquez sur Exécuter la requête. Les entrées de journal de flux enregistrées s'affichent :

Utilisez les filtres pour affiner davantage les résultats. Par exemple, indiquez la valeur
user-vm-1dans le menu déroulant cluster pour n'examiner que les flux collectés à partir du clusteruser-vm-1:
Parcourez les entrées de journal de flux, développez l'entrée pour en afficher les détails et ajoutez d'autres filtres d'étiquettes si nécessaire à l'aide de l'icône de raccourci. Dans cet exemple, nous voulons filtrer davantage les flux en fonction de leur adresse IP source :

Cliquez sur l'icône de raccourci
+pour filtrer les flux en fonction d'un champ de métadonnées spécifique.
Afficher les résultats par nom de journal de flux
Lorsque plusieurs journaux de flux sont créés, vous pouvez créer un filtre d'étiquette supplémentaire pour afficher les résultats d'un ou de plusieurs journaux de flux.
Pour afficher les résultats limités aux journaux produits par FLOW_LOG_NAME, créez un filtre par libellé avec les valeurs suivantes :
- La valeur de
LabelestOn. Ce champ est sensible à la casse. - La valeur de
Operatorest~=. Cette option utilise un outil de mise en correspondance des expressions régulières. - La valeur de
Valueest/FLOW_LOG_NAME/. La valeurFLOW_LOG_NAMEdoit être entourée de/.
Filtrez les résultats pour n'afficher que les journaux produits par flowlog1 :

Références
- Documentation sur l'exportateur dynamique Hubble : https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration