Självstudie: Redigera en datainsamlingsregel (DCR)
I den här självstudien beskrivs hur du redigerar definitionen av datainsamlingsregeln (DCR) som redan har etablerats med kommandoradsverktyg.
I den här självstudien lär du dig att:
- Utnyttja befintliga portalfunktioner för att skapa domänkontrollanter i förväg
- Hämta innehållet i en datainsamlingsregel med hjälp av ARM API-anrop
- Tillämpa ändringar i en datainsamlingsregel med HJÄLP av ARM API-anrop
- Automatisera processen för DCR-uppdatering med hjälp av PowerShell-skript
Kommentar
I den här självstudien går vi igenom en metod för att redigera en befintlig DCR. Se Skapa och redigera regler för datainsamling (DCR) i Azure Monitor för andra metoder.
Förutsättningar
För att slutföra den här självstudien behöver du följande:
- Log Analytics-arbetsyta där du har minst deltagarbehörighet.
- Behörigheter för att skapa datainsamlingsregelobjekt på arbetsytan.
- Uppdaterad version av PowerShell. Du rekommenderas att använda Azure Cloud Shell.
Översikt över självstudier
När du går igenom guiden på portalen är det enklaste sättet att konfigurera inmatningen av anpassade data till Log Analytics. I vissa fall kanske du vill uppdatera datainsamlingsregeln senare till:
- Ändra inställningar för datainsamling (t.ex. slutpunkt för datainsamling som är associerad med DCR)
- Uppdatera dataparsnings- eller filtreringslogik för dataströmmen
- Ändra datamål (t.ex. skicka data till en Azure-tabell, eftersom det här alternativet inte erbjuds direkt som en del av guiden dcr-baserad anpassad logg)
I den här självstudien konfigurerar du först inmatning av en anpassad logg. Sedan ändrar du KQL-omvandlingen för din anpassade logg så att den innehåller ytterligare filtrering och tillämpar ändringarna på din DCR. Slutligen ska vi kombinera alla redigeringsåtgärder till ett enda PowerShell-skript, som kan användas för att redigera valfri DCR av någon av ovanstående orsaker.
Konfigurera ny anpassad logg
Börja med att konfigurera en ny anpassad logg. Följ självstudie: Skicka anpassade loggar till Azure Monitor-loggar med hjälp av Azure-portalen (förhandsversion). Observera resurs-ID:t för dcr som skapats.
Hämta DCR-innehåll
För att kunna uppdatera DCR hämtar vi dess innehåll och sparar det som en fil som kan redigeras ytterligare.
Klicka på Cloud Shell-knappen i Azure-portalen och se till att miljön är inställd på PowerShell.
Kör följande kommandon för att hämta DCR-innehåll och spara det i en fil. Ersätt
<ResourceId>
med DCR ResourceID och<FilePath>
med namnet på filen som ska lagra 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
Redigera DCR
Nu när DCR-innehåll lagras som en JSON-fil kan du använda valfri redigerare för att göra ändringar i DCR. Du kanske föredrar att ladda ned filen från Cloud Shell-miljön om du använder en.
Du kan också använda kodredigerare som medföljer miljön. Om du till exempel sparade din DCR i en fil med namnet temp.dcr
på din Cloud Drive kan du använda följande kommando för att öppna DCR för redigering direkt i Cloud Shell-fönstret:
code "temp.dcr"
Nu ska vi ändra KQL-omvandlingen i DCR för att släppa rader där RequestType är något annat än "GET".
- Öppna filen som skapades i föregående del för redigering med valfri redigerare.
- Leta upp den rad som innehåller
”transformKql”
attributet, som, om du följde självstudien för att skapa anpassade loggar, bör se ut ungefär så här:"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"
- Ändra KQL-transformering så att ytterligare filter inkluderas av 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"
- Spara filen med ändrat DCR-innehåll.
Tillämpa ändringar
Vårt sista steg är att uppdatera DCR tillbaka i systemet. Detta görs genom HTTP-anropet PUT till ARM API, med uppdaterat DCR-innehåll som skickas i HTTP-begärandetexten.
- Om du använder Azure Cloud Shell sparar du filen och stänger den inbäddade redigeraren eller laddar upp den ändrade DCR-filen tillbaka till Cloud Shell-miljön.
- Kör följande kommandon för att läsa in DCR-innehåll från filen och placera HTTP-anrop för att uppdatera DCR i systemet. Ersätt
<ResourceId>
med DCR ResourceID och<FilePath>
med namnet på filen som ändrades i föregående del av självstudien. Du kan utelämna de två första raderna om du läser och skriver till DCR i samma PowerShell-session.$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
- Vid lyckat anrop bör du få svaret med statuskoden "200", vilket anger att din DCR nu har uppdaterats.
- Du kan nu navigera till din DCR och granska dess innehåll på portalen via funktionen "JSON View" eller upprepa den första delen av självstudien för att hämta DCR-innehåll till en fil.
Sätta ihop allt
Nu, när vi vet hur man läser och uppdaterar innehållet i en DCR, ska vi sätta ihop allt i verktygsskriptet, som kan användas för att utföra båda åtgärderna tillsammans.
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
Så här använder du det här verktyget
Förutsatt att du har sparat skriptet som en fil med namnet DCREditor.ps1
och behöver ändra en datainsamlingsregel med resurs-ID /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar
för kan detta utföras genom att köra följande kommando:
.\DCREditor.ps1 "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar"
DCR-innehåll öppnas i inbäddad kodredigerare. När redigeringen är klar tillämpar "Y" i skriptprompten ändringar tillbaka till DCR.
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för