Sdílet prostřednictvím


Průvodce migrací: Elasticsearch do Azure Data Exploreru

V této příručce se naučíte migrovat data Elasticsearch do Azure Data Exploreru pomocí Logstash.

V této příručce se data, která se mají migrovat, nachází v indexu Elasticsearch s názvem vozidlo s následujícím schématem dat:

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

Požadavky

Pokud chcete migrovat data Elasticsearch do Azure Data Exploreru, potřebujete:

  • Účet Microsoft nebo identita uživatele Microsoft Entra. Předplatné Azure není povinné.
  • Cluster a databáze Azure Data Exploreru. Můžete vytvořit bezplatný cluster nebo vytvořit úplný cluster. Pokud se chcete rozhodnout, která z vás je nejvhodnější, zkontrolujte porovnání funkcí.
  • ID aplikace a delegovaná oprávnění pro přístup ke clusteru Azure Data Exploreru Další informace najdete v tématu Vytvoření aplikace Microsoft Entra. Ke konfiguraci kanálu Logstash potřebujete ID aplikace, tajný klíč a ID tenanta.
  • Pokyny k instalaci Logstash verze 6+

Před migrací

Jakmile splníte požadavky, jste připraveni zjistit topologii vašeho prostředí a posoudit proveditelnost migrace do cloudu Azure.

Vytvoření cílového schématu v clusteru Azure Data Exploreru

Pokud chcete správně ingestovat a strukturovat data pro dotazování a analýzu, musíte vytvořit schéma tabulky a mapování v clusteru Azure Data Exploreru.

Schéma tabulky a migrovaných dat by se mělo shodovat. Mapování příjmu dat je důležité k vytvoření mapování zdrojových sloupců v ELK na cílové sloupce v tabulce.

Vytvoření schématu tabulky a mapování příjmu dat v clusteru:

  1. Přihlaste se k webovému uživatelskému rozhraní Azure Data Exploreru.

  2. Přidejte připojení ke clusteru.

  3. Vyberte databázi, ve které chcete vytvořit schéma tabulky pro data migrace.

  4. Spuštěním následujícího příkazu v okně dotazu databáze vytvořte schéma tabulky.

    .create tables Vehicle (
      Manufacturer: string,
      Model: string,
      ReleaseYear: int,
      ReleaseDate: datetime
      )
    
  5. Spuštěním následujícího příkazu vytvořte mapování příjmu dat.

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

Příprava Logstash na migraci

Při migraci dat do clusteru Azure Data Exploreru je důležité správně nastavit kanál Logstash. Kanál zajišťuje správné formátování a přenos dat do cílové tabulky.

Pokud potřebujete přesunout data z několika clusterů nebo indexů Elasticsearch, můžete v konfiguračním souboru kanálu vytvořit několik vstupních oddílů. Abyste toho dosáhli, můžete definovat jeden vstupní oddíl pro každý cluster Elasticsearch nebo index a kategorizovat je pomocí značek, pokud chcete. Tyto značky pak můžete použít v podmíněných příkazech ve výstupní části k nasměrování těchto datových sad na konkrétní tabulky clusteru Azure Data Exploreru.

