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.

Regler för datainsamling (DCR)

Transformeringar implementeras i datainsamlingsregler (DCR) som används för att konfigurera datainsamling i Azure Monitor. När du registrerar containerinsikter för ett kluster skapas en DCR för det med namnet MSCI-cluster-region<>-<\cluster-name>. Du kan visa denna DCR från datainsamlingsreglermenyn Övervaka i Azure-portalen. Om du vill skapa en transformering måste du antingen ändra den här domänkontrollanten eller registrera klustret med en anpassad DCR som innehåller din omvandling.

I följande tabell beskrivs de olika metoderna för att redigera DCR, medan resten av den här artikeln innehåller information om de ändringar som du behöver utföra för att transformera Container Insights-data.

Metod beskrivning
Nytt kluster Använd en befintlig ARM-mall för att registrera ett AKS-kluster till Container Insights. dataFlows Ändra avsnittet i DCR i mallen så att det innehåller en transformering, ungefär som ett av exemplen nedan.
Befintlig DCR När ett kluster har registrerats för Container Insights redigerar du dess DCR för att inkludera en transformering med hjälp av processen i Redigera datainsamlingsregler.

Datakällor

Avsnittet dataSources i DCR definierar de olika typer av inkommande data som DCR ska bearbeta. För Container Insights omfattar ContainerInsights detta tillä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.

Kodfragmentet nedan visar Microsoft-ContainerInsights-Group-Default strömmen. Se exempel-DCR :er för ett exempel på enskilda strömmar.

"dataSources": {
    "extensions": [
        {
            "name": "ContainerInsightsExtension",
            "extensionName": "ContainerInsights",
            "extensionSettings": { },
            "streams": [
                "Microsoft-ContainerInsights-Group-Default"
            ]
        }
    ]
}

Dataflöden

Avsnittet dataFlöden i DCR matchar strömmar med mål. Strömmar som inte kräver en transformering kan grupperas tillsammans i en enda post som endast innehåller arbetsytans mål. Skapa en separat post för strömmar som kräver en transformering som innehåller arbetsytans mål och transformKql egenskapen.

I kodfragmentet dataFlows nedan visas avsnittet 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

Följande exempel visar DCR:er för containerinsikter med hjälp av transformeringar. Använd dessa exempel som utgångspunkt och anpassa sedan efter behov för att uppfylla dina specifika krav.

Filtrera efter ett visst namnområde

Det här exemplet använder loggfrågan source | where PodNamespace == 'kube-system' för att samla in data för ett enda namnområde i ContainerLogsV2. Du kan ersätta kube-system i den här frågan med ett annat namnområde eller ersätta where satsen med ett annat filter som matchar de specifika data som du vill samla in. De andra strömmarna grupperas i ett separat dataflöde och har ingen transformering tillämpad.

{
    "properties": {
        "dataSources": {
            "syslog": [],
            "extensions": [
                {
                    "name": "ContainerInsightsExtension",                    
                    "extensionName": "ContainerInsights",
                    "extensionSettings": { },
                    "streams": [
                        "Microsoft-ContainerLog",
                        "Microsoft-ContainerLogV2",
                        "Microsoft-KubeEvents",
                        "Microsoft-KubePodInventory",
                        "Microsoft-KubeNodeInventory",
                        "Microsoft-KubePVInventory",
                        "Microsoft-KubeServices",
                        "Microsoft-KubeMonAgentEvents",
                        "Microsoft-InsightsMetrics",
                        "Microsoft-ContainerInventory",
                        "Microsoft-ContainerNodeInventory",
                        "Microsoft-Perf"
                    ]
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
                    "name": "ciworkspace"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-ContainerLog",
                    "Microsoft-KubeEvents",
                    "Microsoft-KubePodInventory",
                    "Microsoft-KubeNodeInventory",
                    "Microsoft-KubePVInventory",
                    "Microsoft-KubeServices",
                    "Microsoft-KubeMonAgentEvents",
                    "Microsoft-InsightsMetrics",
                    "Microsoft-ContainerNodeInventory",
                    "Microsoft-Perf"
                ],
                "destinations": [
                    "ciworkspace"
                ]
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source | where PodNamespace == 'kube-system'"
            }
        ] 
    }
}

Lägga till en kolumn i en tabell

Det här exemplet använder loggfrågan source | extend new_CF = ContainerName för att skicka data till en anpassad kolumn som läggs till i ContainerLogV2 tabellen. Den här omvandlingen kräver att du lägger till den anpassade kolumnen i tabellen med hjälp av processen som beskrivs i Lägg till eller ta bort en anpassad kolumn. De andra strömmarna grupperas i ett separat dataflöde och har ingen transformering tillämpad.

{
    "properties": {
        "dataSources": {
            "syslog": [],
            "extensions": [
                {
                    "extensionName": "ContainerInsights",
                    "extensionSettings": { },
                    "name": "ContainerInsightsExtension",
                    "streams": [
                        "Microsoft-ContainerLog",
                        "Microsoft-ContainerLogV2",
                        "Microsoft-KubeEvents",
                        "Microsoft-KubePodInventory",
                        "Microsoft-KubeNodeInventory",
                        "Microsoft-KubePVInventory",
                        "Microsoft-KubeServices",
                        "Microsoft-KubeMonAgentEvents",
                        "Microsoft-InsightsMetrics",
                        "Microsoft-ContainerInventory",
                        "Microsoft-ContainerNodeInventory",
                        "Microsoft-Perf"
                    ]
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
                "name": "ciworkspace"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-ContainerLog",
                    "Microsoft-KubeEvents",
                    "Microsoft-KubePodInventory",
                    "Microsoft-KubeNodeInventory",
                    "Microsoft-KubePVInventory",
                    "Microsoft-KubeServices",
                    "Microsoft-KubeMonAgentEvents",
                    "Microsoft-InsightsMetrics",
                    "Microsoft-ContainerNodeInventory",
                    "Microsoft-Perf"
                ],
                "destinations": [
                "ciworkspace"
                ]
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source\n | extend new_CF = ContainerName"
            }
        ]
    }
}

Nästa steg