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