Guida alla migrazione: Elasticsearch in Azure Esplora dati
In questa guida si apprenderà come eseguire la migrazione dei dati di Elasticsearch ad Azure Esplora dati usando Logstash.
In questa guida i dati di cui eseguire la migrazione si trovano in un indice Elasticsearch denominato vehicle con lo schema di dati seguente:
{
"Manufacturer": "string",
"Model": "string",
"ReleaseYear": "int",
"ReleaseDate": "datetime"
}
Prerequisiti
Per eseguire la migrazione dei dati di Elasticsearch ad Azure Esplora dati, è necessario:
- Un account Microsoft o un'identità utente di Microsoft Entra. Non è necessaria una sottoscrizione di Azure.
- Un cluster e un database di Esplora dati di Azure. È possibile creare un cluster gratuito o creare un cluster completo. Per decidere qual è la scelta migliore, controllare il confronto delle funzionalità.
- ID app e autorizzazioni delegate per accedere al cluster di azure Esplora dati. Per altre informazioni, vedere Creare un'app Microsoft Entra. Per configurare la pipeline Logstash è necessario l'ID app, il segreto e l'ID tenant.
- Istruzioni di installazione di Logstash versione 6+.
Pre-migrazione
Una volta soddisfatti i prerequisiti, si è pronti per individuare la topologia dell'ambiente e valutare la fattibilità della migrazione al cloud di Azure.
Creare lo schema di destinazione nel cluster di Azure Esplora dati
Per inserire e strutturare correttamente i dati per l'esecuzione di query e l'analisi, è necessario creare uno schema di tabella e un mapping nel cluster di Azure Esplora dati.
Lo schema della tabella e i dati di cui viene eseguita la migrazione devono corrispondere. Il mapping di inserimento è importante per stabilire il mapping delle colonne di origine in ELK alle colonne di destinazione nella tabella.
Per creare uno schema di tabella e il mapping di inserimento nel cluster:
Accedere all'interfaccia utente Web di Azure Esplora dati.
Aggiungere una connessione al cluster.
Selezionare il database in cui si vuole creare lo schema della tabella per i dati di migrazione.
Eseguire il comando seguente nella finestra di query del database per creare uno schema di tabella.
.create tables Vehicle ( Manufacturer: string, Model: string, ReleaseYear: int, ReleaseDate: datetime )
Eseguire il comando seguente per creare un mapping di inserimento.
.create table Vehicle ingestion json mapping 'VechicleMapping' '[' ' {"column":"Manufacturer", "path":"$.manufacturer"},' ' {"column":"Model", "path":"$.model"},' ' {"column":"ReleaseYear", "path":"$.releaseYear"},' ' {"column":"ReleaseDate", "path":"$.releaseDate"}' ']'
Preparare Logstash per la migrazione
Quando si esegue la migrazione dei dati al cluster di azure Esplora dati, è importante configurare correttamente una pipeline Logstash. La pipeline garantisce che i dati vengano formattati correttamente e trasferiti alla tabella di destinazione.
Se è necessario spostare i dati da più cluster o indici Elasticsearch, è possibile creare più sezioni di input nel file di configurazione della pipeline. A tale scopo, è possibile definire una sezione di input per ogni cluster o indice Elasticsearch e classificarle usando i tag, se necessario. È quindi possibile usare questi tag nelle istruzioni condizionali nella sezione output per indirizzare questi set di dati a tabelle cluster specifiche di Azure Esplora dati
Per configurare una pipeline Logstash:
In una shell dei comandi passare alla directory radice Logstash e quindi eseguire il comando seguente per installare il plug-in di output Logstash. Per altre informazioni sul plug-in, vedere Inserire dati da Logstash.
bin/logstash-plugin install logstash-output-kusto
Creare un file di configurazione della pipeline Logstash usando le impostazioni seguenti:
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 } }
Parametri di input
Nome parametro Descrizione Ospita URL del cluster Elasticsearch. index Nome dell'indice di cui eseguire la migrazione. query Query facoltativa per ottenere dati specifici dall'indice. user Nome utente per la connessione al cluster Elasticsearch. password Password per connettersi al cluster Elasticsearch. tag Tag facoltativi per identificare l'origine dei dati. Ad esempio, specificare tags => ["vehicle"]
nella sezione elasticsearch e quindi filtrare usandoif "vehicle" in [tags] { ... }
il wrapping della sezione kusto .ssl Specifica se è necessario un certificato SSL. ca_file File del certificato da passare per l'autenticazione. Parametri di filtro
Il filtro ruby impedisce l'inserimento di dati duplicati nel cluster impostando un timestamp univoco per i file di dati elasticsearch ogni 10 secondi. Si tratta di una procedura consigliata che suddivide i dati in file con un timestamp univoco, assicurando che i dati vengano elaborati correttamente per la migrazione.
Parametri di output
Nome parametro Descrizione path Il plug-in Logstash scrive gli eventi nei file temporanei prima di inviarli al cluster. Questo parametro descrive il percorso in cui vengono salvati i file temporanei e un'espressione temporale per la rotazione dei file per attivare i caricamenti nel cluster. ingest_url Endpoint del cluster per la comunicazione correlata all'inserimento. app_id, app_key e app_tenant Credenziali necessarie per connettersi al cluster. Assicurarsi di usare un'applicazione con privilegi di inserimento. Per altre informazioni, consulta Prerequisiti. database Nome del database per inserire gli eventi. table Nome tabella di destinazione per posizionare gli eventi. json_mapping Il mapping viene usato per eseguire il mapping di una stringa JSON dell'evento in ingresso nel formato di riga corretto (definisce la proprietà ELK in cui viene inserita la colonna dello schema della tabella).
Migrazione
Dopo aver completato la preparazione dei passaggi di pre-migrazione, il passaggio successivo consiste nell'eseguire il processo di migrazione. È importante monitorare la pipeline durante il processo di migrazione dei dati per assicurarsi che funzioni correttamente e in modo da poter risolvere eventuali problemi che possono verificarsi.
Per eseguire la migrazione dei dati, in una shell dei comandi passare alla directory radice Logstash e quindi eseguire il comando seguente:
bin/logstash -f <your_pipeline>.conf
Verranno visualizzate informazioni stampate sullo schermo.
Post-migrazione
Al termine della migrazione, è necessario eseguire una serie di attività post-migrazione per convalidare i dati e assicurarsi che tutto funzioni nel modo più uniforme ed efficiente possibile.
Il processo di convalida dei dati per un indice specifico è in genere costituito dalle attività seguenti:
Confronto dei dati: confrontare i dati migrati nel cluster di Azure Esplora dati con i dati originali in Elasticsearch. A tale scopo, è possibile usare uno strumento come Kibana nello stack ELK che consente di eseguire query e visualizzare i dati in entrambi gli ambienti.
Esecuzione di query: eseguire una serie di query sui dati migrati nel cluster di Azure Esplora dati per assicurarsi che i dati siano accurati e completi. Sono incluse l'esecuzione di query che testano le relazioni tra campi diversi e le query che testano l'integrità dei dati.
Verificare la presenza di dati mancanti: confrontare i dati migrati nel cluster con i dati in Elasticsearch per verificare la presenza di dati mancanti, dati duplicati o altre incoerenze di dati.
Convalidare le prestazioni: testare le prestazioni dei dati migrati nel cluster e confrontarli con le prestazioni dei dati in Elasticsearch. Ciò può includere l'esecuzione di query e la visualizzazione dei dati per testare i tempi di risposta e assicurarsi che i dati nel cluster siano ottimizzati per le prestazioni.
Importante
Ripetere il processo di convalida dei dati se vengono apportate modifiche ai dati migrati o al cluster per assicurarsi che i dati siano ancora accurati e completi.
Di seguito sono riportati alcuni esempi di query che è possibile eseguire per convalidare i dati nel cluster:
In Elasticsearch eseguire le query seguenti per ottenere :
// 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" } } } } }
Nella finestra query del database eseguire la query corrispondente seguente:
// 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
Confrontare i risultati di entrambi i set di query per assicurarsi che i dati nel cluster siano accurati e completi.