Gestisci log di flusso

Utilizza i log di flusso per salvare i metadati del traffico di rete, inclusi i 5 tuple, in Google Distributed Cloud (GDC) air-gapped nello stack di osservabilità sotto forma di log interrogabili. Utilizza questi log per:

  • Comprendere i flussi di traffico per un determinato servizio in un'organizzazione.
  • Comprendere e identificare i problemi di integrità di rete di un workload Kubernetes.
  • Verifica i criteri di rete di Kubernetes.

Flow log è una funzionalità GDC basata sul progetto open source Hubble: https://github.com/cilium/hubble. Configura i log di flusso utilizzando la risorsa FlowLog dell'API Networking.

Prima di iniziare

  • Devi ottenere l'autorizzazione per gestire o visualizzare i log di flusso dalla console GDC. Per visualizzare o gestire i log di flusso, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo log di flusso corrispondente.

    Per informazioni sull'impostazione dei binding dei ruoli dalla console GDC, vedi Concedere l'accesso alle risorse.

  • Prima di eseguire query e visualizzare i log di flusso nelle dashboard, devi ottenere l'accesso all'istanza di monitoraggio. Per maggiori informazioni, consulta Eseguire query e visualizzare le metriche.

Crea un log di flusso

Crea un log di flusso per salvare i metadati del traffico di rete filtrati in base a un determinato insieme di specifiche.

Crea un log di flusso con filtri per protocollo e spazio dei nomi

  1. Crea un file denominato example-flowlog.yaml con i seguenti contenuti:

    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"
    

    Sostituisci FLOW_LOG_NAME con il nome scelto per il log di flusso.

    In questo esempio, il log di flusso acquisisce tutti i flussi per i quali una connessione TCP è stata avviata da qualsiasi pod nello spazio dei nomi gpc-system o kube-system a qualsiasi pod nello spazio dei nomi kube-system. Interrompe la registrazione dei log un'ora dopo la creazione dell'oggetto.

  2. Crea l'oggetto log di flusso:

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

    Sostituisci MANAGEMENT_API_SERVER con il percorso kubeconfig del server API Management zonale.

  3. Verifica che il valore FLOW_LOG_NAME sia stato riconciliato correttamente e che il processo di logging sia iniziato esaminando il campo Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Stato di esempio:

    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
    

    Questo output di esempio contiene le seguenti condizioni:

    • Propagated: la configurazione dei log di flusso è stata inviata ai cluster user-vm-1, user-vm-2 e org-1-infra.
    • Reconciled: il log di flusso è stato programmato correttamente sui cluster user-vm-1, user-vm-2 e org-1-infra.
    • Logging: il log di flusso non è scaduto o disattivato, non ha riscontrato errori e può produrre log se i filtri corrispondono ai flussi.
    • Start Time e End Time indicano che il job è stato avviato alle ore 19:17:53 e scade alle ore 20:17:53.

    Affinché questo log di flusso possa produrre correttamente voci di log, tutte le condizioni Propagated, Reconciled e Logging devono essere vere.

Modifica del log di flusso

Per modificare un log di flusso esistente, modifica la definizione dell'oggetto log di flusso creato nel file example-flowlog.yaml e applicala di nuovo:

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

Visualizza i log di flusso nella dashboard di monitoraggio

Per visualizzare i log di flusso, chiedi agli utenti con il ruolo di log di flusso corrispondente di controllare Esegui query sui log operativi.

Riferimenti