Esta página descreve 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 mostra dados agregados diários sobre a conexões com os servidores e bancos de dados. O relatório de dependências de rede mostra todas as conexões com os recursos na infraestrutura e o número de conexões por dia.
Para coletar os dados de dependências de rede, deixe o discovery client ser executado por vários dias e ative a sincronização dos dados com a Central de migração. O cliente de descoberta identifica todas as conexões de rede dos recursos digitalizados. Os recursos de destino na conexão podem ser qualquer recurso no inventário da Central de migração que você descobriu com o discovery client ou importou manualmente, ou até mesmo um recurso desconhecido.
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
- Como identificar recursos ausentes no seu inventário
Você pode fazer o download do relatório de dependências de rede como um arquivo CSV na Central de migração. Em seguida, você pode realizar sua análise usando o BigQuery e as consultas de amostra fornecidas pela Central de migração; ou usar qualquer outra ferramenta de terceiros.
Limitações
- Para coletar dados de conexão na sua infraestrutura, use o discovery client.
- 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, você precisa verificar conjunto de dados trabalhando com o discovery client.
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:
Acesse a página Catálogo de relatórios.
Clique em Relatório de dependências de rede.
Na lista de grupos, selecione os grupos para os quais você quer gerar o relatório e, em seguida, clique em Exportar.
Na caixa de diálogo exibida, selecione o número de dias para os quais para exportar os dados, de um mínimo de 10 até 90, e clique em Exportar.
Depois que o arquivo for gerado, clique em Fazer o download.
Analisar o relatório de dependências de rede no BigQuery
As seções a seguir fornecem alguns exemplos de consultas para analisar cenários comuns no BigQuery. Antes de executar uma consulta, é necessário fazer upload do arquivo CSV para o BigQuery.
Para usar o BigQuery, você vai receber cobranças de acordo com os preços do BigQuery.
Identificar recursos com mais conexões
A consulta a seguir é útil para identificar os recursos que têm o maior o 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 do Google Cloud em que você fez o 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 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 a profundidade do gráfico igual a 2, você encontra todos os recursos diretamente conectados a outros recursos, que, por sua vez, estão diretamente conectados ao 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 que você quer para 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 IP e intervalos de portas
A consulta a seguir permite identificar os 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"
.
Veja a seguir um exemplo de saída dessa consulta:
Dia | LocalVMName | LocalAssetID | LocalGroups | LocalIP | LocalPort | Protocolo | LocalProcessName | RemoteVMName | RemoteAssetID | RemoteGroups | RemoteIP | RemotePort | ConnectionCount |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2024-04-18 | 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 | |
2024-04-18 | 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 | |
2024-04-19 | 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 que você identifique qualquer recurso não verificado na sua rede. Um recurso não digitalizado é 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ê pode identificar possíveis recursos ausentes para verificar 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"
.