Sdílet prostřednictvím


Transformace dat v Přehledech kontejnerů

Tento článek popisuje, jak implementovat transformace dat v Přehledech kontejnerů. Transformace ve službě Azure Monitor umožňují upravit nebo filtrovat data před tím, než se ingestují v pracovním prostoru služby Log Analytics. Umožňují provádět takové akce, jako je filtrování dat shromážděných z clusteru, abyste ušetřili náklady nebo zpracovávali příchozí data, která vám pomůžou s dotazy na data.

Pravidla shromažďování dat (DCR)

Transformace se implementují v pravidlech shromažďování dat (DCR), která se používají ke konfiguraci shromažďování dat ve službě Azure Monitor. Když nasadíte přehledy kontejneru pro cluster, vytvoří se pro něj DCR s názvem MSCI-cluster-region><-<\cluster-name>. Tento řadič domény můžete zobrazit z pravidel shromažďování dat v nabídce Monitorování na webu Azure Portal. Pokud chcete vytvořit transformaci, musíte buď upravit tento řadič domény, nebo nasadit cluster pomocí vlastního řadiče domény, který zahrnuje vaši transformaci.

Následující tabulka popisuje různé metody úprav dcR, zatímco zbytek tohoto článku obsahuje podrobnosti o úpravách, které je potřeba provést k transformaci dat Container Insights.

metoda Popis
Nový cluster K nasazení clusteru AKS do přehledů kontejnerů použijte existující šablonu ARM. dataFlows Upravte oddíl DCR v této šabloně tak, aby zahrnoval transformaci, podobně jako v některé z ukázek níže.
Stávající řadič domény Po nasazení clusteru do přehledů kontejnerů upravte jeho řadič domény tak, aby zahrnoval transformaci pomocí procesu úprav pravidel shromažďování dat.

Zdroje dat

Oddíl Zdroje dat DCR definuje různé typy příchozích dat, které bude DCR zpracovávat. Pro Container Insights to zahrnuje ContainerInsights rozšíření, které zahrnuje jedno nebo více předdefinovaných streams počínaje předponou Microsoft-.

Seznam streamů Container Insights v DCR závisí na přednastavení nákladů, které jste vybrali pro cluster. Pokud shromáždíte všechny tabulky, dcR použije Microsoft-ContainerInsights-Group-Default stream, což je skupinový stream, který obsahuje všechny streamy uvedené v hodnotách Streamu. Pokud použijete transformaci, musíte to změnit na jednotlivé datové proudy. Všechna ostatní nastavení přednastavení nákladů už budou používat jednotlivé datové proudy.

Následující fragment kódu ukazuje Microsoft-ContainerInsights-Group-Default stream. Ukázkové řadiče domény najdete v ukázce jednotlivých datových proudů.

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

Toky dat

Oddíl toků dat v DCR odpovídá datovým proudům s cíli. Datové proudy, které nevyžadují transformaci, je možné seskupit do jedné položky, která zahrnuje pouze cíl pracovního prostoru. Vytvořte samostatnou položku pro datové proudy, které vyžadují transformaci, která zahrnuje cíl pracovního prostoru a transformKql vlastnost.

Následující fragment kódu ukazuje dataFlows část jednoho datového proudu s transformací. Podívejte se na ukázkové dcrs pro více toků dat v jednom DCR.

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

Ukázkové žádosti o řadič domény

Následující ukázky ukazují dcrs pro přehledy kontejnerů pomocí transformací. Tyto ukázky použijte jako výchozí bod a přizpůsobte si je podle potřeby tak, aby splňovaly vaše konkrétní požadavky.

Filtrování pro konkrétní obor názvů

Tato ukázka používá dotaz source | where PodNamespace == 'kube-system' protokolu ke shromažďování dat pro jeden obor názvů v ContainerLogsV2. V tomto dotazu můžete nahradit kube-system jiným oborem názvů nebo nahradit where klauzuli jiným filtrem tak, aby odpovídala konkrétním datům, která chcete shromáždit. Ostatní datové proudy jsou seskupené do samostatného toku dat a nemají použitou transformaci.

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

Přidání sloupce do tabulky

Tato ukázka používá dotaz source | extend new_CF = ContainerName protokolu k odeslání dat do vlastního sloupce přidaného ContainerLogV2 do tabulky. Tato transformace vyžaduje přidání vlastního sloupce do tabulky pomocí procesu popsaného v části Přidání nebo odstranění vlastního sloupce. Ostatní datové proudy jsou seskupené do samostatného toku dat a nemají použitou transformaci.

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

Další kroky