ניהול יומני זרימה

אפשר להשתמש ביומני זרימה כדי לשמור מטא-נתונים של תעבורת רשת, כולל 5-tuple, ב-Google Distributed Cloud ‏ (GDC) עם בידוד פיזי, במערך כלי התצפית בצורה של יומנים שאפשר להריץ עליהם שאילתות. אפשר להשתמש ביומנים האלה כדי:

  • להבין את זרימות התנועה בשירות מסוים בארגון.
  • הסבר על בעיות בקישוריות של עומס עבודה (workload) ב-Kubernetes.
  • אימות של כללי מדיניות של רשת Kubernetes.

יומן התנועה הוא תכונה של GDC שמבוססת על פרויקט הקוד הפתוח Hubble: https://github.com/cilium/hubble. מגדירים יומני זרימה באמצעות משאב FlowLog מתוך Networking API.

לפני שמתחילים

  • כדי לנהל או להציג יומני זרימה, צריך לקבל הרשאה ממסוף GDC. כדי לנהל את יומני התנועה, צריך לבקש מאדמין IAM ארגוני להקצות לכם את התפקיד Flow Log Admin (אדמין של יומני תנועה) ‏(flowlog-admin). כדי רק לצפות ביומני זרימה קיימים, צריך לבקש מאדמין IAM בארגון להקצות לכם את התפקיד Flow Log Viewer (צפייה ביומני זרימה) ‏(flowlog-viewer).

    מידע על הגדרת קישורי תפקידים במסוף GDC זמין במאמר הענקת גישה למשאבים.

  • לפני שמריצים שאילתות על יומני זרימה ומציגים אותם בלוחות בקרה, צריך לקבל גישה למופע הניטור. מידע נוסף זמין במאמר שאילתות והצגה של מדדים.

יצירת יומן תנועה

יוצרים יומן זרימת נתונים כדי לשמור מטא-נתונים של תעבורת נתונים ברשת שמסוננים לפי קבוצה נתונה של מפרטים.

יצירת יומן רישום של תנועת נתונים עם מסננים של פרוטוקול ומרחב שמות

  1. יוצרים קובץ בשם example-flowlog.yaml עם התוכן הבא:

    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"
    

    מחליפים את FLOW_LOG_NAME בשם שנבחר ליומן של זרימת הנתונים.

    בדוגמה הזו, יומן התנועה מתעד את כל התנועות שבהן חיבור TCP הופעל על ידי פוד כלשהו במרחב השמות gpc-system או kube-system לפוד כלשהו במרחב השמות kube-system. ההקלטה של היומנים תופסק שעה אחרי שהאובייקט נוצר.

  2. יוצרים את אובייקט יומן הזרימה:

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

    מחליפים את MANAGEMENT_API_SERVER בנתיב של קובץ ה-kubeconfig של שרת Management API אזורי.

  3. בודקים שהערך FLOW_LOG_NAME הותאם בצורה נכונה, ושתהליך הרישום ביומן התחיל על ידי בדיקת השדה Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    סטטוס לדוגמה:

    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
    

    פלט הדוגמה הזה מכיל את התנאים הבאים:

    • Propagated: הגדרת יומן התעבורה נשלחה לאשכולות user-vm-1,‏ user-vm-2 ו-org-1-infra.
    • Reconciled: יומן התנועה תוכנת בהצלחה באשכולות user-vm-1,‏ user-vm-2 ו-org-1-infra.
    • Logging: יומן התנועה לא פג או הושבת, לא נתקל בשגיאה כלשהי, ויכול להפיק יומנים אם המסננים תואמים לתנועה.
    • השעות Start Time ו-End Time מציינות שהעבודה התחילה בשעה 19:17:53 ותפוג בשעה 20:17:53.

    כדי שיומן זרימת הנתונים הזה יוכל ליצור רשומות ביומן, כל התנאים של Propagated, Reconciled ו-Logging צריכים להתקיים.

שינוי יומן תהליכים

כדי לשנות יומן תנועה קיים, משנים את ההגדרה של אובייקט יומן התנועה שנוצר בקובץ example-flowlog.yaml ומחילים אותו שוב:

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

הצגת יומני זרימה במרכז הבקרה של המעקב

  1. פותחים את מרכז הבקרה של יומן הפעילות. מידע נוסף זמין במאמר בנושא שליחת שאילתות ליומנים תפעוליים.

  2. מגדירים את הערך בתפריט הנפתח מזהה ל-network-flow-logs, לוחצים על הוספת מנתח JSON ומזינים את הערך הבא לשאילתה: {identifier="network-flow-logs"} | json:

    הגדרת מזהה

  3. לוחצים על Run query. יוצגו לכם הרשומות השמורות ביומן של זרימת הנתונים:

    הרצת השאילתה

  4. כדי לצמצם את התוצאות עוד יותר, משתמשים במסננים. לדוגמה, אם תספקו לתפריט הנפתח cluster את הערך user-vm-1, המערכת תציג רק תהליכים שנאספו מהאשכול user-vm-1:

    שיפור המסננים

  5. אפשר לעיין ברשומות של יומן זרימת התנועה, להרחיב את הרשומה כדי לראות את הפרטים ולהוסיף עוד מסנני תוויות לפי הצורך באמצעות סמל הקיצור. בדוגמה הזו, אנחנו רוצים לסנן עוד יותר את התנועות לפי כתובת ה-IP של המקור:

    רשומה ביומן של Flow

  6. לוחצים על סמל קיצור הדרך + כדי לסנן את התהליכים לפי שדה מטא-נתונים ספציפי.

    קיצור דרך לסינון לפי תוויות

הצגת התוצאות לפי שם יומן זרימת הנתונים

כשיוצרים כמה יומני זרימה, אפשר ליצור מסנן תוויות נוסף כדי לראות תוצאות מיומן זרימה אחד או יותר.

כדי להציג תוצאות שמוגבלות ליומנים שנוצרו על ידי FLOW_LOG_NAME, יוצרים מסנן תוויות עם הערכים הבאים:

  • Label הוגדר לערך On. הערך הזה הוא תלוי אותיות רישיות.
  • Operator הוגדר לערך ~=. הפעולה הזו משתמשת בכלי להתאמת ביטויים רגולריים.
  • Value הוגדר לערך /FLOW_LOG_NAME/. הערך FLOW_LOG_NAME צריך להיות מוקף ב-/.

מסננים את התוצאות כדי לראות רק את היומנים שנוצרו על ידי flowlog1:

סינון תוויות לפי שם של זרימת נתונים

קובצי עזר