Flusslogs verwalten

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

  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:
            - udp
          endpoint:
            ports:
              - 53
      lifetime:
        duration: "12h"
    

    Ersetzen Sie FLOW_LOG_NAME durch 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.

  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 richtig abgeglichen wurde und ob der Logging-Prozess gestartet wurde. Sehen Sie dazu das Feld Status an:

    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 Flow-Log wurde auf den Clustern user-vm-1, user-vm-2 und org-1-infra programmiert.
    • 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 Time und End Time geben an, dass der Job am 19:17:53 gestartet wurde und am 20:17:53 abläuft.

    Damit in diesem Ablaufprotokoll Logeinträge erstellt werden können, müssen alle Bedingungen für Propagated, Reconciled und Logging erfü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

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

  2. Legen Sie den Drop-down-Wert identifier auf network-flow-logs fest, 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:

    ID festlegen

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

    Abfrage ausführen

  4. Mit den Filtern können Sie die Ergebnisse weiter eingrenzen. Geben Sie beispielsweise im Drop-down-Menü Cluster den Wert user-vm-1 an, um nur Flows zu berücksichtigen, die aus dem Cluster user-vm-1 stammen:

    Filter optimieren

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

    Flusslogeintrag

  6. Klicken Sie auf das +-Kürzel, um Flows nach einem bestimmten Metadatenfeld zu filtern.

    Tastenkombination für Labelfilter

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:

  • Label ist auf On festgelegt. Dabei wird zwischen Groß- und Kleinschreibung unterschieden.
  • Operator ist auf ~= festgelegt. Hier wird ein Abgleich mit regulären Ausdrücken verwendet.
  • Value ist auf /FLOW_LOG_NAME/ festgelegt. Der Wert FLOW_LOG_NAME muss von / umgeben sein.

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

Label nach Flow-Name filtern

Verweise