Nastavení kanálu Logstash:

  1. V příkazovém prostředí přejděte do kořenového adresáře Logstash a spuštěním následujícího příkazu nainstalujte výstupní modul plug-in Logstash. Další informace o modulu plug-in najdete v tématu Ingestování dat z Logstash.

    bin/logstash-plugin install logstash-output-kusto
    
  2. Pomocí následujících nastavení vytvořte konfigurační soubor kanálu Logstash:

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

    Vstupní parametry

    Název parametru Popis
    hostitelé Adresa URL clusteru Elasticsearch.
    index Název indexu, který se má migrovat.
    query Volitelný dotaz pro získání konkrétních dat z indexu
    Uživatel Uživatelské jméno pro připojení ke clusteru Elasticsearch
    heslo Heslo pro připojení ke clusteru Elasticsearch
    značek Volitelné značky pro identifikaci zdroje dat. Zadejte například tags => ["vehicle"] v oddílu elasticsearch a pak pomocí filtrování použijte if "vehicle" in [tags] { ... } zabalení oddílu Kusto .
    ssl Určuje, jestli se vyžaduje certifikát SSL.
    ca_file Soubor certifikátu, který se má předat k ověření.

    Parametry filtru

    Filtr ruby zabraňuje ingestování duplicitních dat do clusteru nastavením jedinečného časového razítka pro datové soubory Elasticsearch každých 10 sekund. Jedná se o osvědčený postup, kdy se data zaseknou do souborů s jedinečným časovým razítkem a zajistí se tak správné zpracování dat pro migraci.

    Výstupní parametry

    Název parametru Popis
    path Modul plug-in Logstash zapisuje události do dočasných souborů před jejich odesláním do clusteru. Tento parametr popisuje cestu k uložení dočasných souborů a časový výraz pro rotaci souborů, která aktivuje nahrávání do clusteru.
    ingest_url Koncový bod clusteru pro komunikaci související s příjmem dat.
    app_id, app_key a app_tenant Přihlašovací údaje potřebné pro připojení ke clusteru. Ujistěte se, že používáte aplikaci s oprávněními ingestování. Další informace najdete v části Předpoklady.
    databáze Název databáze pro umístění událostí
    stůl Název cílové tabulky pro umístění událostí
    json_mapping Mapování se používá k mapování příchozího řetězce JSON události do správného formátu řádku (definuje, která vlastnost ELK přejde do sloupce schématu tabulky).

Migrace

Po dokončení přípravy kroků před migrací je dalším krokem provedení procesu migrace. Během procesu migrace dat je důležité monitorovat kanál, abyste měli jistotu, že běží hladce, a abyste mohli řešit případné problémy, které by mohly nastat.

Pokud chcete migrovat data, přejděte v příkazovém prostředí do kořenového adresáře Logstash a spusťte následující příkaz:

bin/logstash -f <your_pipeline>.conf

Měly by se zobrazit informace vytištěné na obrazovku.

Po migraci

Po dokončení migrace musíte projít řadu úloh po migraci, abyste ověřili data a zajistili, že vše funguje co nejrušněji a co nejefektivněji.

Proces ověření dat pro konkrétní index se obvykle skládá z následujících aktivit:

Porovnání dat: Porovnejte migrovaná data v clusteru Azure Data Exploreru s původními daty v Elasticsearch. Můžete to udělat pomocí nástroje, jako je Kibana v zásobníku ELK, který umožňuje dotazovat a vizualizovat data v obou prostředích.

Provádění dotazů: Spusťte řadu dotazů na migrovaná data v clusteru Azure Data Exploreru, abyste měli jistotu, že jsou data přesná a dokončená. To zahrnuje spouštění dotazů, které testují vztahy mezi různými poli, a dotazy, které testují integritu dat.

Kontrola chybějících dat: Porovnejte migrovaná data v clusteru s daty v Elasticsearch a zkontrolujte chybějící data, duplicitní data nebo jakékoli jiné nekonzistence dat.

Ověřte výkon: Otestujte výkon migrovaných dat ve vašem clusteru a porovnejte je s výkonem dat v Elasticsearch. To může zahrnovat spouštění dotazů a vizualizaci dat pro testování doby odezvy a zajištění, že jsou data v clusteru optimalizovaná pro výkon.

Důležité

Proces ověření dat opakujte, pokud se v migrovaných datech nebo clusteru provádějí nějaké změny, abyste zajistili, že jsou data stále přesná a dokončená.

Tady je několik příkladů dotazů, které můžete spustit, abyste ověřili data v clusteru:

  1. V Elasticsearch spusťte následující dotazy, abyste získali:

    // 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. V okně dotazu databáze spusťte následující odpovídající dotaz:

    // 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. Porovnejte výsledky z obou sad dotazů, abyste měli jistotu, že jsou data v clusteru přesná a dokončená.

Další informace o Průzkumníku služby Azure Database najdete tady:

Další informace o cyklu architektury a přechodu pro migrace do cloudu najdete tady: