Kueri data yang diekspor dari Azure Monitor dengan menggunakan Azure Data Explorer

Mengekspor data dari Azure Monitor ke akun Azure Storage memungkinkan retensi berhemat rendah dan kemampuan untuk merealokasi log ke wilayah yang berbeda. Gunakan Azure Data Explorer untuk mengkueri data yang diekspor dari ruang kerja Analitik Log Anda. Setelah konfigurasi, tabel yang didukung yang dikirim dari ruang kerja Anda ke akun penyimpanan akan tersedia sebagai sumber data untuk Azure Data Explorer.

Alur prosesnya adalah untuk:

  1. Ekspor data dari ruang kerja Analitik Log ke akun penyimpanan.
  2. Buat tabel eksternal di kluster Azure Data Explorer Anda dan pemetaan untuk jenis data.
  3. Kueri data dari Azure Data Explorer.

Diagram yang memperlihatkan Azure Data Explorer alur kueri data yang diekspor.

Mengirim data ke Azure Storage

Log Azure Monitor dapat diekspor ke akun penyimpanan dengan menggunakan salah satu opsi berikut:

Tip

Anda dapat menggunakan kluster Azure Data Explorer yang sudah ada atau membuat kluster khusus baru dengan konfigurasi yang diperlukan.

Membuat tabel eksternal yang terletak di Azure Blob Storage

Gunakan tabel eksternal untuk menautkan Azure Data Explorer ke akun penyimpanan. Tabel eksternal adalah entitas skema Kusto yang mereferensikan data yang disimpan di luar database Kusto. Seperti tabel, tabel eksternal memiliki skema yang ditentukan dengan baik. Tidak seperti tabel, data disimpan dan dikelola di luar kluster Kusto. Data yang diekspor dari bagian sebelumnya disimpan di baris JSON.

Untuk membuat referensi, Anda memerlukan skema tabel yang diekspor. Gunakan operator getschema dari Log Analytics untuk mengambil informasi ini, yang mencakup kolom tabel dan jenis datanya.

Cuplikan layar yang memperlihatkan skema tabel Analitik Log.

Sekarang Anda bisa menggunakan output untuk membuat kueri Kusto untuk membuat tabel eksternal. Ikuti panduan dalam Membuat dan mengubah tabel eksternal di Azure Storage atau Azure Data Lake untuk membuat tabel eksternal dalam format JSON. Kemudian jalankan kueri dari database Azure Data Explorer Anda.

Catatan

Pembuatan tabel eksternal dibangun dari dua proses. Proses pertama adalah membuat tabel eksternal. Proses kedua adalah membuat pemetaan.

Skrip PowerShell berikut membuat perintah buat untuk tabel dan pemetaan:

PARAM(
    $resourcegroupname, #The name of the Azure resource group
    $TableName, # The Log Analytics table you want to convert to an external table
    $MapName, # The name of the map
    $subscriptionId, # The ID of the subscription
    $WorkspaceId, # The Log Analytics WorkspaceId
    $WorkspaceName, # The Log Analytics workspace name
    $BlobURL, # The Blob URL where the data is saved
    $ContainerAccessKey, # The blob container Access Key (option to add an SAS URL)
    $ExternalTableName = $null # The External Table name, null to use the same name
)

if($null -eq $ExternalTableName) {
    $ExternalTableName = $TableName
}

$query = $TableName + ' | getschema | project ColumnName, DataType'

$output = (Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceId -Query $query).Results

$FirstCommand = @()
$SecondCommand = @()

foreach ($record in $output) {
    if ($record.DataType -eq 'System.DateTime') {
        $dataType = 'datetime'
    } elseif ($record.DataType -eq 'System.Int32') {
        $dataType = 'int32'
    } elseif ($record.DataType -eq 'System.Double') {
        $dataType = 'double'
    } else {
        $dataType = 'string'
    }
    $FirstCommand += $record.ColumnName + ":" + "$dataType" + ","
    $SecondCommand += "{`"column`":" + "`"" + $record.ColumnName + "`"," + "`"datatype`":`"$dataType`",`"path`":`"$." + $record.ColumnName + "`"},"
}
$schema = ($FirstCommand -join '') -replace ',$'
$mapping = ($SecondCommand -join '') -replace ',$'

$CreateExternal = @'
.create external table {0} ({1})
kind=blob
partition by (TimeGeneratedPartition:datetime = bin(TimeGenerated, 1min))
pathformat = (datetime_pattern("'y='yyyy'/m='MM'/d='dd'/h='HH'/m='mm", TimeGeneratedPartition))
dataformat=multijson
(
   h@'{2}/WorkspaceResourceId=/subscriptions/{4}/resourcegroups/{6}/providers/microsoft.operationalinsights/workspaces/{5};{3}'
)
with
(
   docstring = "Docs",
   folder = "ExternalTables"
)
'@ -f $TableName, $schema, $BlobURL, $ContainerAccessKey, $subscriptionId, $WorkspaceName.ToLower(), $resourcegroupname.ToLower(),$WorkspaceId

$createMapping = @'
.create external table {0} json mapping "{1}" '[{2}]'
'@ -f $ExternalTableName, $MapName, $mapping

Write-Host -ForegroundColor Red 'Copy and run the following commands (one by one), on your Azure Data Explorer cluster query window to create the external table and mappings:'
write-host -ForegroundColor Green $CreateExternal
Write-Host -ForegroundColor Green $createMapping

Gambar berikut menunjukkan contoh output:

Cuplikan layar yang memperlihatkan output perintah buat ExternalTable.

Tip

  • Salin, tempel, lalu jalankan output skrip di alat klien Azure Data Explorer Anda untuk membuat tabel dan pemetaan.
  • Untuk menggunakan semua data di dalam kontainer, ubah skrip dan ubah URL menjadi https://your.blob.core.windows.net/containername;SecKey.

Kueri data yang diekspor dari Azure Data Explorer

Setelah mengonfigurasi pemetaan, Anda bisa mengkueri data yang diekspor dari Azure Data Explorer. Kueri Anda memerlukan fungsi external_table , seperti yang diperlihatkan dalam contoh berikut:

external_table("HBTest","map") | take 10000

Cuplikan layar yang memperlihatkan data yang diekspor Analitik Log Kueri.

Langkah berikutnya

Pelajari cara menulis kueri di Azure Data Explorer.