Share via


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:

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.

  1. Dal menu Aree di lavoro Log Analytics nel portale di Azure selezionare Impostazioni di diagnostica e quindi Aggiungi impostazione di diagnostica.

    Screenshot delle impostazioni di diagnostica.

  2. 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.

    Screenshot della nuova impostazione di diagnostica.

  3. Selezionare Log e quindi eseguire alcune query per popolare LAQueryLogs con alcuni dati. Queste query non devono effettivamente restituire dati.

    Screenshot delle query di log di esempio.

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.

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

    Screenshot dell'apertura di Cloud Shell.

  2. 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
    
  3. Incollare il codice nel prompt di Cloud Shell per eseguirlo.

    Screenshot dello script in Cloud Shell.

  4. È 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.

    Screenshot di Log Analytics con la nuova colonna.

Definire la query di trasformazione

Usare Log Analytics per testare la query di trasformazione prima di aggiungerla a una regola di raccolta dati.

  1. Aprire l'area di lavoro nel menu Delle aree di lavoro Log Analytics nel portale di Azure e selezionare Log per aprire Log Analytics.

  2. Eseguire la query seguente per visualizzare il contenuto della LAQueryLogs tabella. Si noti il contenuto della RequestContext colonna. La trasformazione recupererà il nome dell'area di lavoro da questa colonna e rimuoverà il resto dei dati.

    LAQueryLogs
    | take 10
    

    Screenshot della query iniziale in Log Analytics.

  3. 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.

    Screenshot della query modificata in Log Analytics.

  4. 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 source 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 = ''
    

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.

  1. Nella casella di ricerca del portale di Azure digitare il modello e quindi selezionare Distribuisci un modello personalizzato.

    Screenshot per distribuire un modello personalizzato.

  2. Fare clic su Compila un modello personalizzato nell'editor.

    Screenshot per compilare il modello nell'editor.

  3. 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.

    Screenshot per modificare il modello di Resource Manager.

    {
        "$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'))]"
            }
        }
    }
    
  4. 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.

    Screenshot per modificare i valori di distribuzione personalizzati.

  5. Fare clic su Rivedi e crea e quindi su Crea quando si esaminano i dettagli.

  6. 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.

    Screenshot per i dettagli della regola di raccolta dati.

  7. Copiare l'ID risorsa per la regola di raccolta dati. Questa operazione verrà usata nel passaggio successivo.

    Screenshot per la visualizzazione JSON della regola di raccolta dati.

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.

  1. 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
    
  2. Incollare il codice nel prompt di Cloud Shell per eseguirlo.

    Screenshot dello script per collegare l'area di lavoro a DCR.

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.

Passaggi successivi