Tutorial: Menambahkan transformasi dalam aturan pengumpulan data ruang kerja ke Azure Monitor menggunakan templat Resource Manager
Tutorial ini memandu Anda melalui konfigurasi transformasi sampel dalam aturan pengumpulan data ruang kerja menggunakan templat Resource Manager. Transformasi di Azure Monitor memungkinkan Anda memfilter atau mengubah data yang masuk sebelum dikirim ke tujuannya. Transformasi ruang kerja memberikan dukungan untuk transformasi waktu penyerapan bagi alur kerja yang belum menggunakan alur penyerapan data Azure Monitor.
Transformasi ruang kerja disimpan bersama dalam satu aturan pengumpulan data (DCR) untuk ruang kerja, yang disebut DCR ruang kerja. Setiap transformasi dikaitkan dengan tabel tertentu. Transformasi diterapkan ke semua data yang dikirim ke tabel ini dari alur kerja apa pun yang tidak menggunakan DCR.
Catatan
Tutorial ini menggunakan templat Resource Manager dan REST API untuk mengonfigurasi transformasi ruang kerja. Lihat Tutorial: Menambahkan transformasi dalam aturan pengumpulan data ruang kerja ke Azure Monitor menggunakan portal Azure untuk tutorial yang sama menggunakan portal Azure.
Dalam tutorial ini, Anda mempelajari caranya:
- Konfigurasikan transformasi ruang kerja untuk tabel di ruang kerja Analisis Log.
- Menulis kueri log untuk transformasi waktu penyerapan.
Catatan
Tutorial ini menggunakan PowerShell dari Azure Cloud Shell untuk melakukan panggilan REST API menggunakan API Tabel Azure Monitor dan portal Microsoft Azure untuk memasang templat Resource Manager. Anda dapat menggunakan metode lain guna melakukan panggilan ini.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:
- Ruang kerja Log Analitik tempat Anda memiliki setidaknya hak kontributor.
- Izin untuk membuat objek Aturan Pengumpulan Data di ruang kerja.
- Tabel harus sudah memiliki beberapa data.
- Tabel tidak dapat ditautkan ke DCR transformasi ruang kerja.
Gambaran umum tutorial
Dalam tutorial ini, Anda akan mengurangi kebutuhan penyimpanan untuk tabel LAQueryLogs
dengan memfilter rekaman tertentu. Anda juga akan menghapus konten kolom saat mengurai data kolom untuk menyimpan sepotong data di kolom kustom. Tabel LAQueryLogs dibuat saat Anda mengaktifkan audit kueri log di ruang kerja, tetapi hanya digunakan sebagai sampel untuk tutorial. Anda dapat menggunakan proses dasar yang sama ini untuk membuat transformasi untuk tabel yang didukung di ruang kerja Log Analytics.
Mengaktifkan log audit kueri
Anda perlu mengaktifkan pengauditan kueri untuk ruang kerja Anda guna membuat tabel LAQueryLogs
yang akan Anda kerjakan. Ini tidak diperlukan untuk semua transformasi waktu penyerapan. Ini hanya untuk menghasilkan data sampel yang akan digunakan transformasi sampel ini.
Dari menu Ruang kerja Log Analytics di portal Azure, pilih Pengaturan diagnostik lalu Tambahkan pengaturan diagnostik.
Berikan nama untuk pengaturan diagnostik dan pilih ruang kerja sehingga data audit disimpan di ruang kerja yang sama. Pilih kategori Audit lalu klik Simpan untuk menyimpan pengaturan diagnostik dan tutup halaman pengaturan diagnostik.
Pilih Log lalu jalankan beberapa kueri untuk mengisi
LAQueryLogs
dengan beberapa data. Kueri ini tidak selalu mengembalikan data apa pun.
Memperbarui skema tabel
Sebelum Anda dapat membuat transformasi, dua perubahan berikut harus dilakukan pada tabel:
- Tabel harus diaktifkan untuk transformasi ruang kerja. Ini diperlukan untuk tabel apa pun yang akan ditransformasi, meskipun transformasi tidak mengubah skema tabel.
- Setiap kolom tambahan yang diisi oleh transformasi harus ditambahkan ke tabel.
Gunakan API Tabel - Perbarui untuk mengonfigurasi tabel dengan kode PowerShell di bawah ini. Memanggil API akan mengaktifkan tabel untuk transformasi ruang kerja, terlepas dari apakah kolom khusus ditentukan atau tidak. Dalam sampel ini, ini menyertakan kolom kustom yang disebut Resources_CF yang akan diisi dengan kueri transformasi.
Penting
Setiap kolom kustom yang ditambahkan ke tabel bawaan harus diakhiri dengan _CF. Kolom yang ditambahkan ke tabel kustom (tabel dengan nama yang berakhir _CL) tidak perlu memiliki akhiran ini.
Klik tombol Cloud Shell di portal Azure dan pastikan lingkungan diatur ke PowerShell.
Salin kode PowerShell berikut dan ganti parameter Path dengan detail untuk ruang kerja Anda.
$tableParams = @' { "properties": { "schema": { "name": "LAQueryLogs", "columns": [ { "name": "Resources_CF", "description": "The list of resources, this query ran against", "type": "string", "isDefaultDisplay": true, "isHidden": false } ] } } } '@ Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/LAQueryLogs?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Tempelkan kode ke perintah Cloud Shell untuk menjalankannya.
Anda dapat memverifikasi bahwa kolom ditambahkan dengan membuka menu ruang kerja Log Analytics di portal Microsoft Azure. Pilih Log untuk membuka Log Analytics lalu perluas tabel
LAQueryLogs
untuk melihat kolomnya.
Tentukan kueri transformasi
Gunakan Log Analytics untuk menguji kueri transformasi sebelum menambahkannya ke aturan pengumpulan data.
Buka ruang kerja Anda di menu ruang kerja Log Analytics di portal Microsoft Azure dan pilih Log untuk membuka Log Analytics.
Jalankan kueri berikut untuk melihat isi tabel
LAQueryLogs
. Perhatikan isi kolomRequestContext
. Transformasi akan mengambil nama ruang kerja dari kolom ini dan menghapus sisa data di dalamnya.LAQueryLogs | take 10
Ubah kueri menjadi berikut:
LAQueryLogs | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Workspace_CF = tostring(Context['workspaces'][0]) | project-away RequestContext, Context
Ini membuat perubahan berikut:
- Hilangkan baris yang terkait dengan kueri tabel
LAQueryLogs
itu sendiri untuk menghemat ruang karena entri log ini tidak berguna. - Tambahkan kolom untuk nama ruang kerja yang dikueri.
- Hapus data dari kolom
RequestContext
untuk menghemat ruang.
- Hilangkan baris yang terkait dengan kueri tabel
Buat perubahan berikut pada kueri untuk menggunakannya dalam transformasi:
- Alih-alih menentukan nama tabel (
LAQueryLogs
dalam hal ini) sebagai sumber data untuk kueri ini, gunakan kata kuncisource
. Ini adalah tabel virtual yang selalu mewakili data yang masuk dalam kueri transformasi. - Hapus operator apa pun yang tidak didukung oleh transformasi kueri. Lihat Fitur KQL yang didukung untuk daftar detail operator yang didukung.
- Ratakan kueri ke satu baris sehingga dapat masuk ke dalam DCR JSON.
Berikut ini adalah kueri yang akan Anda gunakan dalam transformasi setelah modifikasi ini:
source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''
- Alih-alih menentukan nama tabel (
Buat aturan pengumpulan data (DCR)
Karena ini adalah transformasi pertama di ruang kerja, Anda perlu membuat DCR transformasi ruang kerja. Jika Anda membuat transformasi untuk tabel lain di ruang kerja yang sama, tabel tersebut akan disimpan di DCR yang sama.
Di kotak pencarian portal Azure, ketik templat lalu pilih Sebarkan templat kustom.
Klik Buat templat Anda sendiri di editor.
Tempelkan templat Resource Manager di bawah ini ke penyunting lalu klik Simpan. Template ini mendefinisikan DCR dan berisi kueri transformasi. Anda tidak perlu memodifikasi template ini karena akan mengumpulkan nilai untuk parameternya.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "dataCollectionRuleName": { "type": "string", "metadata": { "description": "Specifies the name of the Data Collection Rule to create." } }, "location": { "type": "string", "defaultValue": "westus2", "allowedValues": [ "westus2", "eastus2", "eastus2euap" ], "metadata": { "description": "Specifies the location in which to create the Data Collection Rule." } }, "workspaceResourceId": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the Log Analytics workspace to use." } } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRules", "name": "[parameters('dataCollectionRuleName')]", "location": "[parameters('location')]", "apiVersion": "2021-09-01-preview", "kind": "WorkspaceTransforms", "properties": { "destinations": { "logAnalytics": [ { "workspaceResourceId": "[parameters('workspaceResourceId')]", "name": "clv2ws1" } ] }, "dataFlows": [ { "streams": [ "Microsoft-Table-LAQueryLogs" ], "destinations": [ "clv2ws1" ], "transformKql": "source |where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''" } ] } } ], "outputs": { "dataCollectionRuleId": { "type": "string", "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]" } } }
Di layar Penyebaran kustom, tentukan grup Langganan dan Sumber Daya untuk menyimpan aturan pengumpulan data lalu berikan nilai yang ditentukan dalam templat. Ini termasuk Nama untuk aturan pengumpulan data dan ID Sumber Daya Ruang Kerja yang Anda kumpulkan di langkah sebelumnya. Lokasi harus berupa lokasi yang sama dengan ruang kerja. Wilayah sudah akan diisi dan digunakan untuk lokasi aturan pengumpulan data.
Klik Tinjau + buat lalu Buat saat Anda meninjau detailnya.
Saat penyebaran selesai, perluas kotak Detail penyebaran dan klik aturan pengumpulan data Anda guna melihat detailnya. Klik Tampilan JSON.
Salin ID Sumber Daya untuk aturan pengumpulan data. Anda akan menggunakan di langkah berikutnya.
Menautkan ruang kerja ke DCR
Langkah terakhir untuk mengaktifkan transformasi adalah menghubungkan DCR ke ruang kerja.
Penting
Satu ruang kerja hanya dapat dihubungkan ke satu DCR, dan DCR yang ditautkan harus memuat ruang kerja ini sebagai tujuan.
Gunakan API Workspaces - Update untuk mengonfigurasi tabel dengan kode PowerShell di bawah ini.
Klik tombol Cloud Shell untuk membuka Cloud Shell lagi. Salin kode PowerShell berikut dan ganti parameter dengan nilai untuk ruang kerja dan DCR Anda.
$defaultDcrParams = @' { "properties": { "defaultDataCollectionRuleResourceId": "/subscriptions/{subscription}/resourceGroups/{resourcegroup}/providers/Microsoft.Insights/dataCollectionRules/{DCR}" } } '@ Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}?api-version=2021-12-01-preview" -Method PATCH -payload $defaultDcrParams
Tempelkan kode ke perintah Cloud Shell untuk menjalankannya.
Menguji Transformasi
Biarkan sekitar 30 menit agar transformasi berjalan, dan Anda kemudian dapat mengujinya dengan menjalankan kueri terhadap tabel. Hanya data yang dikirim ke tabel setelah transformasi diterapkan yang akan terpengaruh.
Untuk tutorial ini, jalankan beberapa contoh kueri untuk mengirim data ke tabel LAQueryLogs
. Sertakan beberapa kueri terhadap LAQueryLogs
sehingga Anda dapat memverifikasi bahwa transformasi memfilter rekaman ini. Perhatikan bahwa output memiliki kolom Workspace_CF
baru, dan tidak ada rekaman untuk LAQueryLogs
.
Pemecahan Masalah
Bagian ini menjelaskan berbagai kondisi kesalahan yang mungkin Anda terima dan cara memperbaikinya.
IntelliSense di Log Analytics tidak mengenali kolom baru di tabel
Cache yang menggerakkan IntelliSense mungkin memerlukan waktu hingga 24 jam untuk diperbarui.
Transformasi pada kolom dinamis tidak berfungsi
Saat ini ada masalah umum yang memengaruhi kolom dinamis. Solusi sementara adalah secara eksplisit mengurai data kolom dinamis menggunakan parse_json()
sebelum melakukan operasi apa pun terhadapnya.