Gérer les journaux de flux

Utilisez les journaux de flux pour enregistrer les métadonnées du trafic réseau, y compris les quintuplets, dans Google Distributed Cloud (GDC) air-gapped dans la pile d'observabilité sous 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.

Les journaux de flux sont 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 une autorisation pour gérer ou afficher les journaux de flux depuis la console GDC. Pour gérer les journaux de flux, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Administrateur des journaux de flux (flowlog-admin). Pour afficher uniquement les journaux de flux existants, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Lecteur des journaux de flux (flowlog-viewer).

    Pour savoir comment définir des liaisons de rôle à partir de la console GDC, consultez Accorder l'accès aux ressources.

  • Avant d'interroger et d'afficher les journaux de flux dans 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 d'espace de noms

  1. Créez un fichier nommé example-flowlog.yaml avec le contenu suivant :

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - tcp
          source:
            namespacePodSelectors:
              - namespace: gpc-system
              - namespace: kube-system
          destination:
            namespacePodSelectors:
              - namespace: kube-system
      lifetime:
        duration: "1h"
    

    Remplacez FLOW_LOG_NAME par le nom choisi pour le journal de flux.

    Dans cet exemple, le journal de flux capture tous les flux pour lesquels une connexion TCP a été lancée par n'importe quel pod dans l'espace de noms gpc-system ou kube-system vers n'importe quel pod dans l'espace de noms kube-system. L'enregistrement des journaux s'arrête une heure après la création de l'objet.

  2. Créez l'objet de journal de flux :

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    Remplacez MANAGEMENT_API_SERVER par le chemin d'accès kubeconfig du serveur d'API Management zonal.

  3. Vérifiez que la valeur FLOW_LOG_NAME a été correctement réconciliée et que le processus de journalisation a démarré en examinant le champ Status :

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Exemple 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:53Z
    

    Cet exemple de sortie contient les conditions suivantes :

    • Propagated : la configuration du journal de flux a été envoyée aux clusters user-vm-1, user-vm-2 et org-1-infra.
    • Reconciled : le journal de flux a été programmé correctement sur les clusters user-vm-1, user-vm-2 et org-1-infra.
    • Logging : le journal de flux n'a pas expiré ni été désactivé, n'a rencontré aucune erreur et peut générer des journaux si les filtres correspondent aux flux.
    • Start Time et End Time indiquent que la tâche a démarré à 19:17:53 et expire à 20:17:53.

    Pour que ce journal de flux puisse générer des entrées de journal, toutes les conditions Propagated, Reconciled et Logging doivent être remplies.

Modifier un 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-le à nouveau :

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

Afficher les journaux de flux dans le tableau de bord de surveillance

  1. Ouvrez le tableau de bord des journaux opérationnels. Pour en savoir plus, consultez Interroger les journaux opérationnels.

  2. Définissez la valeur du menu déroulant Identifiant sur network-flow-logs, puis cliquez sur Ajouter un analyseur JSON et fournissez la valeur suivante à la requête : {identifier="network-flow-logs"} | json :

    Définir un identifiant

  3. Cliquez sur Exécuter la requête. Les entrées de journal de flux enregistrées s'affichent :

    Exécuter la requête

  4. Utilisez les filtres pour affiner les résultats. Par exemple, fournissez la valeur user-vm-1 au menu déroulant Cluster pour n'afficher que les flux collectés à partir du cluster user-vm-1 :

    Affiner les filtres

  5. Parcourez les entrées du journal de flux, développez l'entrée pour afficher les détails et ajoutez d'autres filtres de libellé si nécessaire à l'aide de l'icône de raccourci. Dans cet exemple, nous souhaitons filtrer davantage les flux par adresse IP source :

    Entrée de journal de flux

  6. Cliquez sur l'icône de raccourci + pour filtrer les flux par un champ de métadonnées spécifique.

    Raccourci du filtre par libellé

Afficher les résultats par nom de journal de flux

Lorsque plusieurs journaux de flux sont créés, vous pouvez créer un filtre de libellé supplémentaire pour afficher les résultats d'un ou de plusieurs journaux de flux.

Pour afficher les résultats limités aux journaux générés par FLOW_LOG_NAME, créez un filtre de libellé avec les valeurs suivantes :

  • Label défini sur On. Cette valeur est sensible à la casse.
  • Operator défini sur ~=. Cette valeur utilise un comparateur d'expressions régulières.
  • Value défini sur /FLOW_LOG_NAME/. La valeur FLOW_LOG_NAME doit être entourée de /.

Filtrez les résultats pour n'afficher que les journaux générés par flowlog1 :

Filtrer les libellés par nom de flux

Références