Nesta página, descrevemos como gerar e analisar o relatório de dependências de rede na Central de migração. O relatório de dependências de rede fornece dados agregados mensais sobre as conexões com seus servidores e bancos de dados. O relatório de dependências de rede mostra todas as conexões com os recursos na sua infraestrutura e o número de vezes que a conexão é observada pelo Migration Center, agregada mensalmente.
Para coletar dados de dependências de rede, deixe o discovery client em execução por um período e ative a sincronização dos dados com o Migration Center. Quanto mais tempo você executar a coleta, mais dados a Central de migração terá para analisar insights sobre as dependências da sua rede. O Migration Center identifica todas as conexões de rede dos recursos verificados. Os recursos de destino em uma conexão podem ser recursos no inventário do Migration Center que você descobriu com o discovery client, recursos importados manualmente ou até mesmo recursos desconhecidos que estão fora do seu ambiente.
O relatório de dependências de rede é útil nos seguintes cenários:
- Coletar dados sobre conexões com servidores e bancos de dados para identificar recursos que pertencem ao mesmo aplicativo
- Identificar conexões de rede de interesse em um grupo de recursos, como todos os servidores que usam a porta padrão do MySQL
- Identificar recursos ausentes no inventário
É possível fazer o download do relatório de dependências de rede como um arquivo CSV no Migration Center. Em seguida, faça a análise usando o BigQuery e as consultas de amostra fornecidas pelo Migration Center ou use qualquer outra ferramenta de terceiros.
Limitações
- Para coletar dados de conexão na sua infraestrutura, use o cliente de descoberta.
- Os dados de conexões de rede são coletados apenas com o método de verificação do SO. A verificação do vSphere não é compatível com a coleta de dados de rede.
Antes de começar
Antes de criar um relatório de dependências de rede, é necessário ter a coleta de desempenho funcionando com o cliente de descoberta.
Antes de analisar o relatório de dependências de rede com o BigQuery, faça o seguinte:
- Saiba como importar dados locais para o BigQuery.
- Saiba como executar consultas.
Gerar um relatório de dependências de rede
Para gerar um relatório de dependências de rede, siga estas etapas:
No console do Google Cloud , acesse a página Criar relatórios.
Clique em Exportações de dependências da rede.
Na lista de grupos, selecione aqueles para os quais você quer gerar o relatório e clique em Exportar.
Na caixa de diálogo exibida, clique em Exportar.
A geração do relatório exportado pode levar até uma hora. Depois que o relatório for gerado, a página Dependências de rede será aberta.
Para baixar um relatório específico, clique em Baixar.
Analisar o relatório de dependências de rede no BigQuery
As seções a seguir fornecem algumas consultas de exemplo para analisar cenários comuns no BigQuery. Antes de executar uma consulta, faça upload do arquivo CSV para o BigQuery.
Para usar o BigQuery, você recebe uma fatura de acordo com os preços do BigQuery.
Identificar os recursos com mais conexões
A consulta a seguir é útil para identificar os recursos que têm o maior número de conexões no grupo.
SELECT
LocalVMName, SUM(ConnectionCount) as TotalCount
FROM
PROJECT.DATASET.TABLE
GROUP BY ALL
ORDER BY TotalCount DESC
Substitua:
PROJECT: o projeto Google Cloud em que você fez upload do arquivo CSV.DATASET: o conjunto de dados do BigQuery.TABLE: a tabela do BigQuery.
Confira a seguir um exemplo de saída dessa consulta:
| LocalVMName | TotalCount |
|---|---|
| VM-x5ua3o2w | 9970 |
| VM-glg5np3w | 9763 |
| VM-q3z4zfp8 | 9557 |
| VM-2nnsrt37 | 9372 |
| VM-1oah56hn | 9350 |
Identificar conexões pela profundidade do gráfico
A consulta a seguir é útil para identificar todos os recursos que se conectam a um determinado recurso com um número específico de conexões intermediárias. Exemplo:
- Com a profundidade do gráfico igual a 1, você encontra todos os recursos conectados diretamente ao recurso principal.
- Com profundidade de grafo igual a 2, você encontra todos os recursos conectados diretamente a outros recursos, que, por sua vez, estão conectados diretamente ao recurso principal.
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
Substitua:
MAIN_ASSET: o nome do recurso para o qual você quer identificar as conexões.DEPTH: a profundidade do gráfico.
Confira a seguir um exemplo de saída dessa consulta:
| LocalVMName | Conexões |
|---|---|
| VM-lv8s148f | VM-2z8wp3ey, VM-66rq2x2y, VM-94uwyy8h, VM-ccgmqqmb, VM-ctqddf0u, VM-og4n77lb, ... |
Filtrar conexões por intervalos de IP e porta
A consulta a seguir permite identificar recursos que usam endereços IP e portas em intervalos definidos por você.
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))
Substitua:
PORT_START: a porta inicial do intervalo de portas, por exemplo,0.PORT_END: a porta final do intervalo de portas, por exemplo,1024.IP_START: o endereço IP inicial do intervalo, por exemplo,"10.26.0.0".IP_END: o endereço IP final do intervalo, por exemplo,"10.26.255.255".
Confira a seguir um exemplo de saída dessa consulta:
| SampleRange | LocalVMName | LocalAssetID | LocalGroups | LocalIP | LocalPort | Protocolo | 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 | Grupo 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 | Grupo 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 | Grupo 1 | 10.58.166.132 | 21 | TCP | bash | VM-2gq0fl37 | projects/982941055174/locations/us-central1/assets/2gq0fl37 | 147.19.84.135 | 21 | 514 |
Identificar recursos não verificados na rede
A consulta a seguir permite identificar qualquer recurso não verificado na sua rede. Um recurso não verificado é uma conexão com um endereço IP remoto que não está associado a nenhum recurso no inventário do Migration Center. Assim, você identifica recursos potencialmente ausentes que precisam ser verificados para sua avaliação.
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
Substitua:
IP_START: o endereço IP inicial do intervalo, por exemplo,"10.26.0.0".IP_END: o endereço IP final do intervalo, por exemplo,"10.26.255.255".