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 artikeln beskriver hur du implementerar datatransformeringar med containerloggdata från ditt Kubernetes-kluster. 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!
Artikeln Filter container log collection with ConfigMap describes standard configuration settings to configure and filter container log collection ( Filtrera containerloggsamling med ConfigMap ) beskriver standardkonfigurationsinställningar för att konfigurera och filtrera containerloggsamling. 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.
Regler för datainsamling
Transformeringar implementeras i datainsamlingsregler (DCR) som används för att konfigurera datainsamling i Azure Monitor. När du aktiverar övervakning av Prometheus-mått och containerloggning för dina Kubernetes-kluster i Azure Monitor skapas separata domänkontrollanter för varje typ av data. Transformationer kan läggas till i DCR som samlar in containerloggar.
Utför någon av följande åtgärder för att skapa en transformering:
- Nytt kluster. Använd en befintlig ARM-mall för att registrera ett AKS-kluster till Container Insights. Ändra DCR i den mallen med den konfiguration du behöver, inklusive en transformation 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.
Anteckning
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 manuellt redigera DCR-filen. 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.
De resurser som skapas när du aktiverar övervakning av Prometheus-mått och containerloggning för dina Kubernetes-kluster i Azure Monitor beskrivs i följande tabeller.
Loggsamling
| Resursnamn | Resurstyp | Resursgrupp | Region/plats | Description | 
|---|---|---|---|---|
| MSCI-<aksclusterregion>-<clustername> | Regler för datainsamling | Samma som kluster | Samma som Log Analytics-arbetsytan | Associerad med AKS-klusterresursen definierar konfigurationen av logginsamlingen av Azure Monitor-agenten. Det här är DCR för att lägga till transformeringen. | 
Hanterad Prometheus
| Resursnamn | Resurstyp | Resursgrupp | Region/plats | Description | 
|---|---|---|---|---|
| MSPROM-<aksclusterregion>-<clustername> | Regler för datainsamling | Samma som kluster | Samma som Azure Monitor-arbetsytan | Associerad med AKS-klusterresursen definierar konfigurationen för insamling av Prometheus-mätvärden med hjälp av tillägget för mätvärden. | 
| MSPROM-<aksclusterregion>-<clustername> | Slutpunkt för datainsamling | Samma som kluster | Samma som Azure Monitor-arbetsytan | Används av DCR för att mata in Prometheus-mått från måtttillägget. | 
När du skapar en ny Azure Monitor-arbetsyta skapas följande ytterligare resurser.
| Resursnamn | Resurstyp | Resursgrupp | Region/plats | Description | 
|---|---|---|---|---|
| <azuremonitor-workspace-name> | Regler för datainsamling | MA_<azuremonitor-arbetsyta-namn>_<azuremonitor-arbetsyta-region>_hanterad | Samma som Azure Monitor-arbetsyta | DCR som ska användas om du använder Remote Write från en Prometheus-server. | 
| <azuremonitor-workspace-name> | Slutpunkt för datainsamling | MA_<azuremonitor-arbetsyta-namn>_<azuremonitor-arbetsyta-region>_hanterad | Samma som Azure Monitor-arbetsyta | DCE som ska användas om du använder Remote Write från en Prometheus-server. | 
Datakällor
Avsnittet Datakällor i DCR definierar de olika typer av inkommande data som DCR ska bearbeta. När det gäller Container Insights är detta extension för containerinsikter, som innehåller ett eller flera fördefinierade objekt streams som börjar 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 kommer DCR att använda Microsoft-ContainerInsights-Group-Default-strömmen, som är en gruppström som innehåller alla strömmar som anges i strömvä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 DCR-exempel för prov 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 behöver en transformering kan grupperas tillsammans i en enda post som endast innehåller målet för arbetsytan. Var och en kommer att skickas till sin standardtabell.
Skapa en separat post för strömmar som kräver en transformering. Detta bör omfatta målet för arbetsytan och egenskapen transformKql. 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 konfigurera ContainerLogV2 för Basic-loggar och skicka dessa poster till en alternativ tabell.
För den här strategin krävs två omvandlingar. Den första omvandlingen skickar posterna med LogLevel eller error till en anpassad tabell med namnet critical. Den andra transformeringen skickar de återstående posterna till standarden ContainerLogV2. 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. Ge den namnet ContainerLogV2_CL.
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.
 
              
              