Utilizza i log di flusso per salvare i metadati del traffico di rete, incluse le 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 ulteriori 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
Crea un file denominato
example-flowlog.yamlcon 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_NAMEcon 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-systemokube-systema qualsiasi pod nello spazio dei nomikube-system. Interrompe la registrazione dei log un'ora 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 Management zonale.Verifica che il valore di
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ò produrre 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 voci di log, tutte le condizioni
Propagated,ReconciledeLoggingdevono 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
Apri la dashboard del log operativo. Per saperne di più, consulta Query dei log operativi.
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:
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 di log di flusso, espandi la voce per esaminare i dettagli e aggiungi altri filtri delle etichette in base alle necessità utilizzando l'icona di scorciatoia. 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 in base al 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 prodotti da flowlog1:

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