Tutorial: Mengedit aturan pengumpulan data (DCR)

Tutorial ini menjelaskan cara mengedit definisi Aturan Pengumpulan Data (DCR) yang telah disediakan menggunakan alat baris perintah.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Memanfaatkan fungsionalitas portal yang ada untuk membuat DCR sebelumnya
  • Mendapatkan konten Aturan Pengumpulan Data menggunakan panggilan ARM API
  • Menerapkan perubahan pada Aturan Pengumpulan Data menggunakan panggilan ARM API
  • Mengotomatiskan proses pembaruan DCR menggunakan skrip PowerShell

Catatan

Tutorial ini berjalan melalui satu metode untuk mengedit DCR yang ada. Lihat Membuat dan mengedit aturan pengumpulan data (DCR) di Azure Monitor untuk metode lain.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:

Gambaran umum tutorial

Saat melalui wizard di portal adalah cara paling sederhana untuk menyiapkan penyerapan data kustom Anda ke Analitik Log, dalam beberapa kasus Anda mungkin ingin memperbarui Aturan Pengumpulan Data nanti ke:

  • Mengubah pengaturan pengumpulan data (misalnya Titik Akhir Pengumpulan Data, yang terkait dengan DCR)
  • Memperbarui logika penguraian atau pemfilteran data untuk aliran data Anda
  • Ubah tujuan data (misalnya kirim data ke tabel Azure, karena opsi ini tidak ditawarkan secara langsung sebagai bagian dari wizard log kustom berbasis DCR)

Dalam tutorial ini, Anda pertama kali menyiapkan penyerapan log kustom. Kemudian Anda mengubah transformasi KQL untuk log kustom Anda untuk menyertakan pemfilteran tambahan dan menerapkan perubahan pada DCR Anda. Terakhir, kita akan menggabungkan semua operasi pengeditan ke dalam satu skrip PowerShell, yang dapat digunakan untuk mengedit DCR apa pun karena salah satu alasan yang disebutkan di atas.

Menyiapkan log kustom baru

Mulailah dengan menyiapkan log kustom baru. Tutorial: Mengirim log kustom ke Log Azure Monitor menggunakan portal Azure (pratinjau). Perhatikan ID sumber daya DCR yang dibuat.

Mengambil konten DCR

Untuk memperbarui DCR, kita akan mengambil kontennya dan menyimpannya sebagai file, yang dapat diedit lebih lanjut.

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

    Screenshot of opening cloud shell

  2. Jalankan perintah berikut untuk mengambil konten DCR dan menyimpannya ke file. Ganti <ResourceId> dengan DCR ResourceID dan <FilePath> dengan nama file untuk menyimpan DCR.

    $ResourceId = "<ResourceId>" # Resource ID of the DCR to edit
    $FilePath = "<FilePath>" # Store DCR content in this file
    $DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2022-06-01") -Method GET
    $DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File -FilePath $FilePath
    

Edit DCR

Sekarang, ketika konten DCR disimpan sebagai file JSON, Anda dapat menggunakan editor pilihan Anda untuk membuat perubahan di DCR. Anda mungkin lebih memilih mengunduh file dari lingkungan Cloud Shell, jika Anda menggunakannya.

Atau Anda dapat menggunakan editor kode yang disediakan dengan lingkungan. Misalnya, jika Anda menyimpan DCR dalam file bernama temp.dcr di Cloud Drive, Anda dapat menggunakan perintah berikut untuk membuka DCR untuk pengeditan tepat di jendela Cloud Shell:

code "temp.dcr"

