Zelfstudie: Een regel voor gegevensverzameling bewerken (DCR)
In deze zelfstudie wordt beschreven hoe u de definitie van gegevensverzamelingsregels (DCR's) bewerkt die al zijn 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:
- Log Analytics-werkruimte met ten minste inzenderrechten.
- Machtigingen voor het maken van regelobjecten voor gegevensverzameling in de werkruimte.
- Bijgewerkte versie van PowerShell. Het gebruik van Azure Cloud Shell wordt aanbevolen.
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.
Klik op de knop Cloud Shell in Azure Portal en zorg ervoor dat de omgeving is ingesteld op PowerShell.
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
.
Open het bestand dat u in het vorige gedeelte hebt gemaakt om te bewerken met behulp van een editor van uw keuze.
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"
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"
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
een HTTP-aanroep naar ARM API, waarbij bijgewerkte DCR-inhoud wordt verzonden in de hoofdtekst van de HTTP-aanvraag.
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.
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
Na een geslaagde aanroep krijgt u het antwoord met statuscode
200
, waarmee wordt aangegeven dat uw DCR nu is bijgewerkt.U kunt nu naar uw DCR navigeren en de inhoud ervan in de portal bekijken via de JSON-weergavefunctie . U kunt ook 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/bar
kunt 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.