Flusslogs verwalten

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

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

  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. Sehen Sie sich 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 Flusslog wurde erfolgreich auf 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.
    • 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 erfolgreich Logeinträge erstellen kann, müssen alle Propagated-, Reconciled- und Logging-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

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

  2. Legen Sie den Drop-down-Wert für Kennung auf network-flow-logs fest, klicken Sie auf 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 Fluss-Logeinträ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 die vom Cluster user-vm-1 erfassten Abläufe zu sehen:

    Filter verfeinern

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

    Flow-Logeintrag

  6. Klicken Sie auf das Tastenkürzel-Symbol +, um Abläufe nach einem bestimmten Metadatenfeld zu filtern.

    Verknüpfung 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 aufzurufen.

Wenn Sie nur Ergebnisse sehen möchten, die von FLOW_LOG_NAME erstellt wurden, erstellen Sie einen Labelfilter mit den folgenden Werten:

  • Label ist auf On festgelegt. Die Groß- und Kleinschreibung wird berücksichtigt.
  • Operator ist auf ~= festgelegt. Dabei 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, sodass nur von flowlog1 erstellte Logs angezeigt werden:

Labelfilter nach Ablaufname

Verweise