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 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 di integrità di rete di un workload Kubernetes.
- Verificare 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 FlowLog
risorsa 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.
Creare un log di flusso
Crea un log di flusso per salvare i metadati del traffico di rete filtrati da un determinato insieme di specifiche.
Creare un log di flusso con filtri di 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. L'operazione di registrazione dei log si interrompe 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 di gestione zonale.Verifica che il valore
FLOW_LOG_NAMEsia stato riconciliato correttamente e che il processo di logging sia stato avviato esaminando il campoStatus:kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEEsempio di stato:
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 del 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 potrebbe generare log se i filtri corrispondono ai flussi.Start TimeeEnd Timeindicano che il job è stato avviato alle19:17:53e scade alle20:17:53.
Affinché questo log di flusso possa produrre correttamente le voci di log, tutte le condizioni
Propagated,ReconciledeLoggingdevono essere vere.
Modificare il 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
Visualizzare i log di flusso nella dashboard di monitoraggio
Apri la dashboard dei log operativi. Per saperne di più, consulta Eseguire query sui log operativi.
Imposta il valore del menu a discesa Identificatore su
network-flow-logs, quindi 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 del log di flusso salvate:

Utilizza i filtri per perfezionare ulteriormente i risultati. Ad esempio, fornisci al menu a discesa Cluster il valore
user-vm-1per esaminare solo i flussi raccolti dal clusteruser-vm-1:
Sfoglia le voci del log di flusso, espandi la voce per visualizzare i dettagli e aggiungi altri filtri di etichetta, se necessario, utilizzando l'icona di scorciatoia. In questo esempio, vogliamo filtrare ulteriormente i flussi in base al relativo 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 di etichetta aggiuntivo per visualizzare i risultati di uno o più log di flusso.
Per visualizzare i risultati limitati ai log generati da FLOW_LOG_NAME, crea un filtro di etichetta con i seguenti valori:
Labelimpostato suOn. È sensibile alle maiuscole/minuscole.Operatorimpostato su~=. Utilizza un operatore di confronto con espressioni regolari.Valueimpostato su/FLOW_LOG_NAME/. Il valoreFLOW_LOG_NAMEdeve essere racchiuso tra/.
Filtra i risultati per visualizzare solo i log generati da flowlog1:

Riferimenti
- Documentazione sull'esportatore dinamico di Hubble: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration