Samouczek: edytowanie reguły zbierania danych (DCR)
W tym samouczku opisano sposób edytowania definicji reguł zbierania danych (DCR), które zostały już aprowizowanych 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 niezbędne 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 (na przykład punktu końcowego zbierania danych skojarzonego z kontrolerem domeny)
- Aktualizowanie logiki analizowania lub filtrowania danych dla strumienia danych
- Zmienianie miejsca docelowego danych (na przykład 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.
Kliknij przycisk Cloud Shell w witrynie Azure Portal i upewnij się, że środowisko jest ustawione na program PowerShell.
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 kontrolerze domeny, aby usunąć wiersze, w których element RequestType jest dowolny, ale GET
.
Otwórz plik utworzony w poprzedniej części do edycji przy użyciu wybranego edytora.
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"
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"
Zapisz plik ze zmodyfikowaną zawartością dcR.
Stosowanie zmian
Ostatnim krokiem jest ponowne zaktualizowanie kontrolera domeny w systemie. Jest to realizowane przez PUT
wywołanie HTTP do interfejsu API usługi ARM ze zaktualizowaną zawartością dcR wysłaną w treści żądania HTTP.
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.
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
Po pomyślnym wywołaniu należy uzyskać odpowiedź z kodem
200
stanu wskazującym, że kontroler domeny jest teraz aktualizowany.Teraz możesz przejść do kontrolera domeny i sprawdzić jego zawartość w portalu za pomocą funkcji JSON View 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/bar
zasobu , 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.