אפשר להשתמש ביומני זרימה כדי לשמור מטא-נתונים של תעבורת רשת, כולל 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 זמין במאמר הענקת גישה למשאבים.
לפני שמריצים שאילתות על יומני זרימה וצופים בהם בלוחות בקרה, צריך לקבל גישה למופע של המעקב. מידע נוסף זמין במאמר שאילתות והצגה של מדדים.
יצירת יומן תנועה
יוצרים יומן זרימת נתונים כדי לשמור מטא-נתונים של תעבורת נתונים ברשת שמסוננים לפי קבוצה נתונה של מפרטים.
יצירת יומן תנועה עם מסננים של פרוטוקולים ונקודות קצה
יוצרים קובץ בשם
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 שעות אחרי שהאובייקט נוצר.
יוצרים את אובייקט יומן זרימת התנועה:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlמחליפים את
MANAGEMENT_API_SERVERבנתיב של קובץ ה-kubeconfig של שרת Management API אזורי.כדי לוודא שהערך
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
הצגת יומני זרימה במרכז הבקרה של המעקב
פותחים את מרכז הבקרה של יומן הפעילות. מידע נוסף זמין במאמר בנושא שליחת שאילתות ליומנים תפעוליים.
מגדירים את הערך בתפריט הנפתח מזהה ל-
network-flow-logs, לוחצים על הוספת מנתח JSON ומזינים את הערך הבא לשאילתה:{identifier="network-flow-logs"} | json:
לוחצים על Run query. יוצגו רשומות יומן של זרימת הנתונים שנשמרו:

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

לוחצים על סמל קיצור הדרך
+כדי לסנן את התהליכים לפי שדה מטא-נתונים ספציפי.
הצגת התוצאות לפי שם יומן זרימת הנתונים
כשיוצרים כמה יומני זרימה, אפשר ליצור מסנן תוויות נוסף כדי לראות תוצאות מיומן זרימה אחד או יותר.
כדי להציג תוצאות שמוגבלות ליומנים שנוצרו על ידי FLOW_LOG_NAME, יוצרים מסנן תוויות עם הערכים הבאים:
Labelהוגדר לערךOn. הערך הזה הוא תלוי אותיות רישיות.Operatorהוגדר לערך~=. הפעולה הזו משתמשת בכלי להתאמת ביטויים רגולריים.Valueהוגדר לערך/FLOW_LOG_NAME/. הערךFLOW_LOG_NAMEצריך להיות מוקף ב-/.
מסננים את התוצאות כדי לראות רק את היומנים שנוצרו על ידי flowlog1:

קובצי עזר
- מסמכים בנושא Hubble Dynamic Exporter: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration