Menganalisis dependensi jaringan

Halaman ini menjelaskan cara membuat dan menganalisis dependensi jaringan laporan di Migration Center.

Ringkasan

Laporan dependensi jaringan memberikan data gabungan harian tentang koneksi ke server dan {i>database<i} Anda. Laporan dependensi jaringan memungkinkan Anda melihat semua koneksi ke aset di infrastruktur Anda, dan jumlah koneksi per hari.

Untuk mengumpulkan data dependensi jaringan, Anda membiarkan klien penemuan berjalan selama beberapa hari dan aktifkan sinkronisasi data dengan Pusat Migrasi. Klien penemuan kemudian mengidentifikasi semua koneksi jaringan dari aset yang dipindai. Aset target dalam koneksi dapat berupa aset apa pun di inventaris Pusat Migrasi yang Anda temukan dengan klien penemuan atau yang diimpor secara manual, atau bahkan aset tidak dikenal.

Laporan dependensi jaringan berguna dalam skenario berikut:

  • Mengumpulkan data tentang koneksi ke server dan {i>database<i}, untuk mengidentifikasi aset milik aplikasi yang sama
  • Mengidentifikasi koneksi jaringan yang diminati dalam grup aset, seperti semua server yang menggunakan port standar MySQL
  • Mengidentifikasi aset yang hilang di inventaris Anda

Anda dapat mengunduh laporan dependensi jaringan sebagai file CSV dari Migration Center. Selanjutnya, Anda dapat melakukan analisis menggunakan BigQuery dan contoh kueri yang disediakan oleh Migration Center, atau menggunakan alat pihak ketiga lainnya.

Batasan

  • Untuk mengumpulkan data koneksi di infrastruktur Anda, gunakan aplikasi Discovery.
  • Data koneksi jaringan hanya dikumpulkan dengan metode pemindaian OS saja. Pemindaian vSphere tidak mendukung pengumpulan data jaringan.

Sebelum memulai

  • Sebelum membuat laporan dependensi jaringan, Anda harus memiliki koleksi yang bekerja dengan klien Discovery.

  • Sebelum Anda menganalisis laporan dependensi jaringan dengan BigQuery, lakukan hal berikut:

Membuat laporan dependensi jaringan

Untuk membuat laporan dependensi jaringan, ikuti langkah-langkah berikut:

  1. Buka halaman Katalog laporan.

    Buka Katalog laporan

  2. Klik Laporan dependensi jaringan.

  3. Dari daftar grup, pilih grup yang ingin Anda buat laporan, lalu klik Ekspor.

  4. Pada dialog yang muncul, pilih jumlah hari yang Anda inginkan untuk mengekspor data, dari minimum 10 dan hingga 90, lalu klik Ekspor.

  5. Setelah file dibuat, klik Download.

Menganalisis laporan dependensi jaringan di BigQuery

Bagian berikut ini menyediakan beberapa contoh kueri untuk dianalisis skenario umum dalam BigQuery. Sebelum Anda dapat menjalankan kueri, Anda harus mengunggah file CSV ke BigQuery.

Untuk menggunakan BigQuery, Anda akan ditagih sesuai dengan Harga BigQuery.

Mengidentifikasi aset yang memiliki koneksi paling banyak

Kueri berikut berguna untuk mengidentifikasi aset yang memiliki jumlah koneksi dalam grup.

SELECT
 LocalVMName, SUM(ConnectionCount) as TotalCount
FROM
 PROJECT.DATASET.TABLE
GROUP BY ALL
ORDER BY TotalCount DESC

Ganti kode berikut:

  • PROJECT: Project Google Cloud tempat Anda mengunggah file CSV.
  • DATASET: Set data BigQuery.
  • TABLE: Tabel BigQuery.

Berikut adalah contoh output dari kueri ini:

LocalVMName TotalCount
VM-x5ua3o2w 9970
VM-glg5np3w 9763
VM-q3z4zfp8 9557
VM-2nnsrt37 9372
VM-1oah56hn 9350

Mengidentifikasi koneksi berdasarkan kedalaman grafik

Kueri berikut berguna untuk mengidentifikasi semua aset yang terhubung ke satu koneksi perantara dengan jumlah koneksi perantara tertentu. Contoh:

  • Dengan kedalaman grafik yang sama dengan 1, Anda akan mendapati semua aset terhubung langsung ke aset utama.
  • Dengan kedalaman grafik yang sama dengan 2, Anda akan mendapati semua aset terhubung langsung ke aset lain, yang kemudian terhubung langsung dengan aset utama.
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

Ganti kode berikut:

  • MAIN_ASSET: Nama aset yang Anda inginkan untuk mengidentifikasi koneksi.
  • DEPTH: Kedalaman grafik.

Berikut adalah contoh output dari kueri ini:

LocalVMName Koneksi
VM-lv8s148f VM-2z8wp3ey,
VM-66rq2x2y,
VM-94uwyy8h,
VM-ccgmqqmb,
VM-ctqddf0u,
VM-og4n77lb,
...

Memfilter koneksi berdasarkan IP dan rentang port

Kueri berikut memungkinkan Anda mengidentifikasi aset yang menggunakan alamat IP dan port dalam rentang yang Anda tentukan.

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))

Ganti kode berikut:

  • PORT_START: Port awal rentang port, misalnya 0.
  • PORT_END: Port terakhir rentang port, misalnya 1024.
  • IP_START: Alamat IP awal rentang, misalnya "10.26.0.0".
  • IP_END: Alamat IP akhir rentang, misalnya "10.26.255.255".

Berikut adalah contoh output dari kueri ini:

Hari LocalVMName LocalAssetID LocalGroups LocalIP LocalPort Protokol LocalProcessName RemoteVMName RemoteAssetID RemoteGroups RemoteIP RemotePort ConnectionCount
2024-04-18 VM-0lf60off projects/982941055174/locations/us-central1/assets/0lf60off Grup 1 10.0.45.138 272 tcp bash VM-0spdofr9 projects/982941055174/locations/us-central1/assets/0spdofr9 144.35.88.1 272 499
2024-04-18 VM-Goa5uxhi projects/982941055174/locations/us-central1/assets/goa5uxhi Grup 3 10.187.175.82 781 tcp bash VM-27i5d2uj projects/982941055174/locations/us-central1/assets/27i5d2uj 22.99.72.109 781 980
2024-04-19 VM-7vwy31hg projects/982941055174/locations/us-central1/assets/7vwy31hg Grup 1 10.58.166.132 21 tcp bash VM-2gq0fl37 projects/982941055174/locations/us-central1/assets/2gq0fl37 147.19.84.135 21 514

Mengidentifikasi aset yang tidak dipindai di jaringan

Kueri berikut memungkinkan Anda mengidentifikasi aset yang belum dipindai di jaringan Anda. Aset yang tidak dipindai adalah sambungan ke alamat IP jarak jauh yang tidak yang terkait dengan aset apa pun di inventaris Migration Center Anda. Hal ini memungkinkan Anda mengidentifikasi aset yang mungkin tidak ada dan diperlukan untuk memindai penilaian Anda.

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

Ganti kode berikut:

  • IP_START: Alamat IP awal rentang, misalnya "10.26.0.0".
  • IP_END: Alamat IP akhir rentang, misalnya "10.26.255.255".