Share via


Esercitazione: Modificare una regola di raccolta dati

Questa esercitazione descrive come modificare la definizione della regola di raccolta dati (DCR) di cui è già stato effettuato il provisioning usando gli strumenti da riga di comando.

In questa esercitazione apprenderai a:

  • Sfruttare la funzionalità del portale esistente per la creazione preliminare di controller di dominio
  • Ottenere il contenuto di una regola di raccolta dati usando la chiamata API ARM
  • Applicare modifiche a una regola di raccolta dati usando la chiamata API di Resource Manager
  • Automatizzare il processo di aggiornamento del DCR usando gli script di PowerShell

Nota

Questa esercitazione illustra un metodo per la modifica di un record di dominio esistente. Per altri metodi, vedere Creare e modificare le regole di raccolta dati in Monitoraggio di Azure.

Prerequisiti

Per completare l'esercitazione, sono necessari gli elementi seguenti:

  • Area di lavoro Log Analytics in cui si hanno almeno i diritti di collaboratore.
  • Autorizzazioni per creare oggetti Regola raccolta dati nell'area di lavoro.
  • Versione aggiornata di PowerShell. È consigliabile usare Azure Cloud Shell.

Panoramica dell'esercitazione

Durante l'esecuzione della procedura guidata nel portale è il modo più semplice per configurare l'inserimento dei dati personalizzati in Log Analytics, in alcuni casi potrebbe essere necessario aggiornare la regola di raccolta dati in un secondo momento in:

  • Modificare le impostazioni di raccolta dati (ad esempio, endpoint di raccolta dati, associato al DCR)
  • Aggiornare la logica di analisi o filtro dei dati per il flusso di dati
  • Modificare la destinazione dei dati, ad esempio inviare dati a una tabella di Azure, perché questa opzione non viene offerta direttamente come parte della procedura guidata di log personalizzata basata su DCR.

In questa esercitazione si configura prima di tutto l'inserimento di un log personalizzato. Modificare quindi la trasformazione KQL per il log personalizzato in modo da includere filtri aggiuntivi e applicare le modifiche al registro DCR. Infine, si combinano tutte le operazioni di modifica in un singolo script di PowerShell, che può essere usato per modificare qualsiasi DCR per uno dei motivi indicati in precedenza.

Configurare un nuovo log personalizzato

Per iniziare, configurare un nuovo log personalizzato. Seguire l'esercitazione: Inviare log personalizzati ai log di Monitoraggio di Azure usando il portale di Azure (anteprima). Prendere nota dell'ID risorsa del record di controllo di dominio creato.

Recuperare il contenuto DCR

Per aggiornare DCR, il contenuto verrà recuperato e salvato come file, che può essere ulteriormente modificato.

  1. Fare clic sul pulsante Cloud Shell nella portale di Azure e verificare che l'ambiente sia impostato su PowerShell.

    Screenshot of opening cloud shell

  2. Eseguire i comandi seguenti per recuperare il contenuto DCR e salvarlo in un file. Sostituire <ResourceId> con DCR ResourceID e <FilePath> con il nome del file in cui archiviare 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
    

Modifica DCR

Ora, quando il contenuto DCR viene archiviato come file JSON, è possibile usare un editor di propria scelta per apportare modifiche nel Registro Azure Container. Se si usa un file, è preferibile scaricare il file dall'ambiente Cloud Shell.

In alternativa, è possibile usare gli editor di codice forniti con l'ambiente. Ad esempio, se è stato salvato il DCR in un file denominato temp.dcr nell'unità cloud, è possibile usare il comando seguente per aprire DCR per la modifica a destra nella finestra di Cloud Shell:

code "temp.dcr"

Modificare la trasformazione KQL all'interno di DCR per eliminare le righe in cui RequestType è qualcosa, ma "GET".

  1. Aprire il file creato nella parte precedente per la modifica usando un editor di propria scelta.
  2. Individuare la riga contenente ”transformKql” l'attributo , che, se è stata seguita l'esercitazione per la creazione di log personalizzati, dovrebbe essere simile alla seguente:
    "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. Modificare la trasformazione KQL per includere un filtro aggiuntivo in base a 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. Salvare il file con contenuto DCR modificato.

Applica modifiche

Il nostro passaggio finale consiste nell'aggiornare il registro DCR nel sistema. Questa operazione viene eseguita dalla chiamata HTTP "PUT" all'API ARM, con contenuto DCR aggiornato inviato nel corpo della richiesta HTTP.

  1. Se si usa Azure Cloud Shell, salvare il file e chiudere l'editor incorporato oppure caricare nuovamente il file DCR modificato nell'ambiente Cloud Shell.
  2. Eseguire i comandi seguenti per caricare il contenuto DCR dal file e inserire una chiamata HTTP per aggiornare il DCR nel sistema. Sostituire <ResourceId> con DCR ResourceID e <FilePath> con il nome del file modificato nella parte precedente dell'esercitazione. È possibile omettere le prime due righe se si legge e si scrive nel DCR all'interno della stessa sessione di PowerShell.
    $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. Al termine della chiamata, si dovrebbe ottenere la risposta con il codice di stato "200", che indica che il record di controllo di dominio è stato aggiornato.
  4. È ora possibile passare al Registro Azure Container ed esaminarne il contenuto nel portale tramite la funzione "Visualizzazione JSON" oppure ripetere la prima parte dell'esercitazione per recuperare il contenuto DCR in un file.

Riunire tutti gli elementi

Ora, quando si sa come leggere e aggiornare il contenuto di un record di controllo di dominio, è possibile riunire tutti gli elementi nello script di utilità, che può essere usato per eseguire entrambe le operazioni insieme.

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

Come usare questa utilità

Supponendo che lo script sia stato salvato come file, denominato DCREditor.ps1 e che sia necessario modificare una regola di raccolta dati con ID risorsa di /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Insights/dataCollectionRules/bar, questa operazione può essere eseguita eseguendo il comando seguente:

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

Il contenuto DCR viene aperto nell'editor di codice incorporato. Al termine della modifica, immettere "Y" al prompt degli script applica le modifiche al Registro Azure Container.

Passaggi successivi