Configurar a coleta de dados e a otimização de custos em insights de contêiner usando a regra de coleta de dados

Este artigo descreve como configurar a coleta de dados em insights de contêiner usando a DCR (regra de coleta de dados) para o cluster Kubernetes. Isso inclui configurações predefinida para otimizar seus custos. Uma DCR é criada quando você integra um cluster aos insights de contêiner. Essa DCR é usada pelo agente em contêineres para definir a coleta de dados para o cluster.

A DCR é usada principalmente para configurar a coleta de dados de desempenho e de inventário e para configurar a otimização dos custos.

A configuração específica que você pode executar com a DCR inclui:

  • Habilitar/desabilitar a filtragem de coleta e namespace para dados de desempenho e estoque.
  • Definir o intervalo de coleta para dados de desempenho e inventário
  • Habilitar/desabilitar a coleta de Syslog
  • Selecionar esquema de log

Importante

A configuração completa da coleta de dados em insights de contêiner pode exigir a edição da DCR e do ConfigMap para o cluster, pois cada método permite a configuração de um conjunto diferente de configurações.

Consulte Configurar a coleta de dados em insights de contêiner usando o ConfigMap para obter uma lista de configurações e o processo para configurar a coleta de dados usando ConfigMap.

Pré-requisitos

  • Os clusters do AKS devem usar o Sistema ou a Identidade Gerenciada Atribuída pelo Usuário. Se o cluster estiver usando uma Entidade de Serviço, você deverá atualizar para a Identidade Gerenciada.

Configurar a coleta de dados

A DCR que é criada quando você habilita insights de contêiner é chamada MSCI-<região-do-cluster>-<nome-do-cluster>. Você pode exibi-la no portal do Azure selecionando a opção Regras de Coleta de Dados no menu Monitorar no portal do Azure. Em vez de modificar diretamente a DCR, você deve usar um dos métodos descritos abaixo para configurar a coleta de dados. Consulte Parâmetros de coleta de dados para obter detalhes sobre as diferentes configurações disponíveis usadas por cada método.

Aviso

A experiência de insights de contêiner padrão depende de todos os fluxos de dados existentes. A remoção de um ou mais fluxos padrão torna a experiência de insights de contêiner indisponível e você precisa usar outras ferramentas, como painéis do Grafana e consultas de log para analisar os dados coletados.

Você pode usar o portal do Azure para habilitar a otimização de custos em seu cluster existente após a habilitação dos insights de contêiner ou habilitar insights de contêiner no cluster, juntamente com a otimização de custos.

  1. Selecione o cluster no portal do Azure.

  2. Selecione a opção Insights na seção Monitoramento do menu.

  3. Se os insights de contêiner já tiverem sido habilitados no cluster, selecione o botão Configurações de Monitoramento. Caso contrário, selecione Configurar o Azure Monitor e veja Habilitar o monitoramento em seu cluster do Kubernetes com o Azure Monitor para obter detalhes sobre como habilitar o monitoramento.

    Captura de tela do cluster do AKS com o botão de monitoramento das configurações.

  4. Para o AKS e o Kubernetes habilitado para Arc, selecione Usar identidade gerenciada se você ainda não migrou o cluster para a autenticaçãode identidade gerenciada.

  5. Selecione uma das predefinições de custo descritas nas predefinições de custo.

    Captura de tela que mostra as opções de integração.

  6. Se você quiser personalizar as configurações, clique em Editar configurações de coleção. Consulte os parâmetros de coleta de dados para obter detalhes sobre cada configuração. Para dados coletados, consulte dados coletados abaixo.

    Captura de tela que mostra as opções de configurações de coleção.

  7. Clique em Configurar para salvar as configurações.

Predefinições de custo

Ao usar o portal do Azure para configurar a otimização de custos, você pode selecionar entre as configurações predefinida a seguir. Você pode selecionar uma delas ou fornecer suas próprias configurações personalizadas. Por padrão, os insights de contêiner usam a predefinição Standard.

Predefinição de custo Frequência de coleta Filtros de namespace Coleção do Syslog Dados coletados
Standard 1min Nenhum não ativado Todas as tabelas de insights do contêiner padrão
Com otimização de custos 5min Exclui kube-system, gatekeeper-system, azure-arc não ativado Todas as tabelas de insights do contêiner padrão
Syslog 1min Nenhum Habilitado por padrão Todas as tabelas de insights do contêiner padrão
Logs e eventos 1min Nenhum não ativado ContainerLog/ContainerLogV2
KubeEvents
KubePodInventory

Dados coletados

A opção Dados coletados permite que você selecione as tabelas preenchidas para o cluster. Isso é o equivalente ao parâmetro streams ao executar a configuração com a CLI ou o ARM. Se você selecionar qualquer opção diferente de Todos (Padrão), a experiência de insights do contêiner ficará indisponível e deverá usar o Grafana ou outros métodos para analisar os dados coletados.

Captura de tela que mostra as opções de Dados de diagnóstico.

Agrupamento Tabelas Observações
Todos (padrão) Todas as tabelas de insights do contêiner padrão É necessário para habilitar as visualizações de insights de contêiner padrão
Desempenho Perf, InsightsMetrics
Logs e eventos ContainerLog oruContainerLogV2, KubeEvents, KubePodInventory Recomendado se você habilitou as métricas gerenciadas do Prometheus
Cargas de trabalho, implantações e HPAs InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
Volumes persistentes InsightsMetrics, KubePVInventory

