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

אתם יכולים להשתמש ביומני תנועה כדי לשמור מטא-נתונים של תנועה ברשת, כולל 5-tuples, ב-Google Distributed Cloud (GDC)‎ עם air gap ב-observability stack, בצורה של יומנים שניתן לשלוח אליהם שאילתות. אתם יכולים להשתמש ביומנים האלה כדי:

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

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

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

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

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

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

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

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

יצירת יומן תנועה עם מסננים של פרוטוקול ונקודת קצה (endpoint)

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

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - udp
          endpoint:
            ports:
              - 53
      lifetime:
        duration: "12h"
    

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

    בדוגמה הזו, יומן התנועה מתעד את כל תנועת ה-UDP ביציאה 53 (כמו תנועת DNS). ההקלטה של היומנים נפסקת 12 שעות אחרי שהאובייקט נוצר.

  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. אפשר להשתמש במסננים כדי לצמצם את התוצאות. לדוגמה, כדי לראות רק תנועות שנאספו מהאשכול user-vm-1, מזינים את הערך user-vm-1 בתפריט הנפתח cluster:

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

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

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

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

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

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

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

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

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

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

סינון תוויות לפי שם התהליך

קובצי עזר