Mit Flow-Logs können Sie Metadaten zum Netzwerkverkehr, einschließlich 5-Tupeln, in Google Distributed Cloud (GDC) Air-Gap 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
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.
Hinweis
Sie müssen die Autorisierung zum Verwalten oder Aufrufen von Flow-Logs über die GDC-Konsole einholen. Wenn Sie Flow-Logs verwalten möchten, bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle „Flow Log Admin“ (
flowlog-admin) zuzuweisen. Wenn Sie nur vorhandene Flow-Logs ansehen möchten, bitten Sie Ihren Organisations-IAM-Administrator, 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 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 Netzwerkverkehr zu speichern, die nach einer bestimmten Reihe von Spezifikationen gefiltert werden.
Flow-Log 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 Flow-Log.In diesem Beispiel werden im Flow-Log alle UDP-Traffic auf Port 53 (z. B. DNS-Traffic) erfasst. Die Protokollierung 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_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 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 Ablaufprotokoll 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 Objektdefinition für das Ablaufprotokoll 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 identifier auf
network-flow-logsfest, klicken Sie auf add json parser (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 Flusslogeinträ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 Flows zu berücksichtigen, die aus dem Clusteruser-vm-1stammen:
Sehen Sie sich die Flow-Logeinträge an, maximieren Sie den Eintrag, um die Details zu sehen, und fügen Sie bei Bedarf weitere Label-Filter über das Verknüpfungssymbol hinzu. In diesem Beispiel möchten wir die Flows nach der Quell-IP-Adresse filtern:

Klicken Sie auf das
+-Kürzel, um Flows nach einem bestimmten Metadatenfeld zu filtern.
Ergebnisse nach Flusslogname ansehen
Wenn mehrere Flusslogs erstellt werden, kann ein zusätzlicher Label-Filter erstellt werden, um Ergebnisse aus einem oder mehreren Flusslogs aufzurufen.
Wenn Sie Ergebnisse sehen möchten, die auf Logs von FLOW_LOG_NAME beschränkt sind, erstellen Sie einen Label-Filter mit den folgenden Werten:
Labelist aufOnfestgelegt. Dabei wird zwischen Groß- und Kleinschreibung unterschieden.Operatorist auf~=festgelegt. Hier 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, um nur Logs von flowlog1 zu sehen:

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