Parâmetros de coleta de dados

A tabela a seguir descreve as configurações de coleta de dados com suporte e o nome usado para cada uma para diferentes opções de integração.

Nome Descrição
Frequência de coleta
CLI: interval
ARM: dataCollectionInterval
Determina com que frequência o agente coleta dados. Os valores válidos são de 1m a 30m em intervalos de 1m O valor padrão é 1m. Se o valor estiver fora do intervalo permitido, ele será padronizado como 1 m.
Filtragem de namespace
CLI: namespaceFilteringMode
ARM: namespaceFilteringModeForDataCollection
Inclua: coleta apenas dados dos valores no campo namespaces.
Excluir: coleta dados de todos os namespaces, exceto os valores no campo namespaces.
Desativado: ignora as seleções de namespace e coleta dados em todos os namespaces.
Filtragem de namespace
CLI: namespaces
ARM: namespacesForDataCollection
Matriz de namespaces do Kubernetes separados por vírgulas para coletar dados de inventário e perf com base no namespaceFilteringMode.
Por exemplo, namespaces = ["kube-system", "default"] com a configuração Incluir coleta apenas esses dois namespaces. Com a configuração Excluir, o agente coleta dados de todos os outros namespaces, exceto kube-system e default. Com a configuração Desativar, o agente coleta dados de todos os namespaces, incluindo kube-system e default. Namespaces inválidos e não reconhecidos são ignorados.
Habilitar a ContainerLogV2
CLI: enableContainerLogV2
ARM: enableContainerLogV2
Sinalizador booliano para habilitar o esquema ContainerLogV2. Se definido como true, os logs stdout/stderr serão ingeridos na tabela ContainerLogV2. Caso contrário, os logs de contêiner serão ingeridos na tabela ContainerLog, a menos que seja especificado de outra forma no ConfigMap. Ao especificar os fluxos individuais, você deve incluir a tabela correspondente para ContainerLog ou ContainerLogV2.
Dados coletados
CLI: streams
ARM: streams
Uma matriz de fluxos de tabela de insights de contêiner. Confira os fluxos com suporte acima para o mapeamento da tabela.

Tabelas e métricas aplicáveis

As configurações de frequência de coleta e filtragem de namespace não se aplicam a todos os dados de insights do contêiner. As tabelas a seguir listam as tabelas no workspace do Log Analytics usadas pelos insights de contêiner e as métricas coletadas junto com as configurações que se aplicam a cada uma.

Observação

Esse recurso define as configurações para todas as tabelas de insights de contêiner, exceto ContainerLog e ContainerLogV2. Para definir as configurações dessas tabelas, atualize o ConfigMap descrito nas configurações de coleta de dados do agente.

Nome da tabela Intervalo? Namespaces? Comentários
ContainerInventory Yes Yes
ContainerNodeInventory Yes Não A configuração de coleta de dados para namespaces não é aplicável, pois o Nó do Kubernetes não é um recurso com escopo de namespace
KubeNodeInventory Yes Não A configuração de coleta de dados para namespaces não é aplicável. O Nó do Kubernetes não é um recurso com escopo de namespace
KubePodInventory Yes Yes
KubePVInventory Yes Yes
KubeServices Yes Yes
KubeEvents No Sim A configuração de coleta de dados para Intervalo não é aplicável aos Eventos do Kubernetes
Perf Sim Yes A configuração de coleta de dados para namespaces não é aplicável às métricas relacionadas ao Nó do Kubernetes, pois o Nó do Kubernetes não é um objeto com escopo de namespace.
InsightsMetrics Sim Yes As configurações de coleta de dados só são aplicáveis para as métricas que coletam os seguintes namespaces: container.azm.ms/kubestate, container.azm.ms/pv e container.azm.ms/gpu
Namespace da métrica Intervalo? Namespaces? Comentários
Insights.container/nodes Yes Não O nó não é um recurso com escopo de namespace
Insights.container/pods Yes Yes
Insights.container/containers Yes Yes
Insights.container/persistentvolumes Yes Yes

Valores de fluxo

Ao especificar as tabelas a serem coletadas usando a CLI ou o ARM, especifique um nome de fluxo que corresponda a uma tabela específica no workspace do Log Analytics. A tabela a seguir lista o nome do fluxo para cada tabela.

Observação

Se você estiver familiarizado com a estrutura de uma regra de coleta de dados, os nomes de fluxo nesta tabela serão especificados na seção dataFlows da DCR.

STREAM Tabela de insights do contêiner
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

Impacto nas visualizações e alertas

Se você estiver usando as tabelas acima para outros alertas ou gráficos personalizados, modificar as configurações de coleta de dados poderá prejudicar essas experiências. Se você estiver excluindo namespaces ou reduzindo a frequência de coleta de dados, revise seus alertas, painéis e pastas de trabalho existentes usando esses dados.

Para verificar os alertas que fazem referência a essas tabelas, execute a seguinte consulta do Azure Resource Graph:

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "Perf" or properties  contains "InsightsMetrics" or properties  contains "ContainerInventory" or properties  contains "ContainerNodeInventory" or properties  contains "KubeNodeInventory" or properties  contains"KubePodInventory" or properties  contains "KubePVInventory" or properties  contains "KubeServices" or properties  contains "KubeEvents" 
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

Próximas etapas