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
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: - 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). La registrazione dei log viene interrotta 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 a livello di zona.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_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 potrebbe 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 generare correttamente voci di log, tutte le condizioni
Propagated,ReconciledeLoggingdevono 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
Apri la dashboard dei log operativi. Per saperne di più, consulta Esegui query sui 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 dei log di flusso salvate:

Utilizza i filtri per perfezionare ulteriormente i risultati. Ad esempio, fornisci il valore
user-vm-1nel menu a discesa cluster per esaminare solo i flussi raccolti dal clusteruser-vm-1:
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:

Fai clic sull'icona di scorciatoia
+per filtrare i flussi in base a un campo di metadati specifico.
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:
Labelimpostato suOn. Questo valore è sensibile alle maiuscole.Operatorimpostato su~=. Utilizza un matcher di espressioni regolari.Valueimpostato su/FLOW_LOG_NAME/. Il valoreFLOW_LOG_NAMEdeve essere racchiuso tra/.
Filtra i risultati per 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