Verwenden Sie Flusslogs, um Metadaten zum Netzwerkverkehr, einschließlich 5-Tupel, in Google Distributed Cloud (GDC) mit Air Gap im Observability-Stack in Form von abfragbaren Logs zu speichern. Diese Logs können Sie für Folgendes verwenden:
- Informationen zu Trafficflüssen für einen bestimmten Dienst in einer Organisation verstehen
- Probleme mit dem Netzwerkzustand einer Kubernetes-Arbeitslast verstehen und identifizieren
- Kubernetes-Netzwerkrichtlinien prüfen
Das Flusslog ist ein GDC-Feature, das auf dem Open-Source-Projekt Hubble basiert: https://github.com/cilium/hubble. Konfigurieren Sie Flusslogs mit der Ressource FlowLog aus der Networking API.
Hinweis
Sie müssen eine Autorisierung einholen, um Flusslogs über die GDC Console zu verwalten oder anzusehen. Bitten Sie Ihren IAM-Admin der Organisation, Ihnen die Rolle „Flow Log Admin“ (
flowlog-admin) zuzuweisen, um Flusslogs zu verwalten. Wenn Sie nur vorhandene Flusslogs aufrufen möchten, bitten Sie Ihren IAM-Organisationsadministrator, 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 bestimmten Spezifikationen gefiltert werden.
Flusslog mit Protokoll- und Endpunktfiltern 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: - udp endpoint: ports: - 53 lifetime: duration: "12h"Ersetzen Sie
FLOW_LOG_NAMEdurch den ausgewählten Namen für das Flusslog.In diesem Beispiel erfasst das Flusslog den gesamten UDP-Traffic auf Port 53 (z. B. DNS-Traffic). Die Aufzeichnung von Logs wird 12 Stunden 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. Sehen Sie sich 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 Flusslog wurde erfolgreich auf 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.Start TimeundEnd Timegeben an, dass der Job um19:17:53gestartet wurde und um20:17:53abläuft.
Damit dieses Flusslog erfolgreich Logeinträge erstellen kann, müssen alle
Propagated-,Reconciled- undLogging-Bedingungen 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 das Betriebsprotokoll. Weitere Informationen finden Sie unter Betriebslogs abfragen.
Legen Sie den Drop-down-Wert für Kennung auf
network-flow-logsfest, klicken Sie auf JSON-Parser hinzufügen und geben Sie den folgenden Wert für die Abfrage an:{identifier="network-flow-logs"} | json:
Klicken Sie auf Abfrage ausführen. Dadurch werden die gespeicherten Fluss-Logeinträge angezeigt:

Mit den Filtern können Sie die Ergebnisse weiter eingrenzen. Geben Sie beispielsweise im Drop-down-Menü Cluster den Wert
user-vm-1an, um nur die vom Clusteruser-vm-1erfassten Abläufe zu sehen:
Durchsuchen Sie die Einträge im Flusslog, maximieren Sie den Eintrag, um die Details anzusehen, und fügen Sie nach Bedarf weitere Labelfilter über das Verknüpfungssymbol hinzu. In diesem Beispiel möchten wir die Abläufe weiter nach ihrer Quell-IP-Adresse filtern:

Klicken Sie auf das Tastenkürzel-Symbol
+, um Abläufe 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 aufzurufen.
Wenn Sie nur Ergebnisse sehen möchten, die von FLOW_LOG_NAME erstellt wurden, erstellen Sie einen Labelfilter mit den folgenden Werten:
Labelist aufOnfestgelegt. Die Groß- und Kleinschreibung wird berücksichtigt.Operatorist auf~=festgelegt. Dabei wird ein Abgleich mit regulären Ausdrücken verwendet.Valueist auf/FLOW_LOG_NAME/festgelegt. Der WertFLOW_LOG_NAMEmuss von/umgeben sein.
Filtern Sie die Ergebnisse, sodass nur von flowlog1 erstellte Logs angezeigt werden:

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