Zelfstudie: Een regel voor gegevensverzameling bewerken (DCR)

In deze zelfstudie wordt beschreven hoe u de definitie van De regel voor gegevensverzameling (DCR) bewerkt die al is ingericht met opdrachtregelprogramma's.

In deze zelfstudie leert u het volgende:

  • Bestaande portalfunctionaliteit gebruiken om DCR's vooraf te maken
  • De inhoud van een regel voor gegevensverzameling ophalen met behulp van een ARM-API-aanroep
  • Wijzigingen toepassen op een gegevensverzamelingsregel met behulp van een ARM API-aanroep
  • Het proces van DCR-update automatiseren met behulp van PowerShell-scripts

Notitie

In deze zelfstudie wordt één methode beschreven voor het bewerken van een bestaande DCR. Zie Regels voor gegevensverzameling (DCR's) maken en bewerken in Azure Monitor voor andere methoden.

Vereisten

U hebt het volgende nodig om deze zelfstudie te voltooien:

Overzicht van zelfstudie

Tijdens het doorlopen van de wizard in de portal is de eenvoudigste manier om de opname van uw aangepaste gegevens in te stellen op Log Analytics. In sommige gevallen wilt u de regel voor gegevensverzameling later bijwerken naar:

  • Instellingen voor gegevensverzameling wijzigen (bijvoorbeeld eindpunt voor gegevensverzameling, gekoppeld aan de DCR)
  • Gegevensparserings- of filterlogica voor uw gegevensstroom bijwerken
  • Gegevensbestemming wijzigen (bijvoorbeeld gegevens verzenden naar een Azure-tabel, omdat deze optie niet rechtstreeks wordt aangeboden als onderdeel van de wizard aangepast logboek op basis van DCR)

In deze zelfstudie stelt u eerst de opname van een aangepast logboek in. Vervolgens wijzigt u de KQL-transformatie voor uw aangepaste logboek om extra filters op te nemen en de wijzigingen toe te passen op uw DCR. Ten slotte gaan we alle bewerkingen combineren tot één PowerShell-script, dat kan worden gebruikt om dcr te bewerken om een van de bovenstaande redenen.

Nieuw aangepast logboek instellen

Begin met het instellen van een nieuw aangepast logboek. Volg de zelfstudie: Aangepaste logboeken verzenden naar Azure Monitor-logboeken met behulp van Azure Portal (preview). Noteer de resource-id van de gemaakte DCR.

DCR-inhoud ophalen

Om DCR bij te werken, gaan we de inhoud ervan ophalen en opslaan als een bestand, dat verder kan worden bewerkt.

  1. Klik op de knop Cloud Shell in Azure Portal en zorg ervoor dat de omgeving is ingesteld op PowerShell.

    Screenshot of opening cloud shell

  2. Voer de volgende opdrachten uit om DCR-inhoud op te halen en op te slaan in een bestand. Vervang <ResourceId> door DCR ResourceID en <FilePath> door de naam van het bestand om DCR op te slaan.

    $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
    

DCR bewerken

Wanneer DCR-inhoud nu wordt opgeslagen als een JSON-bestand, kunt u een editor van uw keuze gebruiken om wijzigingen aan te brengen in de DCR. Mogelijk wilt u het bestand liever downloaden uit de Cloud Shell-omgeving, als u er een gebruikt.

U kunt ook code-editors gebruiken die bij de omgeving worden geleverd. Als u uw DCR bijvoorbeeld hebt opgeslagen in een bestand met de naam temp.dcr op uw Cloud Drive, kunt u de volgende opdracht gebruiken om DCR te openen voor bewerking rechtstreeks in het Cloud Shell-venster:

code "temp.dcr"

We gaan de KQL-transformatie in DCR wijzigen om rijen te verwijderen waarin RequestType iets is, maar 'GET'.

  1. Open het bestand dat u in het vorige gedeelte hebt gemaakt om te bewerken met behulp van een editor van uw keuze.
  2. Zoek de regel met het kenmerk, ”transformKql” die, als u de zelfstudie voor het maken van aangepaste logboeken hebt gevolgd, er ongeveer als volgt uitziet:
    "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. KQL-transformatie wijzigen om extra filter op RequestType op te nemen
    "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. Sla het bestand op met gewijzigde DCR-inhoud.

Wijzigingen toepassen

De laatste stap is het bijwerken van DCR in het systeem. Dit wordt bereikt door 'PUT' HTTP-aanroep naar ARM API, waarbij bijgewerkte DCR-inhoud wordt verzonden in de hoofdtekst van de HTTP-aanvraag.

  1. Als u Azure Cloud Shell gebruikt, slaat u het bestand op en sluit u de ingesloten editor of uploadt u het gewijzigde DCR-bestand terug naar de Cloud Shell-omgeving.
  2. Voer de volgende opdrachten uit om DCR-inhoud uit het bestand te laden en http-aanroep te plaatsen om de DCR in het systeem bij te werken. Vervang <ResourceId> door DCR ResourceID en <FilePath> door de naam van het bestand dat in het vorige deel van de zelfstudie is gewijzigd. U kunt de eerste twee regels weglaten als u binnen dezelfde PowerShell-sessie naar de DCR leest en schrijft.
    $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. Na een geslaagde aanroep krijgt u het antwoord met de statuscode 200, waarmee wordt aangegeven dat uw DCR nu is bijgewerkt.
  4. U kunt nu naar uw DCR navigeren en de inhoud ervan in de portal bekijken via de functie JSON-weergave, of u kunt het eerste deel van de zelfstudie herhalen om DCR-inhoud op te halen in een bestand.

Alles bij elkaar

Als we nu weten hoe we de inhoud van een DCR moeten lezen en bijwerken, gaan we alles samenbrengen in een hulpprogrammascript, dat kan worden gebruikt om beide bewerkingen samen uit te voeren.

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

Dit hulpprogramma gebruiken

Ervan uitgaande dat u het script hebt opgeslagen als een bestand met de naam DCREditor.ps1 en een regel voor het verzamelen van gegevens moet wijzigen met de resource-id, /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/barkunt u dit doen door de volgende opdracht uit te voeren:

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

DCR-inhoud wordt geopend in de ingesloten code-editor. Zodra het bewerken is voltooid, worden wijzigingen in de DCR toegepast wanneer u 'Y' invoert bij de scriptprompt.

Volgende stappen