Mit Flow-Logs können Sie Metadaten zum Netzwerkverkehr, einschließlich 5-Tupeln, in Google Distributed Cloud (GDC) air-gapped im Observability-Stack in Form von abfragbaren Logs speichern. Mit diesen Logs können Sie:
- Trafficflüsse für einen bestimmten Dienst in einer Organisation nachvollziehen.
- Probleme mit dem Netzwerkzustand einer Kubernetes-Arbeitslast verstehen und identifizieren.
- Kubernetes-Netzwerkrichtlinien prüfen
Das Flow-Log ist eine GDC-Funktion, die auf dem Open-Source-Projekt Hubble basiert: https://github.com/cilium/hubble. Konfigurieren Sie Flusslogs mit der Ressource FlowLog aus der Networking API.
Hinweise
Sie benötigen eine Autorisierung, um Flow-Logs in der GDC Console zu verwalten oder aufzurufen. Wenn Sie Flow-Logs ansehen oder verwalten möchten, bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die entsprechende Flow-Log-Rolle zuzuweisen.
Informationen zum Festlegen von Rollenbindungen über die GDC-Konsole finden Sie unter Zugriff auf Ressourcen gewähren.
Bevor Sie Flow-Logs abfragen und in Dashboards ansehen können, müssen Sie Zugriff auf die Monitoring-Instanz erhalten. Weitere Informationen finden Sie unter Messwerte abfragen und ansehen.
Flow-Log erstellen
Erstellen Sie ein Flow-Log, um Metadaten zum Netzwerk-Traffic zu speichern, die nach einer bestimmten Reihe von Spezifikationen gefiltert werden.
Flow-Log mit Protokoll- und Namespace-Filtern erstellen
Erstellen Sie eine Datei mit dem Namen
example-flowlog.yamlund mit folgendem Inhalt: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"Ersetzen Sie
FLOW_LOG_NAMEdurch den ausgewählten Namen für das Flow-Log.In diesem Beispiel werden im Flow-Log alle Flows erfasst, für die eine TCP-Verbindung von einem beliebigen Pod im Namespace
gpc-systemoderkube-systemzu einem beliebigen Pod im Namespacekube-systemgestartet wurde. Die Aufzeichnung von Logs wird eine Stunde nach der Erstellung des Objekts beendet.Erstellen Sie das Flusslogobjekt:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlErsetzen Sie
MANAGEMENT_API_SERVERdurch den kubeconfig-Pfad des zonalen Management API-Servers.Prüfen Sie, ob der Wert
FLOW_LOG_NAMErichtig abgeglichen wurde und ob der Logging-Prozess gestartet wurde. Sehen Sie dazu das FeldStatusan:kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEBeispielstatus:
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:53ZDiese Beispielausgabe enthält die folgenden Bedingungen:
Propagated: Die Flusslogkonfiguration wurde an die Clusteruser-vm-1,user-vm-2undorg-1-infragesendet.Reconciled: Das Flow-Log wurde erfolgreich auf den Clusternuser-vm-1,user-vm-2undorg-1-infraprogrammiert.Logging: Das Flussprotokoll ist nicht abgelaufen oder deaktiviert, es ist kein Fehler aufgetreten und es können Protokolle erstellt werden, wenn die Filter mit den Flüssen übereinstimmen.- Die
Start TimeundEnd Timegeben an, dass der Job am19:17:53gestartet wurde und am20:17:53abläuft.
Damit in diesem Flow-Log Logeinträge erstellt werden können, müssen alle Bedingungen für
Propagated,ReconciledundLoggingerfüllt sein.
Flusslog ändern
Wenn Sie ein vorhandenes Ablaufprotokoll ändern möchten, bearbeiten Sie die erstellte Ablaufprotokoll-Objektdefinition in der Datei example-flowlog.yaml und wenden Sie sie noch einmal an:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
Flusslogs im Monitoring-Dashboard ansehen
Wenn Sie Flow-Logs aufrufen möchten, bitten Sie Nutzer mit der entsprechenden Flow-Log-Rolle, Betriebslogs abfragen zu prüfen.Verweise
- Dokumentation zum dynamischen Hubble-Exporter: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration