Datatransformeringar i Container Insights
Den här artikeln beskriver hur du implementerar datatransformeringar i Container Insights. Med transformeringar i Azure Monitor kan du ändra eller filtrera data innan de matas in på Din Log Analytics-arbetsyta. De gör att du kan utföra sådana åtgärder som att filtrera bort data som samlats in från klustret för att spara kostnader eller bearbeta inkommande data som hjälp i dina datafrågor.
Viktigt!
I artiklarna Konfigurera logginsamling i Container insights och filtreringsloggsamling i Container Insights beskrivs standardkonfigurationsinställningar för att konfigurera och filtrera datainsamling för Container Insights. Du bör utföra alla nödvändiga konfigurationer med hjälp av dessa funktioner innan du använder transformeringar. Använd en transformering för att utföra filtrering eller annan datakonfiguration som du inte kan utföra med standardkonfigurationsinställningarna.
Datainsamlingsregel
Transformeringar implementeras i datainsamlingsregler (DCR) som används för att konfigurera datainsamling i Azure Monitor. Konfigurera datainsamling med DCR beskriver den DCR som skapas automatiskt när du aktiverar Containerinsikter i ett kluster. Om du vill skapa en transformering måste du utföra någon av följande åtgärder:
- Nytt kluster. Använd en befintlig ARM-mall för att registrera ett AKS-kluster till Container Insights. Ändra domänkontrollanten i mallen med den konfiguration som krävs, inklusive en transformering som liknar ett av exemplen nedan.
- Befintlig DCR. När ett kluster har registrerats för containerinsikter och konfigurerad datainsamling redigerar du dess DCR för att inkludera en transformering med någon av metoderna i Redigera datainsamlingsregler.
Kommentar
Det finns för närvarande minimalt användargränssnitt för redigering av domänkontrollanter, vilket krävs för att lägga till transformeringar. I de flesta fall måste du redigera domänkontrollanten manuellt. Den här artikeln beskriver DCR-strukturen som ska implementeras. Se Skapa och redigera regler för datainsamling (DCR) i Azure Monitor för vägledning om hur du implementerar den strukturen.
Datakällor
Avsnittet Datakällor i DCR definierar de olika typer av inkommande data som DCR ska bearbeta. För Container Insights är det här containerinsiktstillägget, som innehåller en eller flera fördefinierade streams
start med prefixet Microsoft-.
Listan över Container Insights-strömmar i DCR beror på den kostnadsförinställning som du har valt för klustret. Om du samlar in alla tabeller använder Microsoft-ContainerInsights-Group-Default
DCR strömmen, som är en gruppström som innehåller alla strömmar som anges i Stream-värden. Du måste ändra detta till enskilda strömmar om du ska använda en transformering. Andra inställningar för förinställda kostnader använder redan enskilda strömmar.
Exemplet nedan visar Microsoft-ContainerInsights-Group-Default
strömmen. Se exempel-DCR :er för exempel som använder enskilda strömmar.
"dataSources": {
"extensions": [
{
"streams": [
"Microsoft-ContainerInsights-Group-Default"
],
"name": "ContainerInsightsExtension",
"extensionName": "ContainerInsights",
"extensionSettings": {
"dataCollectionSettings": {
"interval": "1m",
"namespaceFilteringMode": "Off",
"namespaces": null,
"enableContainerLogV2": true
}
}
}
]
}
Dataflöden
Avsnittet Dataflöden i DCR matchar strömmar med mål som definieras i destinations
avsnittet i DCR. Tabellnamn behöver inte anges för kända strömmar om data skickas till standardtabellen. Strömmar som inte kräver en transformering kan grupperas tillsammans i en enda post som endast innehåller arbetsytans mål. Var och en skickas till standardtabellen.
Skapa en separat post för strömmar som kräver en transformering. Detta bör omfatta arbetsytans mål och transformKql
egenskapen. Om du skickar data till en alternativ tabell måste du inkludera egenskapen outputStream
som anger namnet på måltabellen.
Exemplet nedan visar avsnittet dataFlows
för en enda ström med en transformering. Se exempel-DCR för flera dataflöden i en enda DCR.
"dataFlows": [
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where PodNamespace == 'kube-system'"
}
]
Exempel på domänkontrollanter
Filtrera data
Det första exemplet filtrerar bort data från ContainerLogV2
baserat på LogLevel
kolumnen. Endast poster med en LogLevel
av error
eller critical
samlas in eftersom det här är de poster som du kan använda för aviseringar och identifiering av problem i klustret. Samla in och lagra andra nivåer, till exempel info
och debug
generera kostnader utan betydande värde.
Du kan hämta dessa poster med hjälp av följande loggfråga.
ContainerLogV2 | where LogLevel in ('error', 'critical')
Den här logiken visas i följande diagram.
I en transformering används tabellnamnet source
för att representera inkommande data. Följande är den ändrade fråga som ska användas i omvandlingen.
source | where LogLevel in ('error', 'critical')
Följande exempel visar den här omvandlingen som lagts till i CONTAINER INSIGHTS DCR. Observera att ett separat dataflöde används för Microsoft-ContainerLogV2
eftersom det här är den enda inkommande dataströmmen som omvandlingen ska tillämpas på. Ett separat dataflöde används för de andra strömmarna.
{
"properties": {
"location": "eastus2",
"kind": "Linux",
"dataSources": {
"syslog": [],
"extensions": [
{
"streams": [
"Microsoft-ContainerLogV2",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"extensionName": "ContainerInsights",
"extensionSettings": {
"dataCollectionSettings": {
"interval": "1m",
"namespaceFilteringMode": "Off",
"enableContainerLogV2": true
}
},
"name": "ContainerInsightsExtension"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"workspaceId": "00000000-0000-0000-0000-000000000000",
"name": "ciworkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"destinations": [
"ciworkspace"
],
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where LogLevel in ('error', 'critical')"
}
],
},
}
Skicka data till olika tabeller
I exemplet ovan samlas endast poster med en LogLevel
av error
eller critical
in. En alternativ strategi i stället för att inte samla in dessa poster alls är att spara dem i en alternativ tabell som konfigurerats för grundläggande loggar.
För den här strategin krävs två omvandlingar. Den första omvandlingen skickar posterna med LogLevel
eller critical
error
till standardtabellen. Den andra omvandlingen skickar de andra posterna till en anpassad tabell med namnet ContainerLogV2_CL
. Frågorna för var och en visas nedan med hjälp av source
för inkommande data enligt beskrivningen i föregående exempel.
# Return error and critical logs
source | where LogLevel in ('error', 'critical')
# Return logs that aren't error or critical
source | where LogLevel !in ('error', 'critical')
Den här logiken visas i följande diagram.
Viktigt!
Innan du installerar DCR i det här exemplet måste du skapa en ny tabell med samma schema som ContainerLogV2
. Namnge den ContainerLogV2_CL
och konfigurera den för grundläggande loggar.
Följande exempel visar den här omvandlingen som lagts till i CONTAINER INSIGHTS DCR. Det finns två dataflöden för Microsoft-ContainerLogV2
i denna DCR, en för varje transformering. Den första skickar till standardtabellen som du inte behöver ange ett tabellnamn. Den andra kräver att outputStream
egenskapen anger måltabellen.
{
"properties": {
"location": "eastus2",
"kind": "Linux",
"dataSources": {
"syslog": [],
"extensions": [
{
"streams": [
"Microsoft-ContainerLogV2",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"extensionName": "ContainerInsights",
"extensionSettings": {
"dataCollectionSettings": {
"interval": "1m",
"namespaceFilteringMode": "Off",
"enableContainerLogV2": true
}
},
"name": "ContainerInsightsExtension"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"workspaceId": "00000000-0000-0000-0000-000000000000",
"name": "ciworkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"destinations": [
"ciworkspace"
],
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where LogLevel in ('error', 'critical')"
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where LogLevel !in ('error','critical')",
"outputStream": "Custom-ContainerLogV2_CL"
}
],
},
}
Nästa steg
- Läs mer om transformeringar och regler för datainsamling i Azure Monitor.