Kurz: Úprava pravidla shromažďování dat (DCR)
Tento kurz popisuje, jak upravit definici pravidla shromažďování dat (DCR), která už byla zřízena pomocí nástrojů příkazového řádku.
V tomto kurzu se naučíte:
- Využití stávajících funkcí portálu k předběžnému vytvoření řadičů domény
- Získání obsahu pravidla shromažďování dat pomocí volání rozhraní API ARM
- Použití změn v pravidle shromažďování dat pomocí volání rozhraní API ARM
- Automatizace procesu aktualizace DCR pomocí skriptů PowerShellu
Poznámka:
Tento kurz vás provede jednou metodou úprav existujícího řadiče domény. Další metody najdete v tématu Vytvoření a úprava pravidel shromažďování dat (DCR) ve službě Azure Monitor .
Předpoklady
K dokončení tohoto kurzu potřebujete následující:
- Pracovní prostor služby Log Analytics, kde máte alespoň práva přispěvatele.
- Oprávnění k vytváření objektů pravidla shromažďování dat v pracovním prostoru
- Aktuální verze PowerShellu Doporučuje se používat Azure Cloud Shell.
Přehled kurzu
Při procházení průvodce na portálu je nejjednodušší způsob, jak nastavit příjem vlastních dat do Log Analytics, v některých případech můžete později chtít aktualizovat pravidlo shromažďování dat na:
- Změna nastavení shromažďování dat (např. koncový bod shromažďování dat přidružený k DCR)
- Aktualizace logiky analýzy nebo filtrování dat pro datový proud
- Změna cíle dat (např. odeslání dat do tabulky Azure, protože tato možnost není přímo nabízena jako součást průvodce vlastním protokolem založeným na DCR)
V tomto kurzu nejprve nastavíte příjem dat vlastního protokolu. Potom upravíte transformaci KQL pro vlastní protokol tak, aby zahrnoval další filtrování a použili změny v dcR. Nakonec zkombinujeme všechny operace úprav do jednoho skriptu PowerShellu, který se dá použít k úpravě jakéhokoli řadiče domény z některého z výše uvedených důvodů.
Nastavení nového vlastního protokolu
Začněte nastavením nového vlastního protokolu. Postupujte podle kurzu: Odesílání vlastních protokolů do protokolů služby Azure Monitor pomocí webu Azure Portal (Preview) Poznamenejte si ID prostředku vytvořeného řadiče domény.
Načtení obsahu DCR
Abychom mohli aktualizovat DCR, načteme jeho obsah a uložíme ho jako soubor, který je možné dále upravit.
Klikněte na tlačítko Cloud Shell na webu Azure Portal a ujistěte se, že je prostředí nastavené na PowerShell.
Spuštěním následujících příkazů načtěte obsah DCR a uložte ho do souboru. Nahraďte
<ResourceId>
ID prostředku DCR a<FilePath>
názvem souboru pro uložení 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
Upravit DCR
Když je teď obsah DCR uložený jako soubor JSON, můžete k provádění změn v DCR použít editor podle vašeho výběru. Pokud ho používáte, můžete soubor raději stáhnout z prostředí Cloud Shellu.
Případně můžete použít editory kódu dodané s prostředím. Pokud jste například uložili řadič domény do souboru pojmenovaného temp.dcr
na cloudovou jednotku, můžete pomocí následujícího příkazu otevřít DCR pro úpravy přímo v okně Cloud Shellu:
code "temp.dcr"
Pojďme upravit transformaci KQL v rámci DCR tak, aby vyřaďte řádky, ve kterých je RequestType cokoli, ale "GET".
- Otevřete soubor vytvořený v předchozí části pro úpravy pomocí libovolného editoru.
- Vyhledejte řádek obsahující
”transformKql”
atribut, který by měl v případě, že jste postupovali podle kurzu pro vytvoření vlastního protokolu, vypadat nějak takto:"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"
- Úprava transformace KQL tak, aby zahrnovala další filtr podle 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"
- Uložte soubor s upraveným obsahem DCR.
Použít změny
Posledním krokem je aktualizace DCR zpět v systému. Toho se dosahuje voláním HTTP PUT do rozhraní API ARM s aktualizovaným obsahem DCR poslaným v těle požadavku HTTP.
- Pokud používáte Azure Cloud Shell, uložte soubor a zavřete vložený editor nebo nahrajte upravený soubor DCR zpět do prostředí Cloud Shell.
- Spuštěním následujících příkazů načtěte obsah DCR ze souboru a umístěte volání HTTP pro aktualizaci DCR v systému. Nahraďte
<ResourceId>
ID prostředku DCR a<FilePath>
názvem souboru upraveného v předchozí části kurzu. První dva řádky můžete vynechat při čtení a zápisu do DCR ve stejné relaci PowerShellu.$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 úspěšném volání byste měli získat odpověď se stavovým kódem 200, což znamená, že dcR je teď aktualizované.
- Teď můžete přejít na řadič domény a prozkoumat jeho obsah na portálu pomocí funkce Zobrazení JSON, nebo můžete zopakovat první část kurzu, abyste načetli obsah DCR do souboru.
Spojení všeho dohromady
Když teď víme, jak číst a aktualizovat obsah DCR, pojďme všechno spojit do utility skriptu, který se dá použít k provádění obou operací společně.
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 používat tento nástroj
Za předpokladu, že jste skript uložili jako soubor s názvem DCREditor.ps1
a potřebujete upravit pravidlo shromažďování dat s ID /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar
prostředku , můžete toho dosáhnout spuštěním následujícího příkazu:
.\DCREditor.ps1 "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar"
Obsah DCR se otevře v integrovaném editoru kódu. Po dokončení úprav se po zadání "Y" na příkazovém řádku skriptu použijí změny zpět do DCR.