Esercitazione: Aggiungere una regola di raccolta dati dell'area di lavoro a Monitoraggio di Azure usando i modelli di Resource Manager
Questa esercitazione illustra la configurazione di una trasformazione di esempio in una regola di raccolta dati dell'area di lavoro usando i modelli di Resource Manager. Le trasformazioni in Monitoraggio di Azure consentono di filtrare o modificare i dati in ingresso prima di inviarli alla destinazione. Le trasformazioni dell'area di lavoro forniscono il supporto per le trasformazioni in fase di inserimento per i carichi di lavoro che non usano ancora la pipeline di inserimento dati di Monitoraggio di Azure.
Le trasformazioni dell'area di lavoro vengono archiviate insieme in un'unica regola di raccolta dati per l'area di lavoro. Ogni trasformazione è associata a una tabella specifica. La trasformazione viene applicata a tutti i dati inviati a questa tabella da qualsiasi flusso di lavoro in cui non è in uso una regola di raccolta dati.
Nota
Questa esercitazione usa modelli di Resource Manager e API REST per configurare una trasformazione dell'area di lavoro. Vedere Esercitazione: Aggiungere una regola di raccolta dati dell'area di lavoro a Monitoraggio di Azure usando il portale di Azure per la stessa esercitazione usando il portale di Azure.
Questa esercitazione apprendi come:
- Configurare la trasformazione di un'area di lavoro per una tabella in un'area di lavoro Log Analytics.
- Scrivere una query di log per una trasformazione in fase di inserimento.
Nota
Questa esercitazione usa PowerShell da Azure Cloud Shell per effettuare chiamate API REST usando l'API Tabelle di Monitoraggio di Azure e il portale di Azure per installare i modelli di Resource Manager. È possibile usare qualsiasi altro metodo per effettuare queste chiamate.
Prerequisiti
Per completare l'esercitazione è necessario quanto segue:
- Un'area di lavoro Log Analytics in cui si dispone almeno dei diritti di collaboratore.
- Autorizzazioni per creare oggetti Regola di raccolta dei dati nell'area di lavoro.
- La tabella deve contenere già alcuni dati.
- La tabella non può essere già collegata alla regola di raccolta dati della trasformazione dell'area di lavoro.
Panoramica dell'esercitazione
In questa esercitazione, si ridurranno i requisiti di archiviazione per la tabella LAQueryLogs
filtrando determinati record. Si potrà anche rimuovere il contenuto di una colonna durante l'analisi dei dati della colonna in modo da archiviare una parte di dati in una colonna personalizzata. La tabella LAQueryLogs viene creata quando si abilita il controllo delle query di log in un'area di lavoro, ma viene usata solo come esempio per l'esercitazione. È possibile usare questo stesso processo di base per creare una trasformazione per qualsiasi tabella supportata in un'area di lavoro Log Analytics.
Abilitare i log di controllo delle query
È necessario abilitare il controllo delle query per l'area di lavoro per creare la tabella LAQueryLogs
che verrà abilitata. Non è necessario farlo per tutte le trasformazioni della fase di inserimento. È sufficiente generare i dati di esempio che verrà usata da questa trasformazione di esempio.
Dal menu Aree di lavoro Log Analytics nel portale di Azure selezionare Impostazioni di diagnostica e quindi Aggiungi impostazione di diagnostica.
Specificare un nome per l'impostazione di diagnostica e selezionare l'area di lavoro in modo che i dati di controllo vengano archiviati nella stessa area di lavoro. Selezionare la categoria Audit e quindi fare clic su Salva per salvare l'impostazione di diagnostica e chiudere la pagina delle impostazioni di diagnostica.
Selezionare Log e quindi eseguire alcune query per popolare
LAQueryLogs
con alcuni dati. Queste query non devono effettivamente restituire dati.
Aggiornare lo schema delle tabelle
Prima di poter creare la trasformazione, è necessario apportare le due modifiche seguenti alla tabella:
- La tabella deve essere abilitata per la trasformazione dell'area di lavoro. Questa operazione è necessaria per qualsiasi tabella che avrà una trasformazione, anche se la trasformazione non modifica lo schema della tabella.
- Tutte le colonne aggiuntive popolate dalla trasformazione devono essere aggiunte alla tabella.
Usare l'API Tabelle - Aggiornamento per configurare la tabella con il codice di PowerShell riportato di seguito. La chiamata all'API abilita la tabella per le trasformazioni dell'area di lavoro, indipendentemente dal fatto che siano definite o meno colonne personalizzate. In questo esempio include una colonna personalizzata denominata Resources_CF che verrà popolata con la query di trasformazione.
Importante
Tutte le colonne personalizzate aggiunte a una tabella predefinita devono terminare in _CF. Le colonne aggiunte a una tabella personalizzata (una tabella con un nome che termina in _CL) non devono avere questo suffisso.
Fare clic sul pulsante Cloud Shell nel portale di Azure e assicurarsi che l'ambiente sia impostato su PowerShell.
Copiare il codice di PowerShell seguente e sostituire il parametro Path con i dettagli per l'area di lavoro.
$tableParams = @' { "properties": { "schema": { "name": "LAQueryLogs", "columns": [ { "name": "Resources_CF", "description": "The list of resources, this query ran against", "type": "string", "isDefaultDisplay": true, "isHidden": false } ] } } } '@ Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/LAQueryLogs?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Incollare il codice nel prompt di Cloud Shell per eseguirlo.
È possibile verificare che la colonna sia stata aggiunta passando al menu dell'area di lavoro Log Analytics nel portale di Azure. Selezionare Log per aprire Log Analytics e quindi espandere la tabella per visualizzarne le colonne
LAQueryLogs
.
Definire la query di trasformazione
Usare Log Analytics per testare la query di trasformazione prima di aggiungerla a una regola di raccolta dati.
Aprire l'area di lavoro nel menu Aree di lavoro Log Analytics nel portale di Azure e selezionare Log per aprire Log Analytics.
Eseguire la query seguente per visualizzare il contenuto della tabella
LAQueryLogs
. Si noti il contenuto della colonnaRequestContext
. La trasformazione recupererà il nome dell'area di lavoro da questa colonna e rimuoverà il resto dei dati.LAQueryLogs | take 10
Modificare la query nel modo seguente:
LAQueryLogs | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Workspace_CF = tostring(Context['workspaces'][0]) | project-away RequestContext, Context
Questa impostazione determina le modifiche seguenti:
- Eliminare le righe correlate all'esecuzione di query sulla tabella
LAQueryLogs
stessa per risparmiare spazio perché queste voci di log non sono utili. - Aggiungere una colonna per il nome dell'area di lavoro su cui è stata eseguita una query.
- Rimuovere i dati dalla colonna
RequestContext
per risparmiare spazio.
- Eliminare le righe correlate all'esecuzione di query sulla tabella
Apportare le modifiche seguenti alla query per usarla nella trasformazione:
- Anziché specificare un nome di tabella (
LAQueryLogs
in questo caso) come origine dei dati per questa query, usare la parola chiavesource
. Si tratta di una tabella virtuale che rappresenta sempre i dati in ingresso in una query di trasformazione. - Rimuovere gli operatori non supportati dalle query di trasformazione. Per un elenco dettagliato degli operatori supportati, vedere Funzionalità KQL supportate.
- Appiattire la query a una singola riga in modo che possa essere inserita nel file JSON regola di raccolta dat.
Di seguito è riportata la query che verrà usata nella trasformazione dopo queste modifiche:
source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''
- Anziché specificare un nome di tabella (
Creare la regola di raccolta dati
Poiché si tratta della prima trasformazione nell'area di lavoro, è necessario creare una regola di raccolta dati per la trasformazione dell'area di lavoro. Se si creeranno trasformazioni dell'area di lavoro per altre tabelle presenti nella stessa area di lavoro, dovranno essere archiviate nella stessa regola di raccolta dati.
Nella casella di ricerca del portale di Azure, digitare modello e quindi selezionare Distribuisci un modello personalizzato.
Fare clic su Creare un modello personalizzato nell'editor.
Incollare il modello di Resource Manager seguente nell'editor e quindi fare clic sul Salva. Questo modello definisce la regola di raccolta dati e contiene la query di trasformazione. Non è necessario modificare questo modello perché raccoglierà i valori per i relativi parametri.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "dataCollectionRuleName": { "type": "string", "metadata": { "description": "Specifies the name of the Data Collection Rule to create." } }, "location": { "type": "string", "defaultValue": "westus2", "allowedValues": [ "westus2", "eastus2", "eastus2euap" ], "metadata": { "description": "Specifies the location in which to create the Data Collection Rule." } }, "workspaceResourceId": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the Log Analytics workspace to use." } } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRules", "name": "[parameters('dataCollectionRuleName')]", "location": "[parameters('location')]", "apiVersion": "2021-09-01-preview", "kind": "WorkspaceTransforms", "properties": { "destinations": { "logAnalytics": [ { "workspaceResourceId": "[parameters('workspaceResourceId')]", "name": "clv2ws1" } ] }, "dataFlows": [ { "streams": [ "Microsoft-Table-LAQueryLogs" ], "destinations": [ "clv2ws1" ], "transformKql": "source |where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''" } ] } } ], "outputs": { "dataCollectionRuleId": { "type": "string", "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]" } } }
Nella schermata Distribuzione personalizzata, specificare una sottoscrizione e un gruppo di risorse per archiviare la regola di raccolta dati e quindi specificare i valor definiti nel modello. Sono inclusi un Nome per la regola di raccolta dati e l'ID risorsa dell'area di lavoro raccolti in un passaggio precedente. La Località deve essere la stessa posizione dell'area di lavoro. L' Area verrà già popolata e viene usata per la posizione della regola di raccolta dati.
Fare clic su Rivedi e crea e quindi Crea al momento di rivedere i dettagli.
Al termine della distribuzione, espandere la casella Dettagli distribuzione e fare clic sulla regola di raccolta dati per visualizzarne i dettagli. Fare clic su Visualizzazione JSON.
Copiare l'ID risorsa per la regola di raccolta dati. Questa operazione verrà usata nel passaggio successivo.
Collegare l'area di lavoro alla regola di raccolta dati
Il passaggio finale per abilitare la trasformazione consiste nel collegare la regola di raccolta dati all'area di lavoro.
Importante
Un'area di lavoro può essere connessa solo a un singolo controller di dominio e la regola di raccolta dati collegata deve contenere questa area di lavoro come destinazione.
Usare l'API Aree di lavoro - Aggiornamento per configurare la tabella con il codice di PowerShell riportato di seguito.
Fare clic sul pulsante Cloud Shell per aprire di nuovo Cloud Shell. Copiare il codice di PowerShell seguente e sostituire i parametri con i valori per l'area di lavoro e la regola di raccolta dati.
$defaultDcrParams = @' { "properties": { "defaultDataCollectionRuleResourceId": "/subscriptions/{subscription}/resourceGroups/{resourcegroup}/providers/Microsoft.Insights/dataCollectionRules/{DCR}" } } '@ Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}?api-version=2021-12-01-preview" -Method PATCH -payload $defaultDcrParams
Incollare il codice nel prompt di Cloud Shell per eseguirlo.
Trasformazione di test
Attendere circa 30 minuti per rendere effettiva la trasformazione e quindi è possibile testarla eseguendo una query sulla tabella. Saranno interessati solo i dati inviati alla tabella dopo l'applicazione della trasformazione.
Ai fini di questa esercitazione, eseguire alcune query di esempio per inviare dati alla tabella LAQueryLogs
. Includere alcune query su LAQueryLogs
in modo da poter verificare che la trasformazione filtri questi record. Si noti che l'output include la nuova colonna Workspace_CF
e non sono presenti record per LAQueryLogs
.
Risoluzione dei problemi
In questa sezione vengono descritte le diverse condizioni di errore che è possibile ricevere e come correggerle.
IntelliSense in Log Analytics non riconosce nuove colonne nella tabella
L'aggiornamento della cache che gestisce IntelliSense potrebbe richiedere fino a 24 ore.
La trasformazione in una colonna dinamica non funziona
Attualmente esiste un problema noto che interessa le colonne dinamiche. Una soluzione temporanea consiste nell'analizzare in modo esplicito i dati delle colonne dinamiche usando parse_json()
prima di eseguire qualsiasi operazione su di esse.