Partilhar via


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:

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:

  1. Inicie sessão na IU da Web do Azure Data Explorer.

  2. Adicione uma ligação ao cluster.

  3. Selecione a base de dados onde pretende criar o esquema de tabela para os dados de migração.

  4. 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
      )
    
  5. 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:

  1. 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
    
  2. 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 com if "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:

  1. 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"
            }
          }
        }
      }
    }
    
  2. 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
    
  3. Compare os resultados de ambos os conjuntos de consultas para garantir que os dados no cluster estão corretos e completos.

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: