Udostępnij za pośrednictwem


Samouczek: edytowanie reguły zbierania danych (DCR)

W tym samouczku opisano sposób edytowania definicji reguły zbierania danych (DCR), która została już aprowizowana przy użyciu narzędzi wiersza polecenia.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Korzystanie z istniejącej funkcji portalu do wstępnego tworzenia kontrolerów domeny
  • Pobieranie zawartości reguły zbierania danych przy użyciu wywołania interfejsu API usługi ARM
  • Stosowanie zmian do reguły zbierania danych przy użyciu wywołania interfejsu API usługi ARM
  • Automatyzowanie procesu aktualizacji dcR przy użyciu skryptów programu PowerShell

Uwaga

W tym samouczku przedstawiono jedną metodę edytowania istniejącego kontrolera domeny. Zobacz Tworzenie i edytowanie reguł zbierania danych (DCR) w usłudze Azure Monitor , aby zapoznać się z innymi metodami.

Wymagania wstępne

Do ukończenia tego samouczka potrzebne są następujące elementy:

  • Obszar roboczy usługi Log Analytics, w którym masz co najmniej prawa współautora.
  • Uprawnienia do tworzenia obiektów reguły zbierania danych w obszarze roboczym.
  • Aktualna wersja programu PowerShell. Zaleca się korzystanie z usługi Azure Cloud Shell.

Omówienie samouczka

Podczas pracy z kreatorem w portalu najprostszym sposobem skonfigurowania pozyskiwania danych niestandardowych w usłudze Log Analytics w niektórych przypadkach może być chcieć zaktualizować regułę zbierania danych później:

  • Zmienianie ustawień zbierania danych (np. punkt końcowy zbierania danych skojarzony z kontrolerem domeny)
  • Aktualizowanie logiki analizowania lub filtrowania danych dla strumienia danych
  • Zmiana miejsca docelowego danych (np. wysyłanie danych do tabeli platformy Azure, ponieważ ta opcja nie jest oferowana bezpośrednio w ramach kreatora dziennika niestandardowego opartego na kontrolerze domeny)

W tym samouczku najpierw skonfigurujesz pozyskiwanie dziennika niestandardowego. Następnie zmodyfikujesz przekształcenie KQL dla dziennika niestandardowego, aby uwzględnić dodatkowe filtrowanie i zastosować zmiany w kontrolerze domeny. Na koniec połączymy wszystkie operacje edycji w jeden skrypt programu PowerShell, który może służyć do edytowania dowolnego kontrolera domeny z dowolnego z wymienionych powyżej powodów.

Konfigurowanie nowego dziennika niestandardowego

Rozpocznij od skonfigurowania nowego dziennika niestandardowego. Postępuj zgodnie z samouczkiem: wysyłanie dzienników niestandardowych do dzienników usługi Azure Monitor przy użyciu witryny Azure Portal (wersja zapoznawcza). Zanotuj identyfikator zasobu utworzonego kontrolera domeny.

Pobieranie zawartości dcR

Aby zaktualizować kontroler domeny, pobierzemy jego zawartość i zapiszemy ją jako plik, który można edytować dalej.

  1. Kliknij przycisk Cloud Shell w witrynie Azure Portal i upewnij się, że środowisko jest ustawione na program PowerShell.

    Screenshot of opening cloud shell

  2. Wykonaj następujące polecenia, aby pobrać zawartość dcR i zapisać ją w pliku. Zastąp ciąg <ResourceId> identyfikatorem RESOURCEID dcR i <FilePath> nazwą pliku do przechowywania kontrolera domeny.

    $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
    

Edytowanie kontrolera domeny

Teraz, gdy zawartość DCR jest przechowywana jako plik JSON, możesz użyć wybranego edytora, aby wprowadzić zmiany w kontrolerze domeny. Jeśli używasz pliku, możesz wolisz pobrać plik ze środowiska usługi Cloud Shell.

Alternatywnie możesz użyć edytorów kodu dostarczanych ze środowiskiem. Jeśli na przykład zapisano kontroler domeny w pliku o nazwie temp.dcr na dysku w chmurze, możesz użyć następującego polecenia, aby otworzyć kontroler domeny do edycji bezpośrednio w oknie usługi Cloud Shell:

code "temp.dcr"

Zmodyfikujmy przekształcenie KQL w dcR, aby usunąć wiersze, w których element RequestType jest dowolny, ale "GET".

  1. Otwórz plik utworzony w poprzedniej części do edycji przy użyciu wybranego edytora.
  2. Znajdź wiersz zawierający ”transformKql” atrybut, który, jeśli wykonano czynności opisane w samouczku dotyczącym tworzenia dziennika niestandardowego, powinien wyglądać podobnie do następującego:
    "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. Modyfikowanie przekształcenia KQL w celu uwzględnienia dodatkowego filtru według parametru 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. Zapisz plik ze zmodyfikowaną zawartością dcR.

Stosowanie zmian

Ostatnim krokiem jest ponowne zaktualizowanie kontrolera domeny w systemie. Jest to realizowane przez wywołanie HTTP "PUT" do interfejsu API usługi ARM ze zaktualizowaną zawartością dcR wysłaną w treści żądania HTTP.

  1. Jeśli używasz usługi Azure Cloud Shell, zapisz plik i zamknij edytor osadzony lub przekaż zmodyfikowany plik DCR z powrotem do środowiska usługi Cloud Shell.
  2. Wykonaj następujące polecenia, aby załadować zawartość DCR z pliku i umieścić wywołanie HTTP w celu zaktualizowania kontrolera domeny w systemie. Zastąp ciąg <ResourceId> identyfikatorem ResourceID dcR i <FilePath> nazwą pliku zmodyfikowanego w poprzedniej części samouczka. W przypadku odczytu i zapisu w kontrolerze domeny w ramach tej samej sesji programu PowerShell można pominąć pierwsze dwa wiersze.
    $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. Po pomyślnym wywołaniu należy uzyskać odpowiedź z kodem stanu "200", co oznacza, że kontroler domeny jest teraz aktualizowany.
  4. Teraz możesz przejść do kontrolera domeny i sprawdzić jego zawartość w portalu za pomocą funkcji "Widok JSON" lub powtórzyć pierwszą część samouczka, aby pobrać zawartość dcR do pliku.

Łączenie wszystkich elementów

Teraz, gdy wiemy, jak odczytywać i aktualizować zawartość kontrolera domeny, połączmy wszystko ze sobą w skrypt narzędzia, który może służyć do wykonywania obu operacji razem.

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

Jak używać tego narzędzia

Zakładając, że skrypt został zapisany jako plik o nazwie DCREditor.ps1 i trzeba zmodyfikować regułę zbierania danych o identyfikatorze /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/barzasobu , można to zrobić, uruchamiając następujące polecenie:

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

Zawartość DCR zostanie otwarta w osadzonym edytorze kodu. Po zakończeniu edycji wprowadzenie ciągu "Y" w wierszu skryptu powoduje zastosowanie zmian z powrotem do kontrolera domeny.

Następne kroki