Öğretici: Veri toplama kuralını (DCR) düzenleme

Bu öğreticide, komut satırı araçları kullanılarak önceden sağlanmış olan Veri Toplama Kuralı (DCR) tanımının nasıl düzenlendiği açıklanmaktadır.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • DCR'leri önceden oluşturmak için mevcut portal işlevselliğinden yararlanma
  • ARM API çağrısı kullanarak Veri Toplama Kuralının içeriğini alma
  • ARM API çağrısını kullanarak Veri Toplama Kuralına değişiklik uygulama
  • PowerShell betiklerini kullanarak DCR güncelleştirme işlemini otomatikleştirme

Dekont

Bu öğretici, mevcut bir DCR'yi düzenlemek için tek bir yöntemde yol gösterir. Diğer yöntemler için bkz . Azure İzleyici'de veri toplama kuralları (DCR) oluşturma ve düzenleme.

Ön koşullar

Bu öğreticiyi tamamlamak için aşağıdakiler gerekir:

Öğreticiye genel bakış

Portaldaki sihirbazdan geçmek, özel verilerinizin Log Analytics'e alımını ayarlamanın en basit yolu olsa da, bazı durumlarda Veri Toplama Kuralınızı daha sonra şu şekilde güncelleştirmek isteyebilirsiniz:

  • Veri toplama ayarlarını değiştirme (örneğin, DCR ile ilişkili Veri Toplama Uç Noktası)
  • Veri akışınız için veri ayrıştırma veya filtreleme mantığını güncelleştirme
  • Veri hedefini değiştirme (örneğin, bu seçenek doğrudan DCR tabanlı özel günlük sihirbazının bir parçası olarak sunulmadığından verileri bir Azure tablosuna gönderme)

Bu öğreticide, önce özel bir günlüğün alımını ayarlarsınız. Ardından özel günlüğünüz için KQL dönüştürmesini ek filtreleme içerecek şekilde değiştirir ve değişiklikleri DCR'nize uygularsınız. Son olarak, tüm düzenleme işlemlerini tek bir PowerShell betiğinde birleştireceğiz. Bu betik, yukarıda belirtilen nedenlerden herhangi biri nedeniyle herhangi bir DCR'yi düzenlemek için kullanılabilir.

Yeni özel günlüğü ayarlama

Yeni bir özel günlük ayarlayarak başlayın. Öğretici: Azure portalını kullanarak Azure İzleyici Günlüklerine özel günlükler gönderme (önizleme) öğreticisini izleyin. Oluşturulan DCR'nin kaynak kimliğini not edin.

DCR içeriğini alma

DCR'yi güncelleştirmek için içeriğini alıp daha fazla düzenlenebilen bir dosya olarak kaydedeceğiz.

  1. Azure portalında Cloud Shell düğmesine tıklayın ve ortamın PowerShell olarak ayarlandığından emin olun.

    Screenshot of opening cloud shell

  2. DCR içeriğini almak ve bir dosyaya kaydetmek için aşağıdaki komutları yürütebilirsiniz. değerini DCR ResourceID ile ve <FilePath> DCR'yi depolamak için dosyanın adıyla değiştirin<ResourceId>.

    $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
    

DCR'yi düzenle

Artık DCR içeriği bir JSON dosyası olarak depolandığında, DCR'de değişiklik yapmak için tercih ettiğiniz bir düzenleyiciyi kullanabilirsiniz. Kullanıyorsanız dosyayı Cloud Shell ortamından indirmeyi tercih edebilirsiniz.

Alternatif olarak, ortamla birlikte sağlanan kod düzenleyicilerini de kullanabilirsiniz. Örneğin, DCR'nizi Cloud Drive'ınızdaki adlı temp.dcr bir dosyaya kaydettiyseniz, aşağıdaki komutu kullanarak doğrudan Cloud Shell penceresinde düzenleme için DCR'yi açabilirsiniz:

code "temp.dcr"

Şimdi DCR içindeki KQL dönüşümünü değiştirerek RequestType'ın "GET" dışında herhangi bir şey olduğu satırları bırakalım.

  1. Seçtiğiniz bir düzenleyiciyi kullanarak düzenlemek üzere önceki bölümde oluşturulan dosyayı açın.
  2. Özel günlük oluşturma öğreticisini izlediyseniz şuna benzer olması gereken özniteliği içeren ”transformKql” satırı bulun:
    "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. RequestType'a göre ek filtre eklemek için KQL dönüştürmesini değiştirme
    "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. Dosyayı değiştirilmiş DCR içeriğiyle kaydedin.

Değişiklikleri uygulama

Son adımımız DCR'yi sisteme geri güncelleştirmektir. Bu, HTTP isteği gövdesinde güncelleştirilmiş DCR içeriği gönderilen ARM API'sine "PUT" HTTP çağrısıyla gerçekleştirilir.

  1. Azure Cloud Shell kullanıyorsanız, dosyayı kaydedin ve eklenmiş düzenleyiciyi kapatın veya değiştirilmiş DCR dosyasını Cloud Shell ortamına geri yükleyin.
  2. Dosyadan DCR içeriğini yüklemek ve sistemdeki DCR'yi güncelleştirmek için HTTP çağrısı yerleştirmek için aşağıdaki komutları yürütebilirsiniz. değerini DCR ResourceID ile ve <FilePath> öğreticinin önceki bölümünde değiştirilen dosyanın adıyla değiştirin<ResourceId>. Aynı PowerShell oturumunda DCR'yi okuyup yazarsanız ilk iki satırı atlayabilirsiniz.
    $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. Başarılı bir çağrıda, DCR'nizin artık güncelleştirildiğini belirten "200" durum koduna sahip yanıtı almanız gerekir.
  4. Artık "JSON Görünümü" işlevi aracılığıyla DCR'nize gidebilir ve portaldaki içeriğini inceleyebilir veya DCR içeriğini bir dosyaya almak için öğreticinin ilk bölümünü yineleyebilirsiniz.

Her şeyi bir araya getirmek

Şimdi, bir DCR içeriğinin nasıl okunacağını ve güncelleştirileceğini bildiğimizde, her şeyi birlikte her iki işlemi birlikte gerçekleştirmek için kullanılabilecek yardımcı program betiğine ekleyelim.

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

Bu yardımcı programı kullanma

Betiği adlı DCREditor.ps1 bir dosya olarak kaydettiğinizi ve kaynak kimliğine /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/barsahip bir Veri Toplama Kuralını değiştirmeniz gerektiğini varsayarsak, bu işlem aşağıdaki komut çalıştırılarak gerçekleştirilebilir:

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

DCR içeriği eklenmiş kod düzenleyicisinde açılır. Düzenleme tamamlandıktan sonra betik istemine "Y" girildiğinde değişiklikler DCR'ye geri uygulanır.

Sonraki adımlar