Guia de migração: Elasticsearch para o Azure Data Explorer
Neste guia, vai aprender a migrar os dados do Elasticsearch para o Azure Data Explorer, com o Logstash.
Neste guia, os dados a migrar estão num índice elasticsearch denominado veículo com o seguinte esquema de dados:
{
"Manufacturer": "string",
"Model": "string",
"ReleaseYear": "int",
"ReleaseDate": "datetime"
}
Pré-requisitos
Para migrar os dados do Elasticsearch para o Azure Data Explorer, precisa de:
- Uma conta Microsoft ou uma identidade de utilizador Microsoft Entra. Não é necessária uma subscrição do Azure.
- Um cluster e uma base de dados do Azure Data Explorer. Pode criar um cluster gratuito ou criar um cluster completo. Para decidir qual é o melhor para si, verifique a comparação de funcionalidades.
- Um ID de aplicação e permissões delegadas para aceder ao cluster do Azure Data Explorer. Para obter mais informações, veja Criar uma aplicação Microsoft Entra. Precisa do ID da aplicação, do segredo e do ID do inquilino para configurar o pipeline do Logstash.
- Instruções de instalação do Logstash versão 6+.
Pré-migração
Depois de cumprir os pré-requisitos, está pronto para descobrir a topologia do seu ambiente e avaliar a viabilidade da migração para a cloud do Azure.
Criar um esquema de destino no cluster do Azure Data Explorer
Para ingerir e estruturar corretamente os dados para consulta e análise, tem de criar um esquema de tabela e um mapeamento no cluster do Azure Data Explorer.
O esquema da tabela e os dados que estão a ser migrados devem corresponder. O mapeamento da ingestão é importante para estabelecer o mapeamento das colunas de origem no ELK para as colunas de destino na tabela.
Para criar um esquema de tabela e mapeamento de ingestão no cluster:
Inicie sessão na IU da Web do Azure Data Explorer.
Adicione uma ligação ao cluster.
Selecione a base de dados onde pretende criar o esquema de tabela para os dados de migração.
Execute o seguinte comando na janela de consulta da base de dados para criar um esquema de tabela.
.create tables Vehicle ( Manufacturer: string, Model: string, ReleaseYear: int, ReleaseDate: datetime )
Execute o seguinte comando para criar um mapeamento de ingestão.
.create table Vehicle ingestion json mapping 'VechicleMapping' '[' ' {"column":"Manufacturer", "path":"$.manufacturer"},' ' {"column":"Model", "path":"$.model"},' ' {"column":"ReleaseYear", "path":"$.releaseYear"},' ' {"column":"ReleaseDate", "path":"$.releaseDate"}' ']'
Preparar o Logstash para migração
Ao migrar dados para o cluster do Azure Data Explorer, é importante configurar corretamente um pipeline do Logstash. O pipeline garante que os dados estão corretamente formatados e transferidos para a tabela de destino.
Se precisar de mover dados de vários clusters ou índices do Elasticsearch, pode criar várias secções de entrada no ficheiro de configuração do pipeline. Para tal, pode definir uma secção de entrada para cada cluster ou índice do Elasticsearch e categorizá-los com etiquetas, se assim o desejar. Em seguida, pode utilizar estas etiquetas em instruções condicionais na secção de saída para direcionar estes conjuntos de dados para tabelas de cluster específicas do Azure Data Explorer
Para configurar um pipeline do Logstash:
Numa shell de comandos, navegue para o diretório de raiz do Logstash e, em seguida, execute o seguinte comando para instalar o plug-in de saída do Logstash. Para obter mais informações sobre o plug-in, veja Ingerir dados do Logstash.
bin/logstash-plugin install logstash-output-kusto
Crie um ficheiro de configuração do pipeline do Logstash com as seguintes definições:
input { elasticsearch { hosts => "http://localhost:9200" index => "vehicle" query => '{ "query": { "range" : { "releaseDate": { "gte": "2019-01-01", "lte": "2023-12-31" }}}}' user => "<elasticsearch_username>" password => "<elasticsearch_password>" ssl => true ca_file => "<certification_file>" } } filter { ruby { code => "event.set('[@metadata][timebucket]', Time.now().to_i/10)" } } output { kusto { path => "/tmp/region1/%{+YYYY-MM-dd}-%{[@metadata][timebucket]}.txt" ingest_url => "https://ingest-<azure_data_explorer_cluster_name>.<region>.kusto.windows.net" app_id => "<app_id>" app_key => "<app_secret>" app_tenant => "<app_tenant_id>" database => "<your_database>" table => "Vehicle" // The table schema you created earlier json_mapping => "vehicleMapping" // The ingestion mapping you created earlier } }
Parâmetros de entrada
Nome do parâmetro Descrição anfitriões O URL do cluster do Elasticsearch. índice O nome do índice a migrar. consulta Consulta opcional para obter dados específicos do índice. Utilizador Nome de utilizador para ligar ao cluster do Elasticsearch. palavra-passe Palavra-passe para ligar ao cluster do Elasticsearch. etiquetas Etiquetas opcionais para identificar a origem dos dados. Por exemplo, especifique tags => ["vehicle"]
na secção elasticsearch e, em seguida, filtre comif "vehicle" in [tags] { ... }
a moldagem da secção kusto .ssl Especifica se é necessário um certificado SSL. ca_file O ficheiro de certificado a transmitir para autenticação. Filtrar parâmetros
O filtro ruby impede que os dados duplicados sejam ingeridos no cluster ao definir um carimbo de data/hora exclusivo para ficheiros de dados elasticsearch a cada 10 segundos. Esta é uma melhor prática que segmenta dados em ficheiros com um carimbo de data/hora exclusivo, garantindo que os dados são processados corretamente para migração.
Parâmetros de saída
Nome do parâmetro Descrição caminho O plug-in do Logstash escreve eventos em ficheiros temporários antes de os enviar para o cluster. Este parâmetro descreve o caminho para onde os ficheiros temporários são guardados e uma expressão de tempo para a rotação de ficheiros acionar carregamentos para o cluster. ingest_url O ponto final do cluster para comunicação relacionada com ingestão. app_id, app_key e app_tenant Credenciais necessárias para ligar ao cluster. Certifique-se de que utiliza uma aplicação com privilégios de ingestão. Para obter mais informações, veja os Pré-requisitos. base de dados Nome da base de dados para colocar eventos. table Nome da tabela de destino para efetuar eventos. json_mapping O mapeamento é utilizado para mapear uma cadeia json de evento de entrada para o formato de linha correto (define a propriedade ELK que vai para a coluna de esquema da tabela).
Migração
Depois de concluir a preparação dos passos de pré-migração, o passo seguinte é executar o processo de migração. É importante monitorizar o pipeline durante o processo de migração de dados para garantir que está a funcionar sem problemas e para que possa resolver quaisquer problemas que possam surgir.
Para migrar os dados, numa shell de comandos, navegue para o diretório de raiz do Logstash e, em seguida, execute o seguinte comando:
bin/logstash -f <your_pipeline>.conf
Deverá ver as informações impressas no ecrã.
Pós-migração
Após a conclusão da migração, tem de passar por uma série de tarefas pós-migração para validar os dados e garantir que tudo está a funcionar da forma mais suave e eficiente possível.
Geralmente, o processo de validação de dados para um índice específico consiste nas seguintes atividades:
Comparação de dados: compare os dados migrados no cluster do Azure Data Explorer com os dados originais no Elasticsearch. Pode fazê-lo com uma ferramenta como o Kibana na pilha ELK que lhe permite consultar e visualizar os dados em ambos os ambientes.
Execução de consultas: execute uma série de consultas nos dados migrados no cluster do Azure Data Explorer para garantir que os dados estão corretos e completos. Isto inclui a execução de consultas que testam as relações entre campos diferentes e consultas que testam a integridade dos dados.
Verificar se existem dados em falta: compare os dados migrados no cluster com os dados no Elasticsearch para verificar se existem dados em falta, dados duplicados ou outras inconsistências de dados.
Validar o desempenho: teste o desempenho dos dados migrados no cluster e compare-os com o desempenho dos dados no Elasticsearch. Isto pode incluir a execução de consultas e a visualização dos dados para testar os tempos de resposta e garantir que os dados no cluster estão otimizados para desempenho.
Importante
Repita o processo de validação de dados se forem efetuadas alterações aos dados migrados ou ao cluster para garantir que os dados ainda estão corretos e completos.
Seguem-se alguns exemplos de consultas que pode executar para validar os dados no cluster:
No Elasticsearch, execute as seguintes consultas para obter o :
// Gets the total record count of the index GET vehicle/_count // Gets the total record count of the index based on a datetime query GET vehicle/_count { "query": { "range" : { "releaseDate": { "gte": "2021-01-01", "lte": "2021-12-31" } } } } // Gets the count of all vehicles that has manufacturer as "Honda". GET vehicle/_count { "query": { "bool" : { "must" : { "term" : { "manufacturer" : "Honda" } } } } } // Get the record count where a specific property doesn't exist. // This is helpful especially when some records don't have NULL properties. GET vehicle/_count { "query": { "bool": { "must_not": { "exists": { "field": "description" } } } } }
Na janela de consulta da base de dados, execute a seguinte consulta correspondente:
// Gets the total record count in the table Vehicle | count // Gets the total record count where a given property is NOT empty/null Vehicle | where isnotempty(Manufacturer) // Gets the total record count where a given property is empty/null Vehicle | where isempty(Manufacturer) // Gets the total record count by a property value Vehicle | where Manufacturer == "Honda" | count
Compare os resultados de ambos os conjuntos de consultas para garantir que os dados no cluster estão corretos e completos.
Conteúdo relacionado
Para saber mais sobre o Explorador de Bases de Dados do Azure, veja:
Para saber mais sobre o ciclo de adoção e arquitetura das migrações para a cloud, veja:
- Cloud Adoption Framework para o Azure
- Best practices for costing and sizing workloads migrated to Azure (Melhores práticas para avaliar custos e dimensionar as cargas de trabalho migradas para o Azure)
- Recursos de Migração para a Cloud