Flusslogs verwalten

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

  1. Erstellen Sie eine Datei mit dem Namen example-flowlog.yaml und 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_NAME durch 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-system oder kube-system zu einem beliebigen Pod im Namespace kube-system gestartet wurde. Die Aufzeichnung von Logs wird eine Stunde nach der Erstellung des Objekts beendet.

  2. Erstellen Sie das Flusslogobjekt:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    Ersetzen Sie MANAGEMENT_API_SERVER durch den kubeconfig-Pfad des zonalen Management API-Servers.

  3. Prüfen Sie, ob der Wert FLOW_LOG_NAME korrekt abgeglichen wurde und ob der Logging-Prozess gestartet wurde. Untersuchen Sie dazu das Feld Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Beispielstatus:

    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:53Z
    

    Diese Beispielausgabe enthält die folgenden Bedingungen:

    • Propagated: Die Flusslogkonfiguration wurde an die Cluster user-vm-1, user-vm-2 und org-1-infra gesendet.
    • Reconciled: Das Flusslog wurde erfolgreich in den Clustern user-vm-1, user-vm-2 und org-1-infra programmiert.
    • 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 Time und End Time geben an, dass der Job um 19:17:53 gestartet wurde und um 20:17:53 abläuft.

    Damit dieses Flusslog Logeinträge erstellen kann, müssen alle Bedingungen (Propagated, Reconciled und Logging) 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

  1. Öffnen Sie das Dashboard für Betriebslogs. Weitere Informationen finden Sie unter Betriebslogs abfragen.

  2. Legen Sie für das Drop-down-Menü identifier den Wert network-flow-logs fest, klicken Sie dann auf add json parser und geben Sie den folgenden Wert für die Abfrage an: {identifier="network-flow-logs"} | json:

    ID festlegen

  3. Klicken Sie auf Abfrage ausführen. Daraufhin werden die gespeicherten Flusslogeinträge angezeigt:

    Abfrage ausführen

  4. Verwenden Sie die Filter, um die Ergebnisse weiter zu verfeinern. Geben Sie beispielsweise für das Drop-down-Menü cluster den Wert user-vm-1 an, um nur Flüsse aus dem Cluster user-vm-1 zu sehen:

    Filter optimieren

  5. 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:

    Flusslogeintrag

  6. Klicken Sie auf das Verknüpfungssymbol +, um Flüsse nach einem bestimmten Metadatenfeld zu filtern.

    Tastenkombination für Labelfilter

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:

  • Label auf On gesetzt. Die Groß-/Kleinschreibung muss beachtet werden.
  • Operator auf ~= gesetzt. Dabei wird ein regulärer Ausdruck verwendet.
  • Value auf /FLOW_LOG_NAME/ gesetzt. Der Wert FLOW_LOG_NAME muss von / umgeben sein.

Filtern Sie die Ergebnisse, um nur Logs zu sehen, die von flowlog1 erstellt wurden:

Label nach Flow-Name filtern

Verweise