Share via


Trasformazioni dei dati in Informazioni dettagliate sui contenitori

Questo articolo descrive come implementare le trasformazioni dei dati in Informazioni dettagliate sui contenitori. Le trasformazioni in Monitoraggio di Azure consentono di modificare o filtrare i dati prima di essere inseriti nell'area di lavoro Log Analytics. Consentono di eseguire azioni come il filtro dei dati raccolti dal cluster per risparmiare sui costi o l'elaborazione dei dati in ingresso per facilitare le query sui dati.

Regole di raccolta dati (DCR)

Le trasformazioni vengono implementate nelle regole di raccolta dati (DCR) usate per configurare la raccolta dati in Monitoraggio di Azure. Quando si esegue l'onboarding di Informazioni dettagliate sui contenitori per un cluster, viene creato un record DCR con il nome MSCI-cluster-region><-<\cluster-name>. È possibile visualizzare questo DCR dalle regole di raccolta dati nel menu Monitoraggio del portale di Azure. Per creare una trasformazione, è necessario modificare questo DCR o eseguire l'onboarding del cluster con un record di dominio personalizzato che include la trasformazione.

Nella tabella seguente vengono descritti i diversi metodi per modificare il DCR, mentre nella parte restante di questo articolo vengono fornite informazioni dettagliate sulle modifiche che è necessario eseguire per trasformare i dati di Informazioni dettagliate sui contenitori.

metodo Descrizione
Nuovo cluster Usare un modello di Resource Manager esistente per eseguire l'onboarding di un cluster del servizio Azure Kubernetes in Informazioni dettagliate sui contenitori. Modificare la dataFlows sezione del record di controllo di dominio in tale modello per includere una trasformazione, analogamente a uno degli esempi seguenti.
Record di dominio esistente Dopo l'onboarding di un cluster in Informazioni dettagliate sui contenitori, modificare il relativo record di controllo di dominio per includere una trasformazione usando il processo in Modifica delle regole di raccolta dati.

Origini dati

La sezione dataSources del DCR definisce i diversi tipi di dati in ingresso che verranno elaborati dal DCR. Per Informazioni dettagliate sui contenitori, questa include l'estensione ContainerInsights , che include uno o più predefiniti streams a partire dal prefisso Microsoft-.

L'elenco dei flussi di Informazioni dettagliate contenitore nel Registro Azure Container dipende dal set di impostazioni Costo selezionato per il cluster. Se si raccolgono tutte le tabelle, il record di controllo di dominio userà il Microsoft-ContainerInsights-Group-Default flusso, ovvero un flusso di gruppo che include tutti i flussi elencati in Valori di flusso. Se si intende usare una trasformazione, è necessario modificarla in singoli flussi. Tutte le altre impostazioni predefinite dei costi useranno già singoli flussi.

Il frammento di codice seguente mostra il Microsoft-ContainerInsights-Group-Default flusso. Per un esempio di singoli flussi, vedere i controller di dominio di esempio.

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

Flussi di dati

La sezione dataFlows del DCR corrisponde ai flussi con le destinazioni. I flussi che non richiedono una trasformazione possono essere raggruppati in una singola voce che include solo la destinazione dell'area di lavoro. Creare una voce separata per i flussi che richiedono una trasformazione che includa la destinazione dell'area di lavoro e la transformKql proprietà .

Il frammento di codice seguente illustra la dataFlows sezione relativa a un singolo flusso con una trasformazione. Vedere i controller di dominio di esempio per più flussi di dati in un singolo DCR.

"dataFlows": [
    {
        "streams": [
            "Microsoft-ContainerLogV2"
        ],
        "destinations": [
            "ciworkspace"
        ],
        "transformKql": "source | where PodNamespace == 'kube-system'"
    }
]

Controller di dominio di esempio

Negli esempi seguenti vengono mostrati i controller di dominio per informazioni dettagliate sui contenitori usando le trasformazioni. Usare questi esempi come punto di partenza e personalizzarli in base alle esigenze specifiche.

Filtrare per uno spazio dei nomi specifico

In questo esempio viene usata la query source | where PodNamespace == 'kube-system' di log per raccogliere dati per un singolo spazio dei nomi in ContainerLogsV2. È possibile sostituire kube-system in questa query con un altro spazio dei nomi o sostituire la where clausola con un altro filtro in modo che corrisponda ai dati specifici da raccogliere. Gli altri flussi vengono raggruppati in un flusso di dati separato e non hanno alcuna trasformazione applicata.

{
    "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'"
            }
        ] 
    }
}

Aggiunta di una colonna a una tabella

In questo esempio viene usata la query source | extend new_CF = ContainerName di log per inviare dati a una colonna personalizzata aggiunta alla ContainerLogV2 tabella. Questa trasformazione richiede l'aggiunta della colonna personalizzata alla tabella usando il processo descritto in Aggiungere o eliminare una colonna personalizzata. Gli altri flussi vengono raggruppati in un flusso di dati separato e non hanno alcuna trasformazione applicata.

{
    "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"
            }
        ]
    }
}

Passaggi successivi