Gestisci log di flusso

Utilizza i log di flusso per salvare i metadati del traffico di rete, incluse le 5-tuple, in Google Distributed Cloud (GDC) con air gap nello stack di osservabilità sotto forma di log su cui è possibile eseguire query. Utilizza questi log per:

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

Il log di flusso è una funzionalità di 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 gestire i log di flusso, chiedi all'amministratore dell'organizzazione IAM di concederti il ruolo Amministratore log di flusso (flowlog-admin). Per visualizzare solo i log di flusso esistenti, chiedi all'amministratore dell'organizzazione IAM di concederti il ruolo Visualizzatore log di flusso (flowlog-viewer).

    Per informazioni sull'impostazione delle associazioni dei ruoli dalla console GDC, consulta Concedi l'accesso alle risorse.

  • Prima di eseguire query e visualizzare i log di flusso sulle dashboard, devi ottenere l'accesso all'istanza di monitoraggio. Per saperne di più, consulta Esegui query e visualizza 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 di protocollo ed endpoint

  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:
            - udp
          endpoint:
            ports:
              - 53
      lifetime:
        duration: "12h"
    

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

    In questo esempio, il log di flusso acquisisce tutto il traffico UDP sulla porta 53 (ad esempio il traffico DNS). La registrazione dei log viene interrotta 12 ore 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 di gestione a livello di zona.

  3. Verifica che il valore FLOW_LOG_NAME sia stato riconciliato correttamente e che il processo di logging sia stato avviato 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 potrebbe 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 generare correttamente voci di log, tutte le condizioni Propagated, Reconciled e Logging devono essere vere.

Modifica log di flusso

Per modificare un log di flusso esistente, modifica la definizione dell'oggetto del 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

  1. Apri la dashboard dei log operativi. Per saperne di più, consulta Esegui query sui log operativi.

  2. Imposta il valore del menu a discesa identifier su network-flow-logs, poi fai clic su add json parser e fornisci il seguente valore alla query: {identifier="network-flow-logs"} | json:

    Imposta l'identificatore

  3. Fai clic su Esegui query. Vengono visualizzate le voci dei log di flusso salvate:

    Esegui query

  4. Utilizza i filtri per perfezionare ulteriormente i risultati. Ad esempio, fornisci il valore user-vm-1 nel menu a discesa cluster per esaminare solo i flussi raccolti dal cluster user-vm-1:

    Perfeziona i filtri

  5. Sfoglia le voci di log di flusso, espandi la voce per visualizzare i dettagli e aggiungi altri filtri di etichette in base alle necessità utilizzando l'icona di scorciatoia. In questo esempio, vogliamo filtrare ulteriormente i flussi in base al relativo indirizzo IP di origine:

    Voce di log di flusso

  6. Fai clic sull'icona di scorciatoia + per filtrare i flussi in base a un campo di metadati specifico.

    Scorciatoia per il filtro per etichetta

Visualizza i risultati in base al nome del log di flusso

Quando vengono creati più log di flusso, è possibile creare un filtro aggiuntivo per le etichette per visualizzare i risultati di uno o più log di flusso.

Per visualizzare i risultati limitati ai log prodotti da FLOW_LOG_NAME, crea un filtro di etichetta con i seguenti valori:

  • Label impostato su On. Questo valore è sensibile alle maiuscole.
  • Operator impostato su ~=. Utilizza un matcher di espressioni regolari.
  • Value impostato su /FLOW_LOG_NAME/. Il valore FLOW_LOG_NAME deve essere racchiuso tra /.

Filtra i risultati per visualizzare solo i log prodotti da flowlog1:

Filtro per etichetta in base al nome del flusso

Riferimenti