Öğretici: Veri toplama kuralını (DCR) düzenleme
Bu öğreticide, önceden sağlanmış olan Veri Toplama Kurallarının (DCR) tanımının nasıl düzenlendiği, komut satırı araçlarının nasıl kullanılacağı 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
Not
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.
Önkoşullar
Bu öğreticiyi tamamlamak için aşağıdakiler gerekir:
- En az katkıda bulunan haklarına sahip olduğunuz Log Analytics çalışma alanı.
- Çalışma alanında Veri Toplama Kuralı nesneleri oluşturma izinleri.
- PowerShell'in güncel sürümü. Azure Cloud Shell kullanılması önerilir.
Öğ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 azure tablosuna veri 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.
Azure portalında Cloud Shell düğmesine tıklayın ve ortamın PowerShell olarak ayarlandığından emin olun.
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"
DCR'de KQL dönüşümünü değiştirerek RequestType'ın ancak GET
herhangi bir şey olduğu satırları bırakalım.
Seçtiğiniz bir düzenleyiciyi kullanarak düzenlemek üzere önceki bölümde oluşturulan dosyayı açın.
Ö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"
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"
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önderilerek ARM API'ye HTTP çağrısıyla PUT
gerçekleştirilir.
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.
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
Başarılı bir çağrıda, DCR'nizin artık güncelleştirildiğini belirten durum koduyla
200
yanıtı almanız gerekir.Artık JSON View 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/bar
sahip 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.