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
- Leia mais sobre transformações e regras de coleta de dados no Azure Monitor.