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

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