Share via


Transformações de dados no Container insights

Este artigo descreve como implementar transformações de dados no Container insights. As transformações no Azure Monitor permitem modificar ou filtrar dados antes que eles sejam ingeridos em seu espaço de trabalho do Log Analytics. Eles permitem que você execute ações como filtrar dados coletados do cluster para economizar custos ou processar dados de entrada para ajudar em suas consultas de dados.

Regras de Recolha de Dados (DCR)

As transformações são implementadas em regras de coleta de dados (DCRs) que são usadas para configurar a coleta de dados no Azure Monitor. Quando você integra o Container insights para um cluster, um DCR é criado para ele com o nome MSCI-cluster-region><-<\cluster-name>. Você pode exibir esse DCR em Regras de Coleta de Dados no menu Monitor no portal do Azure. Para criar uma transformação, você deve modificar esse DCR ou integrar seu cluster com um DCR personalizado que inclua sua transformação.

A tabela a seguir descreve os diferentes métodos para editar o DCR, enquanto o restante deste artigo fornece detalhes das edições que você precisa executar para transformar os dados do Container insights.

Método Description
Novo cluster Use um modelo ARM existente para integrar um cluster AKS ao Container insights. Modifique a dataFlows seção do DCR nesse modelo para incluir uma transformação, semelhante a um dos exemplos abaixo.
DCR existente Depois que um cluster tiver sido integrado ao Container insights, edite seu DCR para incluir uma transformação usando o processo em Editando regras de coleta de dados.

Origens de dados

A seção dataSources do DCR define os diferentes tipos de dados de entrada que o DCR processará. Para informações de contêiner, isso inclui a ContainerInsights extensão, que inclui uma ou mais predefinições streams começando com o prefixo Microsoft-.

A lista de fluxos de informações de contêiner no DCR depende da predefinição de Custo selecionada para o cluster. Se você coletar todas as tabelas, o DCR usará o Microsoft-ContainerInsights-Group-Default fluxo, que é um fluxo de grupo que inclui todos os fluxos listados em Valores de fluxo. Você deve alterar isso para fluxos individuais se for usar uma transformação. Quaisquer outras configurações predefinidas de custo já usarão fluxos individuais.

O trecho abaixo mostra o Microsoft-ContainerInsights-Group-Default fluxo. Consulte os DCRs de exemplo para obter uma amostra de fluxos individuais.

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

Fluxos de dados

A seção dataFlows do DCR faz a correspondência entre fluxos e destinos. Os fluxos que não exigem uma transformação podem ser agrupados em uma única entrada que inclui apenas o destino do espaço de trabalho. Crie uma entrada separada para fluxos que exigem uma transformação que inclua o destino do espaço de trabalho e a transformKql propriedade.

O trecho abaixo mostra a dataFlows seção de um único fluxo com uma transformação. Consulte os DCRs de exemplo para vários fluxos de dados em um único DCR.

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

Exemplos de DCRs

Os exemplos a seguir mostram DCRs para insights de contêiner usando transformações. Use esses exemplos como ponto de partida e personalize-o, conforme necessário, para atender às suas necessidades específicas.

Filtrar para um namespace específico

Este exemplo usa a consulta source | where PodNamespace == 'kube-system' de log para coletar dados para um único namespace no ContainerLogsV2. Você pode substituir kube-system nesta consulta por outro namespace ou substituir a where cláusula por outro filtro para corresponder aos dados específicos que deseja coletar. Os outros fluxos são agrupados em um fluxo de dados separado e não têm nenhuma transformação aplicada.

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

Adicionar uma coluna a uma tabela

Este exemplo usa a consulta source | extend new_CF = ContainerName de log para enviar dados para uma coluna personalizada adicionada ContainerLogV2 à tabela. Essa transformação requer que você adicione a coluna personalizada à tabela usando o processo descrito em Adicionar ou excluir uma coluna personalizada. Os outros fluxos são agrupados em um fluxo de dados separado e não têm nenhuma transformação aplicada.

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

Próximos passos