Skapa en transformering i Azure Monitor
Med transformeringar i Azure Monitor kan du filtrera eller ändra inkommande data innan de lagras på en Log Analytics-arbetsyta. De implementeras som en Kusto-frågespråk -instruktion (KQL) i en datainsamlingsregel (DCR). Den här artikeln innehåller vägledning om hur du skapar och testar en transformeringsfråga och lägger till den i en DCR.
Kommentar
Om du inte är bekant med KQL eller skapar loggfrågor för Azure Monitor-data börjar du med Översikt över Log Analytics i Azure Monitor - och Loggfrågor i Azure Monitor.
Grundläggande frågestruktur
Alla omvandlingsfrågor börjar med source
, vilket är en virtuell tabell som representerar indataströmmen. Du kan sedan använda alla KQL-operatorer som stöds för att filtrera, ändra eller lägga till kolumner i data på samma sätt som med andra tabeller. Frågan tillämpas individuellt på varje post som skickas av datakällan.
Frågans utdata måste matcha schemat för måltabellen med följande överväganden:
- Du kan utelämna kolumner som inte ska fyllas i. Kolumnen är tom för posten i måltabellen.
- Se till att undanta alla kolumner som inte ingår i utdatatabellen. Data accepteras utan fel, men du debiteras för inmatning av extra data även om de inte lagras.
- Utdata för varje transformering måste innehålla en giltig tidsstämpel i en kolumn som heter
TimeGenerated
av typendatetime
. Om datakällan inte innehåller den här egenskapen kan du lägga till den i omvandlingen medextend
ellerproject
.
Följande är ett exempel på en transformering som utför flera funktioner:
- Filtrerar inkommande data med en
where
instruktion. - Lägger till en ny kolumn med operatorn
extend
. - Formaterar utdata så att de matchar kolumnerna i måltabellen med operatorn
project
.
source
| where severity == "Critical"
| extend Properties = parse_json(properties)
| project
TimeGenerated = todatetime(["time"]),
Category = category,
StatusDescription = StatusDescription,
EventName = name,
EventId = tostring(Properties.EventId)
Kommentar
Se EXEMPEL och scenarier för datainsamlingsregel (DCR) i Azure Monitor för olika exempel för olika scenarier.
Skapa transformeringsfrågan
Innan du skapar eller redigerar den DCR som ska inkludera din transformering måste du skapa och testa transformeringsfrågan. Du gör vanligtvis detta genom att köra testfrågor mot befintliga data eller testdata. När du får önskat resultat kan du ersätta tabellnamnet med source
och klistra in det i din DCR enligt beskrivningen nedan i Lägg till transformering till DCR.
Viktigt!
Transformeringar stöder inte alla KQL-funktioner. Se KQL-funktioner som stöds i Azure Monitor-transformeringar för funktioner och begränsningar som stöds.
Om du till exempel skapar en transformering för att filtrera Syslog-händelser kan du börja med följande fråga som du kan köra i Log Analytics.
Syslog | where SeverityLevel != 'info'
Du kan klistra in den här frågan i din DCR och sedan ändra tabellnamnet till source
.
source | where SeverityLevel != 'info'
Använd någon av följande strategier för data som ska användas för att testa din fråga.
- Om du redan samlar in de data som du vill transformera kan du använda Log Analytics för att skriva en fråga som filtrerar eller ändrar data efter behov. Kopiera frågetexten och klistra in den i din DCR.
- Använd Log Analytics för att skriva din fråga med operatorn
datatable
för att skapa en exempeldatauppsättning som representerar dina inkommande data. Kopiera frågetexten utan operatorndatatable
och klistra in den i din DCR. - Använd processen för att skapa en ny tabell i Azure Portal och tillhandahålla exempeldata. Använd det inkluderade gränssnittet för att skapa och testa omvandlingsfrågan. Kopiera antingen frågetexten och klistra in den i domänkontrollanten eller slutför processen och redigera sedan DCR för att kopiera transformeringsfrågan. Du kan sedan ta bort den nya tabellen om du inte behöver den.
Lägga till transformering i DCR
När du har din transformeringsfråga kan du lägga till den i en DCR. Använd vägledningen i Skapa och redigera regler för datainsamling (DCR) i Azure Monitor för att skapa eller redigera DCR med hjälp av informationen i det här avsnittet för att inkludera transformeringsfrågan i DCR-definitionen.
Kommentar
Vissa datakällor tillhandahåller en metod som använder Azure Portal för att lägga till en transformering till en DCR. Om du till exempel samlar in en text från en virtuell dator kan du ange en transformeringsfråga i Azure Portal. De flesta datainsamlingsscenarier kräver dock för närvarande att du arbetar direkt med DCR-definitionen för att lägga till en transformering. Det är den process som beskrivs i det här avsnittet.
Transformeringsfrågan anges i transformKql
egenskapen i avsnittet Dataflöde s i DCR. Det här är avsnittet som kopplar ihop en datakälla med ett mål. Omvandlingen tillämpas på den inkommande dataströmmen för dataflödet innan den skickas till målet. Det gäller endast för dataflödet även om samma ström eller mål används i andra dataflöden.
Om egenskapen transformKql
utelämnas, eller om dess värde bara source
är , tillämpas ingen transformering och inkommande data skickas till målet utan ändringar.
Viktigt!
Transformeringsfrågan måste finnas på en enda rad i DCR. Om du skapar omvandlingen i Azure Portal kan du använda flera rader för läsbarhet och \n
inkluderas i frågan för varje ny rad.
I följande exempel finns det ingen transformKql
egenskap, så inkommande data skickas till målet utan ändringar.
"dataFlows": [
{
"streams": [
"Microsoft-Syslog"
],
"destinations": [
"centralWorkspace"
]
}
]
I följande exempel transformKql
har en enkel fråga av source
, så inkommande data skickas till målet utan ändringar. Dess funktioner är identiska med föregående exempel.
"dataFlows": [
{
"streams": [
"Microsoft-Syslog"
],
"transformKql": "source",
"destinations": [
"centralWorkspace"
]
}
]
I följande exempel transformKql
har en fråga som filtrerar data, så endast felmeddelanden skickas till målet.
"dataFlows": [
{
"streams": [
"Microsoft-Syslog"
],
"transformKql": "source | where message has 'error'",
"destinations": [
"centralWorkspace"
]
}
]
Skapa dcr för arbetsytetransformering
Datainsamlingsregeln för arbetsytetransformering (DCR) är en särskild DCR som tillämpas direkt på en Log Analytics-arbetsyta. Det kan bara finnas en DCR för arbetsytetransformering för varje arbetsyta, men den kan innehålla transformeringar för valfritt antal tabeller.
Använd någon av följande metoder för att skapa en DCR för arbetsytetransformering för din arbetsyta och lägga till en eller flera transformeringar i den.
Du kan skapa en DCR för arbetsytetransformering i Azure Portal genom att lägga till en transformering i en tabell som stöds.
På menyn Log Analytics-arbetsytor i Azure Portal väljer du Tabeller. Klicka till höger om tabellen som du är intresserad av och välj Skapa transformering.
Om dcr för arbetsytetransformeringen inte redan har skapats för den här arbetsytan väljer du alternativet för att skapa en. Om den redan har skapats väljs den domänkontrollanten redan. Varje arbetsytor kan bara ha en dcr för arbetsytetransformering.
Välj Nästa för att visa exempeldata från tabellen. Klicka på Transformeringsredigeraren för att definiera transformeringsfrågan.
Du kan sedan redigera och köra transformeringsfrågan för att se resultatet mot faktiska data från tabellen. Fortsätt att ändra och testa frågan tills du får önskat resultat.
När du är nöjd med frågan klickar du på Använd och sedan på Nästa och Skapa för att spara DCR med din nya transformering.
Optimera och övervaka transformeringar
Transformeringar kör en KQL-fråga mot varje post som samlas in med DCR, så det är viktigt att de körs effektivt. Omvandlingens körningstid bidrar till den totala svarstiden för datainmatning, och omvandlingar som tar för lång tid att köra kan påverka prestandan för datainsamlingspipelinen och resultera i dataförlust. Optimala transformeringar bör inte ta mer än 1 sekund att köra. Se Optimera loggfrågor i Azure Monitor för vägledning om hur du testar din fråga innan du implementerar den som en transformering och för rekommendationer om hur du optimerar frågor som inte körs effektivt.
Viktigt!
Du kan uppleva dataförlust om en transformering tar mer än 20 sekunder.
Eftersom transformeringar inte körs interaktivt är det viktigt att kontinuerligt övervaka dem för att säkerställa att de körs korrekt och inte tar för lång tid att bearbeta data. Mer information om loggar och mått som övervakar hälsotillstånd och prestanda för transformeringar finns i Övervaka och felsöka DCR-datainsamling i Azure Monitor . Detta inkluderar att identifiera eventuella fel som inträffar i KQL och mått för att spåra deras körningstid.
Följande mått samlas in automatiskt för transformeringar och bör granskas regelbundet för att verifiera att dina transformeringar fortfarande körs som förväntat. Skapa måttaviseringsregler som ska meddelas automatiskt när ett av dessa mått överskrider ett tröskelvärde.
- Loggomvandlingens varaktighet per min
- Loggomvandlingsfel per min
Aktivera DCR-felloggar för att spåra eventuella fel som inträffar i dina transformeringar eller andra frågor. Skapa en loggaviseringsregel som ska meddelas automatiskt när en post skrivs till den här tabellen.
Vägledning
Det finns flera metoder för att skapa transformeringar beroende på datainsamlingsmetoden. I följande tabell visas vägledning för olika metoder för att skapa transformeringar.
Datainsamling | Referens |
---|---|
Loggar inmatnings-API | Skicka data till Azure Monitor-loggar med hjälp av REST API (Azure Portal) Skicka data till Azure Monitor-loggar med hjälp av REST API (Azure Resource Manager-mallar) |
Virtuell dator med Azure Monitor-agent | Lägga till transformering i Azure Monitor-loggen |
Kubernetes-kluster med containerinsikter | Datatransformeringar i Container Insights |
Azure Event Hubs | Självstudie: Mata in händelser från Azure Event Hubs i Azure Monitor-loggar (offentlig förhandsversion) |
Nästa steg
- Skapa en datainsamlingsregel och en association till den från en virtuell dator med hjälp av Azure Monitor-agenten.