Share via


Zelfstudie: Transformatie toevoegen in de regel voor het verzamelen van werkruimtegegevens aan Azure Monitor met behulp van Resource Manager-sjablonen

In deze zelfstudie wordt u begeleid bij het configureren van een voorbeeldtransformatie in een regel voor het verzamelen van werkruimtegegevens met behulp van Resource Manager-sjablonen. Met transformaties in Azure Monitor kunt u binnenkomende gegevens filteren of wijzigen voordat deze naar de bestemming worden verzonden. Werkruimtetransformaties bieden ondersteuning voor opname-tijdtransformaties voor werkstromen die nog geen azure Monitor-pijplijn voor gegevensopname gebruiken.

Werkruimtetransformaties worden samen opgeslagen in één regel voor gegevensverzameling (DCR) voor de werkruimte, de werkruimte DCR genoemd. Elke transformatie is gekoppeld aan een bepaalde tabel. De transformatie wordt toegepast op alle gegevens die naar deze tabel worden verzonden vanuit een werkstroom die geen DCR gebruikt.

Notitie

In deze zelfstudie worden Resource Manager-sjablonen en REST API gebruikt om een werkruimtetransformatie te configureren. Zie Zelfstudie: Transformatie toevoegen in de regel voor het verzamelen van werkruimtegegevens aan Azure Monitor met behulp van Azure Portal voor dezelfde zelfstudie met behulp van Azure Portal.

In deze zelfstudie leert u het volgende:

  • Werkruimtetransformatie configureren voor een tabel in een Log Analytics-werkruimte.
  • Schrijf een logboekquery voor een opnametijdtransformatie.

Notitie

In deze zelfstudie wordt PowerShell van Azure Cloud Shell gebruikt om REST API-aanroepen uit te voeren met behulp van de Azure Monitor Tables-API en Azure Portal om Resource Manager-sjablonen te installeren. U kunt elke andere methode gebruiken om deze aanroepen uit te voeren.

Vereisten

U hebt het volgende nodig om deze zelfstudie af te ronden:

Overzicht van zelfstudie

In deze zelfstudie vermindert u de opslagvereiste voor de LAQueryLogs tabel door bepaalde records te filteren. U verwijdert ook de inhoud van een kolom tijdens het parseren van de kolomgegevens om een stukje gegevens op te slaan in een aangepaste kolom. De LAQueryLogs-tabel wordt gemaakt wanneer u controle van logboekquery's inschakelt in een werkruimte, maar dit wordt alleen gebruikt als voorbeeld voor de zelfstudie. U kunt hetzelfde basisproces gebruiken om een transformatie te maken voor elke ondersteunde tabel in een Log Analytics-werkruimte.

Auditlogboeken voor query's inschakelen

U moet querycontrole inschakelen voor uw werkruimte om de LAQueryLogs tabel te maken waarmee u werkt. Dit is niet vereist voor alle opnametijdtransformaties. Het is alleen om de voorbeeldgegevens te genereren die door deze voorbeeldtransformatie worden gebruikt.

  1. Selecteer diagnostische instellingen in het menu Log Analytics-werkruimten in Azure Portal en voeg vervolgens diagnostische instelling toe.

    Schermopname van diagnostische instellingen.

  2. Geef een naam op voor de diagnostische instelling en selecteer de werkruimte, zodat de controlegegevens in dezelfde werkruimte worden opgeslagen. Selecteer de categorie Controle en klik vervolgens op Opslaan om de diagnostische instelling op te slaan en de pagina met diagnostische instellingen te sluiten.

    Schermopname van nieuwe diagnostische instelling.

  3. Selecteer Logboeken en voer vervolgens enkele query's uit om enkele gegevens te vullen LAQueryLogs . Deze query's hoeven geen gegevens daadwerkelijk te retourneren.

    Schermopname van voorbeeldlogboekquery's.

Tabelschema bijwerken

Voordat u de transformatie kunt maken, moeten de volgende twee wijzigingen worden aangebracht in de tabel:

  • De tabel moet zijn ingeschakeld voor werkruimtetransformatie. Dit is vereist voor elke tabel die een transformatie heeft, zelfs als de transformatie het schema van de tabel niet wijzigt.
  • Eventuele extra kolommen die door de transformatie worden ingevuld, moeten aan de tabel worden toegevoegd.

Gebruik de Tabellen - API bijwerken om de tabel te configureren met de onderstaande PowerShell-code. Als u de API aanroept, wordt de tabel ingeschakeld voor werkruimtetransformaties, ongeacht of aangepaste kolommen zijn gedefinieerd. In dit voorbeeld bevat het een aangepaste kolom met de naam Resources_CF die wordt gevuld met de transformatiequery.

Belangrijk

Aangepaste kolommen die aan een ingebouwde tabel worden toegevoegd, moeten eindigen op _CF. Kolommen die zijn toegevoegd aan een aangepaste tabel (een tabel met een naam die eindigt op _CL), hoeven dit achtervoegsel niet te hebben.

  1. Klik op de knop Cloud Shell in Azure Portal en zorg ervoor dat de omgeving is ingesteld op PowerShell.

    Schermopname van het openen van Cloud Shell.

  2. Kopieer de volgende PowerShell-code en vervang de padparameter door de details voor uw werkruimte.

    $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. Plak de code in de Cloud Shell-prompt om deze uit te voeren.

    Schermopname van script in Cloud Shell.

  4. U kunt controleren of de kolom is toegevoegd door naar het menu van de Log Analytics-werkruimte in Azure Portal te gaan. Selecteer Logboeken om Log Analytics te openen en vouw vervolgens de tabel uit om de LAQueryLogs kolommen ervan weer te geven.

    Schermopname van Log Analytics met nieuwe kolom.

Transformatiequery definiëren

Gebruik Log Analytics om de transformatiequery te testen voordat u deze toevoegt aan een regel voor gegevensverzameling.

  1. Open uw werkruimte in het menu Log Analytics-werkruimten in Azure Portal en selecteer Logboeken om Log Analytics te openen.

  2. Voer de volgende query uit om de inhoud van de LAQueryLogs tabel weer te geven. Let op de inhoud van de RequestContext kolom. De transformatie haalt de naam van de werkruimte op uit deze kolom en verwijdert de rest van de gegevens erin.

    LAQueryLogs
    | take 10
    

    Schermopname van de eerste query in Log Analytics.

  3. Wijzig de query in het volgende:

    LAQueryLogs
    | where QueryText !contains 'LAQueryLogs'
    | extend Context = parse_json(RequestContext)
    | extend Workspace_CF = tostring(Context['workspaces'][0])
    | project-away RequestContext, Context
    

    Hierdoor worden de volgende wijzigingen aangebracht:

    • Verwijder rijen die betrekking hebben op het uitvoeren van query's op de LAQueryLogs tabel zelf om ruimte te besparen, omdat deze logboekvermeldingen niet nuttig zijn.
    • Voeg een kolom toe voor de naam van de werkruimte waarop een query is uitgevoerd.
    • Verwijder gegevens uit de RequestContext kolom om ruimte te besparen.

    Schermopname van gewijzigde query in Log Analytics.

  4. Breng de volgende wijzigingen aan in de query om deze te gebruiken in de transformatie:

    • Gebruik het trefwoord in plaats van een tabelnaam (LAQueryLogs in dit geval) op te geven als gegevensbron voor deze query source . Dit is een virtuele tabel die altijd de binnenkomende gegevens in een transformatiequery vertegenwoordigt.
    • Verwijder alle operators die niet worden ondersteund door transformatiequery's. Zie Ondersteunde KQL-functies voor een gedetailleerde lijst met operators die worden ondersteund.
    • De query plat maken op één regel, zodat deze in de DCR JSON past.

    Hieronder volgt de query die u in de transformatie gaat gebruiken na deze wijzigingen:

    source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''
    

Regel voor gegevensverzameling maken (DCR)

