Självstudie: Lägga till transformering i arbetsytans datainsamlingsregel i Azure Monitor med hjälp av Resource Manager-mallar
Den här självstudien beskriver hur du konfigurerar en exempeltransformering i en regel för datainsamling på arbetsytan med hjälp av Resource Manager-mallar. Med transformeringar i Azure Monitor kan du filtrera eller ändra inkommande data innan de skickas till målet. Omvandlingar av arbetsytor ger stöd för inmatningstidstransformeringar för arbetsflöden som ännu inte använder Azure Monitor-datainmatningspipelinen.
Arbetsytetransformeringar lagras tillsammans i en enda datainsamlingsregel (DCR) för arbetsytan, som kallas för arbetsytans DCR. Varje transformering är associerad med en viss tabell. Omvandlingen tillämpas på alla data som skickas till den här tabellen från alla arbetsflöden som inte använder en DCR.
Kommentar
I den här självstudien används Resource Manager-mallar och REST API för att konfigurera en omvandling av arbetsytor. Se Självstudie: Lägga till transformering i datainsamlingsregeln för arbetsytor i Azure Monitor med hjälp av Azure Portal för samma självstudie med hjälp av Azure Portal.
I den här självstudien får du lära dig att:
- Konfigurera arbetsytetransformering för en tabell på en Log Analytics-arbetsyta.
- Skriv en loggfråga för en inmatningstidstransformering.
Kommentar
I den här självstudien används PowerShell från Azure Cloud Shell för att göra REST API-anrop med hjälp av Azure Monitor Tables API och Azure Portal för att installera Resource Manager-mallar. Du kan använda vilken annan metod som helst för att göra dessa anrop.
Förutsättningar
För att göra den här självstudien behöver du följande:
- Log Analytics-arbetsyta där du har minst deltagarbehörighet.
- Behörigheter för att skapa datainsamlingsregelobjekt på arbetsytan.
- Tabellen måste redan ha vissa data.
- Tabellen kan inte redan vara länkad till dcr för arbetsytetransformering.
Översikt över självstudier
I den här självstudien minskar du lagringskravet LAQueryLogs
för tabellen genom att filtrera bort vissa poster. Du tar också bort innehållet i en kolumn när du parsar kolumndata för att lagra en datadel i en anpassad kolumn. LaQueryLogs-tabellen skapas när du aktiverar loggfrågegranskning på en arbetsyta, men detta används bara som exempel för självstudien. Du kan använda samma grundläggande process för att skapa en transformering för alla tabeller som stöds på en Log Analytics-arbetsyta.
Aktivera granskningsloggar för frågor
Du måste aktivera frågegranskning för din arbetsyta för att skapa den LAQueryLogs
tabell som du ska arbeta med. Detta krävs inte för alla inmatningstidstransformeringar. Det är bara för att generera exempeldata som den här exempeltransformeringen ska använda.
På menyn Log Analytics-arbetsytor i Azure Portal väljer du Diagnostikinställningar och sedan Lägg till diagnostikinställning.
Ange ett namn för diagnostikinställningen och välj arbetsytan så att granskningsdata lagras på samma arbetsyta. Välj kategorin Granskning och klicka sedan på Spara för att spara diagnostikinställningen och stäng sidan för diagnostikinställning.
Välj Loggar och kör sedan några frågor för att fylla
LAQueryLogs
i med vissa data. Dessa frågor behöver inte returnera några data.
Uppdatera tabellschema
Innan du kan skapa omvandlingen måste följande två ändringar göras i tabellen:
- Tabellen måste vara aktiverad för omvandling av arbetsytor. Detta krävs för alla tabeller som har en transformering, även om omvandlingen inte ändrar tabellens schema.
- Eventuella ytterligare kolumner som fylls i av omvandlingen måste läggas till i tabellen.
Använd API:et Tables – Update för att konfigurera tabellen med PowerShell-koden nedan. Genom att anropa API:et aktiveras tabellen för arbetsytetransformeringar, oavsett om anpassade kolumner har definierats eller inte. I det här exemplet innehåller den en anpassad kolumn med namnet Resources_CF som fylls i med transformeringsfrågan.
Viktigt!
Alla anpassade kolumner som läggs till i en inbyggd tabell måste sluta i _CF. Kolumner som läggs till i en anpassad tabell (en tabell med ett namn som slutar i _CL) behöver inte ha det här suffixet.
Klicka på cloud shell-knappen i Azure Portal och se till att miljön är inställd på PowerShell.
Kopiera följande PowerShell-kod och ersätt parametern Path med information om din arbetsyta.
$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
Klistra in koden i Cloud Shell-prompten för att köra den.
Du kan kontrollera att kolumnen har lagts till genom att gå till Log Analytics-arbetsytemenyn i Azure Portal. Välj Loggar för att öppna Log Analytics och expandera
LAQueryLogs
sedan tabellen för att visa dess kolumner.
Definiera transformeringsfråga
Använd Log Analytics för att testa transformeringsfrågan innan du lägger till den i en datainsamlingsregel.
Öppna din arbetsyta på Log Analytics-arbetsytor-menyn i Azure Portal och välj Loggar för att öppna Log Analytics.
Kör följande fråga för att visa innehållet i
LAQueryLogs
tabellen. Observera innehållet iRequestContext
kolumnen. Omvandlingen hämtar arbetsytans namn från den här kolumnen och tar bort resten av data i den.LAQueryLogs | take 10
Ändra frågan till följande:
LAQueryLogs | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Workspace_CF = tostring(Context['workspaces'][0]) | project-away RequestContext, Context
Detta gör följande ändringar:
- Ta bort rader som rör frågor
LAQueryLogs
mot själva tabellen för att spara utrymme eftersom dessa loggposter inte är användbara. - Lägg till en kolumn för namnet på arbetsytan som efterfrågades.
- Ta bort data från
RequestContext
kolumnen för att spara utrymme.
- Ta bort rader som rör frågor
Gör följande ändringar i frågan för att använda den i omvandlingen:
- Använd nyckelordet i stället för att ange ett tabellnamn (
LAQueryLogs
i det här fallet) som datakälla för densource
här frågan. Det här är en virtuell tabell som alltid representerar inkommande data i en transformeringsfråga. - Ta bort alla operatorer som inte stöds av transformeringsfrågor. En detaljerad lista över operatorer som stöds finns i KQL-funktioner som stöds.
- Platta ut frågan till en enda rad så att den får plats i DCR JSON.
Följande är den fråga som du ska använda i omvandlingen efter dessa ändringar:
source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''
- Använd nyckelordet i stället för att ange ett tabellnamn (
Skapa datainsamlingsregel (DCR)
Eftersom det här är den första omvandlingen på arbetsytan måste du skapa en DCR för arbetsytetransformering. Om du skapar arbetsytetransformeringar för andra tabeller på samma arbetsyta måste de lagras i samma DCR.
I sökrutan för Azure Portal skriver du in mallen och väljer sedan Distribuera en anpassad mall.
Klicka på Skapa en egen mall i redigeraren.
Klistra in Resource Manager-mallen nedan i redigeraren och klicka sedan på Spara. Den här mallen definierar DCR och innehåller transformeringsfrågan. Du behöver inte ändra den här mallen eftersom den samlar in värden för dess parametrar.
{ "$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'))]" } } }
På skärmen Anpassad distribution anger du en prenumerations- och resursgrupp för att lagra datainsamlingsregeln och anger sedan värden som definierats i mallen. Detta inkluderar ett namn för datainsamlingsregeln och arbetsytans resurs-ID som du samlade in i ett tidigare steg. Platsen ska vara samma plats som arbetsytan. Regionen kommer redan att fyllas i och används för platsen för datainsamlingsregeln.
Klicka på Granska + skapa och sedan på Skapa när du granskar informationen.
När distributionen är klar expanderar du rutan Distributionsinformation och klickar på datainsamlingsregeln för att visa dess information. Klicka på JSON-vy.
Kopiera resurs-ID:t för datainsamlingsregeln. Du använder detta i nästa steg.
Länka arbetsyta till DCR
Det sista steget för att aktivera omvandlingen är att länka DCR till arbetsytan.
Viktigt!
En arbetsyta kan bara anslutas till en enda DCR och den länkade domänkontrollanten måste innehålla den här arbetsytan som mål.
Använd API:et Workspaces – Update för att konfigurera tabellen med PowerShell-koden nedan.
Klicka på cloud shell-knappen för att öppna Cloud Shell igen. Kopiera följande PowerShell-kod och ersätt parametrarna med värden för din arbetsyta och 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
Klistra in koden i Cloud Shell-prompten för att köra den.
Testtransformeringen
Tillåt cirka 30 minuter innan omvandlingen börjar gälla, och du kan sedan testa den genom att köra en fråga mot tabellen. Endast data som skickas till tabellen efter att omvandlingen har tillämpats påverkas.
I den här självstudien kör du några exempelfrågor för att skicka data till LAQueryLogs
tabellen. Inkludera några frågor mot LAQueryLogs
så att du kan kontrollera att omvandlingen filtrerar dessa poster. Observera att utdata har den nya Workspace_CF
kolumnen och att det inte finns några poster för LAQueryLogs
.
Felsökning
I det här avsnittet beskrivs olika feltillstånd som du kan få och hur du korrigerar dem.
IntelliSense i Log Analytics känner inte igen nya kolumner i tabellen
Cacheminnet som driver IntelliSense kan ta upp till 24 timmar att uppdatera.
Transformering i en dynamisk kolumn fungerar inte
Det finns för närvarande ett känt problem som påverkar dynamiska kolumner. En tillfällig lösning är att uttryckligen parsa dynamiska kolumndata med hjälp av parse_json()
innan du utför några åtgärder mot dem.