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.
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 IAM dell'organizzazione di concederti il ruolo Amministratore log di flusso (
flowlog-admin). Per visualizzare solo i log di flusso esistenti, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Visualizzatore log di flusso (flowlog-viewer).Per informazioni sull'impostazione dei binding dei ruoli dalla console GDC, consulta 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 saperne di più, 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 di protocollo ed endpoint
Crea un file denominato
example-flowlog.yamlcon il seguente contenuto: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_NAMEcon 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). Interrompe la registrazione dei log 12 ore dopo la creazione dell'oggetto.
Crea l'oggetto log di flusso:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlSostituisci
MANAGEMENT_API_SERVERcon il percorso kubeconfig del server API di gestione zonale.Verifica che il valore
FLOW_LOG_NAMEsia stato riconciliato correttamente e che il processo di logging sia iniziato esaminando il campoStatus:kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEStato 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:53ZQuesto output di esempio contiene le seguenti condizioni:
Propagated: la configurazione dei log di flusso è stata inviata ai clusteruser-vm-1,user-vm-2eorg-1-infra.Reconciled: il log di flusso è stato programmato correttamente sui clusteruser-vm-1,user-vm-2eorg-1-infra.Logging: il log di flusso non è scaduto o disattivato, non ha riscontrato errori e può generare log se i filtri corrispondono ai flussi.Start TimeeEnd Timeindicano che il job è stato avviato alle ore19:17:53e scade alle ore20:17:53.
Affinché questo log di flusso possa produrre correttamente le voci di log, devono essere vere tutte le condizioni
Propagated,ReconciledeLogging.
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
Apri la dashboard del log operativo. Per saperne di più, consulta Eseguire query sui log operativi.
Imposta il valore del menu a discesa identificatore su
network-flow-logs, poi fai clic su Aggiungi parser JSON e fornisci il seguente valore alla query:{identifier="network-flow-logs"} | json:
Fai clic su Esegui query. Vengono visualizzate le voci di log di flusso salvate:

Utilizza i filtri per perfezionare ulteriormente i risultati. Ad esempio, fornisci il menu a discesa cluster con un valore di
user-vm-1per esaminare solo i flussi raccolti dal clusteruser-vm-1:
Sfoglia le voci del log di flusso, espandi la voce per esaminare i dettagli e aggiungi altri filtri delle etichette in base alle esigenze utilizzando l'icona di scelta rapida. In questo esempio, vogliamo filtrare ulteriormente i flussi in base all'indirizzo IP di origine:

Fai clic sull'icona di scorciatoia
+per filtrare i flussi in base a un campo di metadati specifico.
Visualizzare i risultati per nome del log di flusso
Quando vengono creati più log di flusso, è possibile creare un filtro etichetta aggiuntivo 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:
Labelimpostato suOn. Questo valore è sensibile alle maiuscole.Operatorimpostato su~=. Viene utilizzato un sistema di corrispondenza delle espressioni regolari.Valueimpostato su/FLOW_LOG_NAME/. Il valoreFLOW_LOG_NAMEdeve essere racchiuso tra/.
Filtra i risultati in modo da visualizzare solo i log generati da flowlog1:

Riferimenti
- Documentazione su Hubble Dynamic Exporter: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration