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 dell'invio alla destinazione. Le trasformazioni dell'area di lavoro forniscono il supporto per le trasformazioni in fase di inserimento per i flussi 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 una singola regola di raccolta dati (DCR) per l'area di lavoro, denominata DCR dell'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 dell'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:
- 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.
- La tabella deve contenere già alcuni dati.
- La tabella non può essere già collegata al DCR della trasformazione dell'area di lavoro.
Panoramica dell'esercitazione
In questa esercitazione si ridurrà il requisito di archiviazione per la LAQueryLogs
tabella filtrando determinati record. Si rimuoveranno anche i contenuti di una colonna durante l'analisi dei dati della colonna per 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 LAQueryLogs
tabella che verrà abilitata. Questa operazione non è necessaria per tutte le trasformazioni del tempo 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 Tables - Update 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 _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 nella portale di Azure e verificare 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
LAQueryLogs
colonne.
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 Delle 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
LAQueryLogs
tabella. Si noti il contenuto dellaRequestContext
colonna. 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
LAQueryLogs
tabella 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
RequestContext
colonna per risparmiare spazio.
- Eliminare le righe correlate all'esecuzione di query sulla
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 lasource
parola chiave . 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 DCR.
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 una regola di raccolta dati
Poiché si tratta della prima trasformazione nell'area di lavoro, è necessario creare un record di controllo di dominio per la trasformazione dell'area di lavoro. Se si creano trasformazioni dell'area di lavoro per altre tabelle nella stessa area di lavoro, devono essere archiviate nello stesso record di dominio.
Nella casella di ricerca del portale di Azure digitare il modello e quindi selezionare Distribuisci un modello personalizzato.
Fare clic su Compila un modello personalizzato nell'editor.
Incollare il modello di Resource Manager seguente nell'editor e quindi fare clic su Salva. Questo modello definisce il DCR 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 valori 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 su Crea quando si esaminano 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 a DCR
Il passaggio finale per abilitare la trasformazione consiste nel collegare il registro di dominio all'area di lavoro.
Importante
Un'area di lavoro può essere connessa solo a un singolo controller di dominio e il record di dominio collegato deve contenere questa area di lavoro come destinazione.
Usare l'API Workspaces - Update 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 il registro di dominio.
$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 Test
Attendere circa 30 minuti per rendere effettiva la trasformazione ed eseguirne il test 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 Workspace_CF
colonna e non sono presenti record per LAQueryLogs
.
Risoluzione dei problemi
In questa sezione vengono descritte 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 guida IntelliSense può 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 operazioni su di essi.