Omdat dit de eerste transformatie in de werkruimte is, moet u een DCR voor werkruimtetransformatie maken. Als u werkruimtetransformaties maakt voor andere tabellen in dezelfde werkruimte, moeten deze worden opgeslagen in dezelfde DCR.

  1. Typ in het zoekvak van Azure Portal de sjabloon en selecteer vervolgens Een aangepaste sjabloon implementeren.

    Schermopname van het implementeren van een aangepaste sjabloon.

  2. Klik op Uw eigen sjabloon maken in de editor.

    Schermopname van het maken van een sjabloon in de editor.

  3. Plak de Onderstaande Resource Manager-sjabloon in de editor en klik vervolgens op Opslaan. Deze sjabloon definieert de DCR en bevat de transformatiequery. U hoeft deze sjabloon niet te wijzigen, omdat deze waarden voor de parameters verzamelt.

    Schermopname voor het bewerken van een Resource Manager-sjabloon.

    {
        "$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. Geef in het scherm Aangepaste implementatie een abonnement en resourcegroep op om de regel voor gegevensverzameling op te slaan en geef vervolgens waarden op die in de sjabloon zijn gedefinieerd. Dit omvat een naam voor de regel voor gegevensverzameling en de resource-id van de werkruimte die u in een vorige stap hebt verzameld. De locatie moet dezelfde locatie zijn als de werkruimte. De regio wordt al ingevuld en wordt gebruikt voor de locatie van de regel voor gegevensverzameling.

    Schermopname van het bewerken van aangepaste implementatiewaarden.

  5. Klik op Controleren + maken en vervolgens Maken wanneer u de details bekijkt.

  6. Wanneer de implementatie is voltooid, vouwt u het vak Implementatiedetails uit en klikt u op de regel voor gegevensverzameling om de details ervan weer te geven. Klik op de JSON-weergave.

    Schermopname van gegevensverzamelingsregeldetails.

  7. Kopieer de resource-id voor de regel voor gegevensverzameling. U gebruikt dit in de volgende stap.

    Schermopname van de JSON-weergave gegevensverzamelingsregel.

De laatste stap voor het inschakelen van de transformatie is het koppelen van de DCR aan de werkruimte.

Belangrijk

Een werkruimte kan alleen worden verbonden met één DCR en de gekoppelde DCR moet deze werkruimte als bestemming bevatten.

Gebruik de werkruimten - Api bijwerken om de tabel te configureren met de onderstaande PowerShell-code.

  1. Klik op de knop Cloud Shell om Cloud Shell opnieuw te openen. Kopieer de volgende PowerShell-code en vervang de parameters door waarden voor uw werkruimte en DCR.

    $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. Plak de code in de Cloud Shell-prompt om deze uit te voeren.

    Schermopname van het script om de werkruimte te koppelen aan DCR.

Transformatie testen

Wacht ongeveer 30 minuten totdat de transformatie van kracht wordt en u kunt deze vervolgens testen door een query uit te voeren op de tabel. Alleen gegevens die naar de tabel worden verzonden nadat de transformatie is toegepast, worden beïnvloed.

Voer voor deze zelfstudie enkele voorbeeldquery's uit om gegevens naar de LAQueryLogs tabel te verzenden. Neem enkele query's op LAQueryLogs , zodat u kunt controleren of de transformatie deze records filtert. U ziet dat de uitvoer de nieuwe Workspace_CF kolom bevat en dat er geen records LAQueryLogsvoor zijn.

Probleemoplossing

In deze sectie worden verschillende foutvoorwaarden beschreven die u kunt ontvangen en hoe u deze kunt corrigeren.

IntelliSense in Log Analytics herkent geen nieuwe kolommen in de tabel

Het kan tot 24 uur duren voordat de cache die IntelliSense aanstuurt, is bijgewerkt.

Transformatie in een dynamische kolom werkt niet

Er is momenteel een bekend probleem dat van invloed is op dynamische kolommen. Een tijdelijke tijdelijke oplossing is om dynamische kolomgegevens expliciet te parseren met behulp van parse_json() eventuele bewerkingen.

Volgende stappen