Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här handledningen beskriver hur du konfigurerar en exempeltransformering i en regel för datainsamling på arbetsytan med hjälp av resurshanterarmallar. 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-portalen för samma självstudie med hjälp av Azure-portalen.
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 :et och Azure-portalen 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
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-portalen 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
LAQueryLogsi 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-portalen 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 $tableParamsKlistra 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-portalen. Välj Loggar för att öppna Log Analytics och expandera
LAQueryLogssedan 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 i menyn Log Analytics-arbetsytor i Azure-portalen och välj Loggar för att öppna Log Analytics.
Kör följande fråga för att visa innehållet i
LAQueryLogstabellen. Observera innehållet iRequestContextkolumnen. 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, ContextDetta gör följande ändringar:
- Ta bort rader som rör frågor 
LAQueryLogsmot 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 
RequestContextkolumnen 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 (
LAQueryLogsi det här fallet) som datakälla för densourcehä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 i Azure-portalen 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 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 $defaultDcrParamsKlistra 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.