Delen via


Migratiehandleiding: Elasticsearch naar Azure Data Explorer

In deze handleiding leert u hoe u uw Elasticsearch-gegevens migreert naar Azure Data Explorer met behulp van Logstash.

In deze handleiding bevinden de gegevens die moeten worden gemigreerd zich in een Elasticsearch-index met de naam vehicle die het volgende gegevensschema heeft:

{
  "Manufacturer": "string",
  "Model": "string",
  "ReleaseYear": "int",
  "ReleaseDate": "datetime"
}

Vereisten

Als u uw Elasticsearch-gegevens wilt migreren naar Azure Data Explorer, hebt u het volgende nodig:

Premigratie

Nadat u aan de vereisten hebt voldaan, bent u klaar om de topologie van uw omgeving te ontdekken en de haalbaarheid van uw Azure-cloudmigratie te beoordelen.

Doelschema maken in uw Azure Data Explorer-cluster

Als u de gegevens voor query's en analyses goed wilt opnemen en structureren, moet u een tabelschema en een toewijzing maken in uw Azure Data Explorer-cluster.

Het schema van de tabel en de gegevens die worden gemigreerd, moeten overeenkomen. De opnametoewijzing is belangrijk om de toewijzing van de bronkolommen in ELK aan de doelkolommen in uw tabel vast te stellen.

Een tabelschema en opnametoewijzing maken in uw cluster:

  1. Meld u aan bij de azure Data Explorer-webinterface.

  2. Voeg een verbinding toe aan uw cluster.

  3. Selecteer de database waarin u het tabelschema voor de migratiegegevens wilt maken.

  4. Voer de volgende opdracht uit in het databasequeryvenster om een tabelschema te maken.

    .create tables Vehicle (
      Manufacturer: string,
      Model: string,
      ReleaseYear: int,
      ReleaseDate: datetime
      )
    
  5. Voer de volgende opdracht uit om een opnametoewijzing te maken.

    .create table Vehicle ingestion json mapping 'VechicleMapping'
      '['
      '  {"column":"Manufacturer", "path":"$.manufacturer"},'
      '  {"column":"Model", "path":"$.model"},'
      '  {"column":"ReleaseYear", "path":"$.releaseYear"},'
      '  {"column":"ReleaseDate", "path":"$.releaseDate"}'
      ']'
    

Logstash voorbereiden voor migratie

Wanneer u gegevens migreert naar uw Azure Data Explorer-cluster, is het belangrijk dat u een Logstash-pijplijn goed instelt. De pijplijn zorgt ervoor dat de gegevens correct worden opgemaakt en overgebracht naar de doeltabel.

Als u gegevens uit meerdere Elasticsearch-clusters of indexen wilt verplaatsen, kunt u meerdere invoersecties maken in het pijplijnconfiguratiebestand. Om dit te bereiken, kunt u één invoersectie definiëren voor elk Elasticsearch-cluster of index en deze indien gewenst categoriseren met behulp van tags. Vervolgens kunt u deze tags gebruiken in voorwaardelijke instructies in de uitvoersectie om deze gegevenssets om te leiden naar specifieke Azure Data Explorer clustertabellen

