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:
Přihlaste se k webovému uživatelskému rozhraní Azure Data Exploreru.
Vyberte databázi, ve které chcete vytvořit schéma tabulky pro data migrace.
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 )
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:
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
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žijteif "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:
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" } } } } }
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
Porovnejte výsledky z obou sad dotazů, abyste měli jistotu, že jsou data v clusteru přesná a dokončená.