בדף הזה מוסבר איך ליצור את הדוח 'תלות ברשת' ב-Migration Center ולנתח אותו. בדוח 'תלות ברשת' מוצגים נתונים מצטברים חודשיים על החיבורים לשרתים ולמסדי הנתונים שלכם. בדוח 'תלות ברשת' אפשר לראות את כל החיבורים לנכסים בתשתית, ואת מספר הפעמים שבהם Migration Center זיהה את החיבור, בסיכום חודשי.
כדי לאסוף נתונים על תלות ברשת, צריך להפעיל את לקוח הגילוי למשך תקופה מסוימת ולאפשר את סנכרון הנתונים עם Migration Center. ככל שתריצו את האיסוף למשך זמן ארוך יותר, כך יהיו ל-Migration Center יותר נתונים לניתוח התובנות לגבי התלות ברשת. Migration Center מזהה את כל חיבורי הרשת מתוך הנכסים שנסרקו. נכסי היעד בחיבור יכולים להיות נכסים במלאי שלכם ב-Migration Center שגיליתם באמצעות לקוח הגילוי, נכסים שיובאו באופן ידני או אפילו נכסים לא מוכרים שנמצאים מחוץ לסביבה שלכם.
הדוח 'תלות ברשת' שימושי בתרחישים הבאים:
- איסוף נתונים על חיבורים לשרתים ולמסדי נתונים, כדי לזהות נכסים ששייכים לאותה אפליקציה
- זיהוי חיבורי רשת שמעניינים אתכם בקבוצת נכסים, למשל כל השרתים שמשתמשים ביציאה הסטנדרטית של MySQL
- זיהוי נכסים חסרים במלאי
אפשר להוריד את דוח התלות ברשת כקובץ CSV מ-Migration Center. אחרי הייצוא, תוכלו לבצע את הניתוח באמצעות BigQuery והשאילתות לדוגמה שמופיעות ב-Migration Center, או להשתמש בכל כלי אחר של צד שלישי.
מגבלות
- כדי לאסוף נתוני חיבור בתשתית שלכם, אתם צריכים להשתמש בלקוח הגילוי.
- נתונים של חיבורים לרשת נאספים רק באמצעות שיטת הסריקה של מערכת ההפעלה. הסריקה ב-vSphere לא תומכת באיסוף נתונים ברשת.
לפני שמתחילים
לפני שיוצרים דוח תלות ברשת, צריך לוודא שאיסוף נתוני הביצועים פועל עם לקוח הגילוי.
לפני שמנתחים את דוח התלות ברשת באמצעות BigQuery, צריך לבצע את הפעולות הבאות:
יצירת דוח על תלות ברשת
כדי ליצור דוח תלות ברשת, פועלים לפי השלבים הבאים:
נכנסים לדף Create reports במסוף Google Cloud .
לוחצים על ייצוא של תלות ברשת.
מהרשימה של הקבוצות, בוחרים את הקבוצות שעבורן רוצים ליצור את הדוח ולוחצים על ייצוא.
בתיבת הדו-שיח שמופיעה, לוחצים על ייצוא.
יכול להיות שיעברו עד שעה עד שהדוח המיוצא ייווצר. אחרי שהדוח נוצר, נפתח הדף Network dependencies.
כדי להוריד דוח ספציפי, לוחצים על הורדה.
ניתוח הדוח 'תלות ברשת' ב-BigQuery
בקטעים הבאים מופיעות כמה שאילתות לדוגמה לניתוח תרחישים נפוצים ב-BigQuery. לפני שמריצים שאילתה, צריך להעלות את קובץ ה-CSV ל-BigQuery.
השימוש ב-BigQuery כרוך בתשלום בהתאם לתמחור של BigQuery.
זיהוי נכסים עם הכי הרבה חיבורים
השאילתה הבאה שימושית לזיהוי הנכסים עם מספר החיבורים הגדול ביותר בקבוצה.
SELECT
LocalVMName, SUM(ConnectionCount) as TotalCount
FROM
PROJECT.DATASET.TABLE
GROUP BY ALL
ORDER BY TotalCount DESC
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT: הפרויקט Google Cloud שבו העליתם את קובץ ה-CSV. -
DATASET: מערך הנתונים ב-BigQuery. -
TABLE: הטבלה ב-BigQuery.
הנה פלט לדוגמה מהשאילתה הזו:
| LocalVMName | TotalCount |
|---|---|
| VM-x5ua3o2w | 9970 |
| VM-glg5np3w | 9763 |
| VM-q3z4zfp8 | 9557 |
| VM-2nnsrt37 | 9372 |
| VM-1oah56hn | 9350 |
זיהוי קשרים לפי עומק הגרף
השאילתה הבאה שימושית לזיהוי כל הנכסים שמחוברים לנכס נתון עם מספר מסוים של חיבורים ביניים. לדוגמה:
- אם עומק הגרף הוא 1, מוצגים כל הנכסים שמחוברים ישירות לנכס הראשי.
- אם עומק הגרף הוא 2, מוצגים כל הנכסים שמחוברים ישירות לנכסים אחרים, שמחוברים ישירות לנכס הראשי.
DECLARE
local_vm_name STRING DEFAULT MAIN_ASSET;
DECLARE
depth INT64 DEFAULT DEPTH;
CREATE TEMP FUNCTION
recursiveConnections(localVmName STRING,
connectionsArray ARRAY<STRING>,
depth INT64)
RETURNS STRING
LANGUAGE js AS r"""
const connections = connectionsArray.map(connection => connection.split('|||'))
.filter(connectionTuple => connectionTuple[1] !== 'Unscanned Device');
const connectedAssets = new Set([localVmName]);
for (let i = 0; i < depth; i++) {
const currentSet = new Set(connectedAssets);
for (const connection of connections) {
/* Look for connections where the asset is the local asset */
if (currentSet.has(connection[0])) {
connectedAssets.add(connection[1]);
}
/* Look for connections where the asset is the remote asset */
if (currentSet.has(connection[1])) {
connectedAssets.add(connection[0]);
}
}
}
connectedAssets.delete(localVmName);
return Array.from(connectedAssets).sort().join(', ');
""";
SELECT
local_vm_name AS LocalVMName,
recursiveConnections(local_vm_name,
ARRAY_AGG(CONCAT(LocalVMName, '|||', RemoteVMName)),
depth) AS Connections
FROM
PROJECT.DATASET.TABLE
מחליפים את מה שכתוב בשדות הבאים:
-
MAIN_ASSET: השם של הנכס שרוצים לזהות את החיבורים אליו. DEPTH: עומק הגרף.
הנה פלט לדוגמה מהשאילתה הזו:
| LocalVMName | חיבורים |
|---|---|
| VM-lv8s148f | VM-2z8wp3ey, VM-66rq2x2y, VM-94uwyy8h, VM-ccgmqqmb, VM-ctqddf0u, VM-og4n77lb, ... |
סינון חיבורים לפי טווחי IP ויציאות
השאילתה הבאה מאפשרת לזהות נכסים שמשתמשים בכתובות IP ויציאות בטווחים שאתם מגדירים.
CREATE TEMP FUNCTION
ipBetween(value STRING,
low STRING,
high STRING) AS ( NET.IPV4_TO_INT64(NET.IP_FROM_STRING(value)) BETWEEN NET.IPV4_TO_INT64(NET.IP_FROM_STRING(low))
AND NET.IPV4_TO_INT64(NET.IP_FROM_STRING(high)) );
SELECT
*
FROM
PROJECT.DATASET.TABLE
WHERE
((LocalPort BETWEEN PORT_START
AND PORT_END)
OR (RemotePort BETWEEN PORT_START
AND PORT_END))
AND (ipBetween(LocalIP,
IP_START,
IP_END)
OR ipBetween(RemoteIP,
IP_START,
IP_END))
מחליפים את מה שכתוב בשדות הבאים:
-
PORT_START: היציאה הראשונית בטווח היציאות, לדוגמה0. -
PORT_END: היציאה האחרונה בטווח היציאות, למשל1024. -
IP_START: כתובת ה-IP הראשונית בטווח, לדוגמה"10.26.0.0". -
IP_END: כתובת ה-IP האחרונה בטווח, לדוגמה"10.26.255.255".
הנה פלט לדוגמה מהשאילתה הזו:
| SampleRange | LocalVMName | LocalAssetID | LocalGroups | LocalIP | LocalPort | פרוטוקול | LocalProcessName | RemoteVMName | RemoteAssetID | RemoteGroups | RemoteIP | RemotePort | ConnectionCount |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025-06-02T05:59:53Z-2025-06-02T05:59:53Z | VM-0lf60off | projects/982941055174/locations/us-central1/assets/0lf60off | קבוצה 1 | 10.0.45.138 | 272 | tcp | bash | VM-0spdofr9 | projects/982941055174/locations/us-central1/assets/0spdofr9 | 144.35.88.1 | 272 | 499 | |
| 2025-07-02T05:59:53Z-2025-07-02T05:59:53Z | VM-goa5uxhi | projects/982941055174/locations/us-central1/assets/goa5uxhi | קבוצה 3 | 10.187.175.82 | 781 | tcp | bash | VM-27i5d2uj | projects/982941055174/locations/us-central1/assets/27i5d2uj | 22.99.72.109 | 781 | 980 | |
| 2025-08-02T05:59:53Z-2025-08-02T05:59:53Z | VM-7vwy31hg | projects/982941055174/locations/us-central1/assets/7vwy31hg | קבוצה 1 | 10.58.166.132 | 21 | tcp | bash | VM-2gq0fl37 | projects/982941055174/locations/us-central1/assets/2gq0fl37 | 147.19.84.135 | 21 | 514 |
זיהוי נכסים ברשת שלא נסרקו
השאילתה הבאה מאפשרת לזהות נכסים שלא נסרקו ברשת שלכם. נכס לא סרוק הוא חיבור לכתובת IP מרוחקת שלא משויכת לאף נכס במלאי שלכם ב-Migration Center. כך תוכלו לזהות נכסים שאולי חסרים לכם וצריך לסרוק אותם לצורך ההערכה.
CREATE TEMP FUNCTION
ipBetween(value STRING,
low STRING,
high STRING) AS ( NET.IPV4_TO_INT64(NET.IP_FROM_STRING(value)) BETWEEN NET.IPV4_TO_INT64(NET.IP_FROM_STRING(low))
AND NET.IPV4_TO_INT64(NET.IP_FROM_STRING(high)) );
SELECT
STRING_AGG(LocalIP, ', ') AS LocalIPs,
RemoteIP
FROM
PROJECT.DATASET.TABLE
WHERE
RemoteVMName = 'Unscanned Device'
AND ipBetween(LocalIP,
IP_START,
IP_END)
AND ipBetween(RemoteIP,
IP_START,
IP_END)
GROUP BY
RemoteIP
מחליפים את מה שכתוב בשדות הבאים:
-
IP_START: כתובת ה-IP הראשונית בטווח, לדוגמה"10.26.0.0". -
IP_END: כתובת ה-IP האחרונה בטווח, לדוגמה"10.26.255.255".