Een Logstash-pijplijn instellen:

  1. Navigeer in een opdrachtshell naar de logstash-hoofdmap en voer vervolgens de volgende opdracht uit om de Logstash-uitvoerinvoegtoepassing te installeren. Zie Gegevens opnemen uit Logstash voor meer informatie over de invoegtoepassing.

    bin/logstash-plugin install logstash-output-kusto
    
  2. Maak een Logstash-pijplijnconfiguratiebestand met behulp van de volgende instellingen:

    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
      }
    }
    

    De invoerparameters

    Parameternaam Beschrijving
    hosts De URL van het Elasticsearch-cluster.
    index De naam van de index die moet worden gemigreerd.
    Query Optionele query om specifieke gegevens op te halen uit de index.
    gebruiker Gebruikersnaam om verbinding te maken met Elasticsearch-cluster.
    password Wachtwoord om verbinding te maken met het Elasticsearch-cluster.
    Tags Optionele tags om de bron van de gegevens te identificeren. Geef tags => ["vehicle"] bijvoorbeeld op in de sectie elasticsearch en filter vervolgens met behulp van if "vehicle" in [tags] { ... } wrapping van de kusto-sectie .
    Ssl Hiermee geeft u op of een SSL-certificaat is vereist.
    ca_file Het certificaatbestand dat moet worden doorgegeven voor verificatie.

    Filterparameters

    Het Ruby-filter voorkomt dat dubbele gegevens in uw cluster worden opgenomen door elke 10 seconden een unieke tijdstempel in te stellen voor Elasticsearch-gegevensbestanden. Dit is een best practice om gegevens op te delen in bestanden met een unieke tijdstempel, zodat de gegevens correct worden verwerkt voor migratie.

    Uitvoerparameters

    Parameternaam Beschrijving
    path De Logstash-invoegtoepassing schrijft gebeurtenissen naar tijdelijke bestanden voordat ze naar uw cluster worden verzonden. Deze parameter beschrijft het pad naar waar tijdelijke bestanden worden opgeslagen en een tijdexpressie voor bestandsrotatie om uploads naar uw cluster te activeren.
    ingest_url Het clustereindpunt voor opnamegerelateerde communicatie.
    app_id, app_key en app_tenant Referenties die zijn vereist om verbinding te maken met uw cluster. Zorg ervoor dat u een toepassing met opnamebevoegdheden gebruikt. Zie Vereisten voor meer informatie.
    Database De naam van de database waarin gebeurtenissen moeten worden geplaatst.
    table De naam van de tabel waarin gebeurtenissen moeten worden geplaatst.
    json_mapping Toewijzing wordt gebruikt om een binnenkomende gebeurtenis-JSON-tekenreeks toe te wijzen aan de juiste rijindeling (bepaalt welke ELK-eigenschap in welke tabelschemakolom wordt geplaatst).

Migratie

Nadat u de stappen voorafgaand aan de migratie hebt voorbereid, is de volgende stap het uitvoeren van het migratieproces. Het is belangrijk om de pijplijn tijdens het gegevensmigratieproces te bewaken om ervoor te zorgen dat deze soepel verloopt en zodat u eventuele problemen kunt oplossen.

Als u uw gegevens wilt migreren, gaat u in een opdrachtshell naar de logstash-hoofdmap en voert u de volgende opdracht uit:

bin/logstash -f <your_pipeline>.conf

Als het goed is, wordt de informatie op het scherm afgedrukt.

Postmigratie

Nadat de migratie is voltooid, moet u een reeks taken na de migratie uitvoeren om de gegevens te valideren en ervoor te zorgen dat alles zo soepel en efficiënt mogelijk functioneert.

Het proces van gegevensvalidatie voor een specifieke index bestaat over het algemeen uit de volgende activiteiten:

Gegevensvergelijking: vergelijk de gemigreerde gegevens in uw Azure Data Explorer-cluster met de oorspronkelijke gegevens in Elasticsearch. U kunt dit doen met behulp van een hulpprogramma zoals Kibana in ELK-stack waarmee u de gegevens in beide omgevingen kunt opvragen en visualiseren.

Query-uitvoering: voer een reeks query's uit op de gemigreerde gegevens in uw Azure Data Explorer-cluster om ervoor te zorgen dat de gegevens nauwkeurig en volledig zijn. Dit omvat het uitvoeren van query's waarmee de relaties tussen verschillende velden worden getest en query's die de integriteit van de gegevens testen.

Controleren op ontbrekende gegevens: vergelijk de gemigreerde gegevens in uw cluster met de gegevens in Elasticsearch om te controleren op ontbrekende gegevens, dubbele gegevens of andere gegevensconsistentie.

De prestaties valideren: test de prestaties van de gemigreerde gegevens in uw cluster en vergelijk deze met de prestaties van de gegevens in Elasticsearch. Dit kan bestaan uit het uitvoeren van query's en het visualiseren van de gegevens om de reactietijden te testen en ervoor te zorgen dat de gegevens in uw cluster zijn geoptimaliseerd voor prestaties.

Belangrijk

Herhaal het gegevensvalidatieproces als er wijzigingen worden aangebracht in de gemigreerde gegevens of uw cluster, om ervoor te zorgen dat de gegevens nog steeds nauwkeurig en volledig zijn.

Hier volgen enkele voorbeelden van query's die u kunt uitvoeren om de gegevens in uw cluster te valideren:

  1. Voer in Elasticsearch de volgende query's uit om de op te halen:

    // 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. Voer in het databasequeryvenster de volgende bijbehorende query uit:

    // 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. Vergelijk de resultaten van beide sets query's om ervoor te zorgen dat de gegevens in uw cluster nauwkeurig en volledig zijn.

Zie voor meer informatie over Azure Database Explorer:

Zie voor meer informatie over het framework en de acceptatiecyclus voor cloudmigraties: