Mit Flusslogs können Sie Metadaten zum Netzwerktraffic, einschließlich 5- Tupel, in Google Distributed Cloud (GDC) air-gapped im Observability-Stack in Form von abfragbaren Logs speichern. Sie können diese Logs für folgende Zwecke verwenden:
- Trafficflüsse für einen bestimmten Dienst in einer Organisation nachvollziehen
- Probleme mit dem Netzwerkzustand einer Kubernetes Arbeitslast nachvollziehen und identifizieren
- Kubernetes-Netzwerkrichtlinien überprüfen
Flusslogs sind eine GDC-Funktion, die auf dem Open-Source
Hubble-Projekt basiert: https://github.com/cilium/hubble. Konfigurieren Sie Flusslogs mit
der FlowLog
Ressource aus der
Networking API.
Hinweis
Sie müssen eine Autorisierung erhalten, um Flusslogs in der GDC-Konsole zu verwalten oder anzusehen. Wenn Sie Flusslogs verwalten möchten, bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle „Flow Log Admin“ (
flowlog-admin) zuzuweisen. Wenn Sie nur vorhandene Flusslogs ansehen möchten, bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle „Flow Log Viewer“ (flowlog-viewer) zuzuweisen.Informationen zum Festlegen von Rollenbindungen über die GDC-Konsole finden Sie unter Zugriff auf Ressourcen gewähren.
Bevor Sie Flusslogs in Dashboards abfragen und ansehen können, müssen Sie Zugriff auf die Monitoring-Instanz erhalten. Weitere Informationen finden Sie unter Messwerte abfragen und ansehen.
Flusslog erstellen
Erstellen Sie ein Flusslog, um Metadaten zum Netzwerkverkehr zu speichern, die nach einer bestimmten Reihe von Spezifikationen gefiltert werden.
Flusslog 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 Flusslog.In diesem Beispiel erfasst das Flusslog alle Flüsse, 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_NAMEkorrekt abgeglichen wurde und ob der Logging-Prozess gestartet wurde. Untersuchen Sie dazu das FeldStatus: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 Flusslog wurde erfolgreich in den Clusternuser-vm-1,user-vm-2undorg-1-infraprogrammiert.Logging: Das Flusslog ist nicht abgelaufen oder deaktiviert, es ist kein Fehler aufgetreten und es können Logs erstellt werden, wenn die Filter mit den Flüssen übereinstimmen.- Die Werte für
Start TimeundEnd Timegeben an, dass der Job um19:17:53gestartet wurde und um20:17:53abläuft.
Damit dieses Flusslog Logeinträge erstellen kann, müssen alle Bedingungen (
Propagated,ReconciledundLogging) erfüllt sein.
Flusslog ändern
Wenn Sie ein vorhandenes Flusslog ändern möchten, ändern Sie die Definition des erstellten Flusslogobjekts 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
Öffnen Sie das Dashboard für Betriebslogs. Weitere Informationen finden Sie unter Betriebslogs abfragen.
Legen Sie für das Drop-down-Menü identifier den Wert
network-flow-logsfest, klicken Sie dann auf add json parser und geben Sie den folgenden Wert für die Abfrage an:{identifier="network-flow-logs"} | json:
Klicken Sie auf Abfrage ausführen. Daraufhin werden die gespeicherten Flusslogeinträge angezeigt:

Verwenden Sie die Filter, um die Ergebnisse weiter zu verfeinern. Geben Sie beispielsweise für das Drop-down-Menü cluster den Wert
user-vm-1an, um nur Flüsse aus dem Clusteruser-vm-1zu sehen:
Suchen Sie nach Flusslogeinträgen, maximieren Sie den Eintrag, um die Details zu sehen, und fügen Sie bei Bedarf weitere Labelfilter über das Verknüpfungssymbol hinzu. In diesem Beispiel möchten wir Flüsse weiter nach ihrer Quell-IP-Adresse filtern:

Klicken Sie auf das Verknüpfungssymbol
+, um Flüsse nach einem bestimmten Metadatenfeld zu filtern.
Ergebnisse nach Flusslogname ansehen
Wenn mehrere Flusslogs erstellt werden, kann ein zusätzlicher Labelfilter erstellt werden, um Ergebnisse aus einem oder mehreren Flusslogs anzusehen.
Wenn Sie nur Logs sehen möchten, die von FLOW_LOG_NAME erstellt wurden, erstellen Sie einen Labelfilter mit den folgenden Werten:
LabelaufOngesetzt. Die Groß-/Kleinschreibung muss beachtet werden.Operatorauf~=gesetzt. Dabei wird ein regulärer Ausdruck verwendet.Valueauf/FLOW_LOG_NAME/gesetzt. Der WertFLOW_LOG_NAMEmuss von/umgeben sein.
Filtern Sie die Ergebnisse, um nur Logs zu sehen, die von flowlog1 erstellt wurden:

Verweise
- Dokumentation zum dynamischen Hubble-Exporter: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration