Sdílet prostřednictvím


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.

  1. Klikněte na tlačítko Cloud Shell na webu Azure Portal a ujistěte se, že je prostředí nastavené na PowerShell.

    Screenshot of opening cloud shell

  2. 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".

  1. Otevřete soubor vytvořený v předchozí části pro úpravy pomocí libovolného editoru.
  2. 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"
    
  3. Ú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"
    
  4. 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.

  1. 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.
  2. 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 
    
  3. 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é.
  4. 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/barprostř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.

Další kroky