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:

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.

  1. Dari menu Ruang kerja Log Analytics di portal Azure, pilih Pengaturan diagnostik lalu Tambahkan pengaturan diagnostik.

    Cuplikan layar pengaturan diagnostik.

  2. 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.

    Cuplikan layar pengaturan diagnostik baru.

  3. Pilih Log lalu jalankan beberapa kueri untuk mengisi LAQueryLogs dengan beberapa data. Kueri ini tidak selalu mengembalikan data apa pun.

    Cuplikan layar sampel kueri log.

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.

  1. Klik tombol Cloud Shell di portal Azure dan pastikan lingkungan diatur ke PowerShell.

    Cuplikan layar membuka Cloud Shell.

  2. 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
    
  3. Tempelkan kode ke perintah Cloud Shell untuk menjalankannya.

    Cuplikan layar skrip di Cloud Shell.

  4. 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.

    Cuplikan layar Analitik Log dengan kolom baru.

Tentukan kueri transformasi

Gunakan Log Analytics untuk menguji kueri transformasi sebelum menambahkannya ke aturan pengumpulan data.

  1. Buka ruang kerja Anda di menu ruang kerja Log Analytics di portal Microsoft Azure dan pilih Log untuk membuka Log Analytics.

  2. Jalankan kueri berikut untuk melihat isi tabel LAQueryLogs. Perhatikan isi kolom RequestContext. Transformasi akan mengambil nama ruang kerja dari kolom ini dan menghapus sisa data di dalamnya.

    LAQueryLogs
    | take 10
    

    Cuplikan layar kueri awal di Analitik Log.

  3. 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.

    Cuplikan layar kueri yang dimodifikasi di Analitik Log.

  4. 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 kunci source. 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 = ''
    

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.

  1. Di kotak pencarian portal Azure, ketik templat lalu pilih Sebarkan templat kustom.

    Cuplikan layar untuk menyebarkan templat kustom.

  2. Klik Buat templat Anda sendiri di editor.

    Cuplikan layar untuk membangun templat di penyunting.

  3. 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.

    Cuplikan layar untuk mengedit templat Resource Manager.

    {
        "$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'))]"
            }
        }
    }
    
  4. 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.

    Cuplikan layar untuk mengedit nilai penyebaran kustom.

  5. Klik Tinjau + buat lalu Buat saat Anda meninjau detailnya.

  6. Saat penyebaran selesai, perluas kotak Detail penyebaran dan klik aturan pengumpulan data Anda guna melihat detailnya. Klik Tampilan JSON.

    Cuplikan layar untuk detail aturan pengumpulan data.

  7. Salin ID Sumber Daya untuk aturan pengumpulan data. Anda akan menggunakan di langkah berikutnya.

    Cuplikan layar untuk tampilan JSON aturan pengumpulan data.

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.

  1. 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
    
  2. Tempelkan kode ke perintah Cloud Shell untuk menjalankannya.

    Cuplikan layar skrip saat menautkan ruang kerja ke DCR.

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.

Langkah berikutnya