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.

Důležité

Články Konfigurace shromažďování protokolů v přehledech kontejnerů a filtrování shromažďování protokolů v Přehledech kontejnerů popisují standardní nastavení konfigurace pro konfiguraci a filtrování shromažďování dat pro přehledy kontejnerů. Před použitím transformací byste měli provést jakoukoli požadovanou konfiguraci pomocí těchto funkcí. Pomocí transformace můžete provádět filtrování nebo jinou konfiguraci dat, kterou nemůžete provést se standardním nastavením konfigurace.

Pravidlo shromažďování dat

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. Konfigurace shromažďování dat pomocí DCR popisuje řadič domény, který se automaticky vytvoří při povolení přehledů kontejneru v clusteru. Pokud chcete vytvořit transformaci, musíte provést jednu z následujících akcí:

  • Nový cluster K nasazení clusteru AKS do přehledů kontejnerů použijte existující šablonu ARM. Upravte řadič domény v této šabloně s požadovanou konfigurací, včetně transformace podobné jedné z níže uvedených ukázek.
  • Stávající řadič domény. Po nasazení clusteru do přehledů kontejnerů a konfigurace shromažďování dat upravte jeho řadič domény tak, aby zahrnoval transformaci pomocí některé z metod v úpravách pravidel shromažďování dat.

Poznámka:

V současné době existuje minimální uživatelské rozhraní pro úpravy řadičů domény, které je potřeba k přidání transformací. Ve většině případů musíte řadič domény upravit ručně. Tento článek popisuje strukturu DCR, která se má implementovat. Pokyny k implementaci této struktury najdete v tématu Vytvoření a úprava pravidel shromažďování dat (DCR) ve službě Azure Monitor .

Zdroje dat

Část Zdroje dat dcR definuje různé typy příchozích dat, které bude dcR zpracovávat. V případě Container Insights se jedná o rozšíření Container Insights, které zahrnuje jednu nebo více předdefinovaných streams předponou Od Microsoftu.

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í ukázka ukazuje Microsoft-ContainerInsights-Group-Default stream. Ukázkové řadiče domény najdete v ukázkách s využitím jednotlivých datových proudů.

"dataSources": {
    "extensions": [
        {
            "streams": [
                "Microsoft-ContainerInsights-Group-Default"
            ],
            "name": "ContainerInsightsExtension",
            "extensionName": "ContainerInsights",
            "extensionSettings": { 
                "dataCollectionSettings": {
                    "interval": "1m",
                    "namespaceFilteringMode": "Off",
                    "namespaces": null,
                    "enableContainerLogV2": true
                }
            }
        }
    ]
}

Toky dat

Část Toky dat dcR odpovídá datovým proudům s cíli definovanými v destinations části DCR. Názvy tabulek nemusí být zadány pro známé datové proudy, pokud se data odesílají do výchozí tabulky. Datové proudy, které nevyžadují transformaci, je možné seskupit do jedné položky, která zahrnuje pouze cíl pracovního prostoru. Každá bude odeslána do výchozí tabulky.

Vytvořte samostatnou položku pro datové proudy, které vyžadují transformaci. To by mělo zahrnovat cíl pracovního prostoru a transformKql vlastnost. Pokud odesíláte data do alternativní tabulky, musíte zahrnout outputStream vlastnost, která určuje název cílové tabulky.

Následující ukázka 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

Filtrování dat

První příklad vyfiltruje data z ContainerLogV2 závislosti na sloupci LogLevel . Budou se shromažďovat pouze záznamy s LogLevel nebo error critical budou shromažďovány, protože se jedná o položky, které můžete použít k upozorňování a identifikaci problémů v clusteru. Shromažďování a ukládání dalších úrovní, jako info jsou a debug generování nákladů bez významné hodnoty.

Tyto záznamy můžete načíst pomocí následujícího dotazu protokolu.

ContainerLogV2 | where LogLevel in ('error', 'critical')

Tato logika je znázorněna v následujícím diagramu.

Diagram znázorňující filtrování protokolů kontejneru pomocí transformace

V transformaci se název source tabulky používá k reprezentaci příchozích dat. Následuje upravený dotaz, který se má použít v transformaci.

source | where LogLevel in ('error', 'critical')

Následující ukázka ukazuje tuto transformaci přidanou do DCR Container Insights. Všimněte si, že se používá Microsoft-ContainerLogV2 samostatný tok dat, protože se jedná o jediný příchozí datový proud, na který se má transformace použít. Pro ostatní datové proudy se používá samostatný tok dat.

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

Odesílání dat do různých tabulek

V příkladu výše jsou shromažďovány pouze záznamy s určitou nebo error critical shromážděnouLogLevel. Alternativní strategií místo shromažďování těchto záznamů je uložit je do alternativní tabulky nakonfigurované pro základní protokoly.

Pro tuto strategii jsou potřeba dvě transformace. První transformace odešle záznamy s LogLevel error výchozí tabulkou nebo critical do výchozí tabulky. Druhá transformace odešle ostatní záznamy do vlastní tabulky s názvem ContainerLogV2_CL. Níže uvedené dotazy se používají source pro příchozí data, jak je popsáno v předchozím příkladu.

# 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')

Tato logika je znázorněna v následujícím diagramu.

Diagram znázorňující filtrování protokolů kontejneru pomocí transformace, která odesílá některá data do tabulky analýzy a dalších dat do základních protokolů

Důležité

Před instalací DCR v této ukázce musíte vytvořit novou tabulku se stejným schématem jako ContainerLogV2. Pojmenujte ho ContainerLogV2_CL a nakonfigurujte ho pro základní protokoly.

Následující ukázka ukazuje tuto transformaci přidanou do DCR Container Insights. V tomto dcR existují dva toky Microsoft-ContainerLogV2 dat, jeden pro každou transformaci. První se odešle do výchozí tabulky, kterou nemusíte zadávat. Druhá vyžaduje outputStream , aby vlastnost určila cílovou tabulku.

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

Další kroky