Nesta página, descrevemos como gerar e analisar o relatório de dependências de rede no Migration Center.
Visão geral
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 da Central de migração que você descobriu com o discovery client, recursos importados manualmente ou até mesmo recursos desconhecidos externos ao 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 que a coleta de performance funcione 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 o relatório de dependências de rede
Para gerar um relatório de dependências de rede, siga estas etapas:
No console 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
Fazer o download.
Analisar o relatório de dependências de rede no BigQuery
As seções a seguir oferecem 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 recursos com mais conexões
A consulta a seguir é útil para identificar os recursos com 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 profundidade 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"
.