Mari kita ubah transformasi KQL dalam DCR untuk menghilangkan baris di mana RequestType adalah apa saja selain "GET".

  1. Buka file yang dibuat di bagian sebelumnya untuk pengeditan menggunakan editor pilihan Anda.
  2. Temukan baris yang berisi ”transformKql” atribut, yang, jika Anda mengikuti tutorial untuk pembuatan log kustom, akan terlihat mirip dengan ini:
    "transformKql": "  source\n    | extend TimeGenerated = todatetime(Time)\n    | parse RawData with \n    ClientIP:string\n    ' ' *\n    ' ' *\n    ' [' * '] \"' RequestType:string\n    \" \" Resource:string\n    \" \" *\n    '\" ' ResponseCode:int\n    \" \" *\n    | where ResponseCode != 200\n    | project-away Time, RawData\n"
    
  3. Ubah transformasi KQL untuk menyertakan filter tambahan menurut RequestType
    "transformKql": "  source\n    | where RawData contains \"GET\"\n     | extend TimeGenerated = todatetime(Time)\n    | parse RawData with \n    ClientIP:string\n    ' ' *\n    ' ' *\n    ' [' * '] \"' RequestType:string\n    \" \" Resource:string\n    \" \" *\n    '\" ' ResponseCode:int\n    \" \" *\n    | where ResponseCode != 200\n    | project-away Time, RawData\n"
    
  4. Simpan file dengan konten DCR yang dimodifikasi.

Terapkan perubahan

Langkah terakhir kami adalah memperbarui DCR kembali dalam sistem. Hal ini dicapai dengan panggilan HTTP "PUT" ke ARM API, dengan konten DCR terbaru dikirim dalam isi permintaan HTTP.

  1. Jika Anda menggunakan Azure Cloud Shell, simpan file dan tutup editor yang disematkan, atau unggah file DCR yang dimodifikasi kembali ke lingkungan Cloud Shell.
  2. Jalankan perintah berikut untuk memuat konten DCR dari file dan lakukan panggilan HTTP untuk memperbarui DCR dalam sistem. Ganti <ResourceId> dengan DCR ResourceID dan <FilePath> dengan nama file yang dimodifikasi di bagian tutorial sebelumnya. Anda dapat menghilangkan dua baris pertama jika Anda membaca dan menulis ke DCR dalam sesi PowerShell yang sama.
    $ResourceId = "<ResourceId>" # Resource ID of the DCR to edit
    $FilePath = "<FilePath>" # Store DCR content in this file
    $DCRContent = Get-Content $FilePath -Raw 
    Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2022-06-01") -Method PUT -Payload $DCRContent 
    
  3. Setelah panggilan berhasil, Anda harus mendapatkan respons dengan kode status "200", yang menunjukkan bahwa DCR Anda sekarang diperbarui.
  4. Anda sekarang dapat menavigasi ke DCR Anda dan memeriksa kontennya di portal melalui fungsi "Tampilan JSON", atau Anda dapat mengulangi bagian pertama tutorial untuk mengambil konten DCR ke dalam file.

Menggabungkan semuanya

Sekarang, ketika kita tahu cara membaca dan memperbarui konten DCR, mari kita satukan semuanya ke dalam skrip utilitas, yang dapat digunakan untuk melakukan kedua operasi bersama-sama.

param ([Parameter(Mandatory=$true)] $ResourceId)

# get DCR content and put into a file
$FilePath = "temp.dcr"
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2022-06-01") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File $FilePath

# Open DCR in code editor
code $FilePath | Wait-Process

#Wait for confirmation to apply changes
$Output = Read-Host "Apply changes to DCR (Y/N)? "
if ("Y" -eq $Output.toupper())
{ 
	#write DCR content back from the file
	$DCRContent = Get-Content $FilePath -Raw
	Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2022-06-01") -Method PUT -Payload $DCRContent		
}

#Delete temporary file
Remove-Item $FilePath

Cara menggunakan utilitas ini

Dengan asumsi Anda menyimpan skrip sebagai file, bernama DCREditor.ps1 dan perlu mengubah Aturan Pengumpulan Data dengan ID sumber daya /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar, hal ini dapat dicapai dengan menjalankan perintah berikut:

.\DCREditor.ps1 "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar"

Konten DCR terbuka di editor kode yang disematkan. Setelah pengeditan selesai, memasukkan "Y" pada perintah skrip menerapkan perubahan kembali ke DCR.

Langkah berikutnya