Configurar a coleta de dados no Container insights usando o ConfigMap

Este artigo descreve como configurar a coleta de dados no Container insights usando o ConfigMap. O ConfigMaps é um mecanismo do Kubernetes que permite armazenar dados não confidenciais, como arquivo de configuração ou variáveis de ambiente.

O ConfigMap é usado principalmente para configurar a coleta de dados dos logs de contêiner e variáveis de ambiente do cluster. Você pode configurar individualmente os logs stdout e stderr e também habilitar o registro em log de várias linhas. l A configuração específica que você pode executar com o ConfigMap inclui:

  • Ativar/desativar e filtragem de namespace para logs stdout e stderr
  • Habilitar/desabilitar a coleta de variáveis de ambiente para o cluster
  • Filtrar eventos Kube Normais
  • Selecionar esquema de log
  • Ativar/desativar o registo de várias linhas
  • Ignorar configurações de proxy

Importante

A configuração completa da coleta de dados no Container insights pode exigir a edição do ConfigMap e da regra de coleta de dados (DCR) para o cluster, uma vez que 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 a regra de coleta de dados para obter uma lista de configurações e o processo para configurar a coleta de dados usando o DCR.

Pré-requisitos

  • ConfigMap é uma lista global e pode haver apenas um ConfigMap aplicado ao agente para insights de contêiner. A aplicação de outro ConfigMap anulará as configurações anteriores da coleção ConfigMap.
  • A versão mínima do agente suportada para coletar variáveis stdout, stderr e ambientais de cargas de trabalho de contêiner é ciprod06142019 ou posterior. Para verificar a versão do agente, na guia Nó, selecione um nó. No painel Propriedades, observe o valor da propriedade Agent Image Tag. Para obter mais informações sobre as versões do agente e o que está incluído em cada versão, consulte Notas de versão do agente.

Configurar e implantar o ConfigMap

Use o procedimento a seguir para configurar e implantar o arquivo de configuração do ConfigMap no cluster:

  1. Baixe o arquivo YAML do modelo ConfigMap e abra-o em um editor. Se você já tem um arquivo ConfigMap, então você pode usá-lo.

  2. Edite o arquivo YAML do ConfigMap com suas personalizações usando as configurações descritas em Configurações de coleta de dados

  3. Crie um ConfigMap executando o seguinte comando kubectl:

    kubectl apply -f <configmap_yaml_file.yaml>
    

    Exemplo:

    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    A alteração de configuração pode levar alguns minutos para ser concluída antes de entrar em vigor. Em seguida, todos os pods do Azure Monitor Agent no cluster serão reiniciados. A reinicialização é uma reinicialização contínua para todos os pods do Azure Monitor Agent, portanto, nem todos são reiniciados ao mesmo tempo. Quando as reinicializações estiverem concluídas, você receberá uma mensagem semelhante ao seguinte resultado:

    configmap "container-azm-ms-agentconfig" created`.
    

Configurações de coleta de dados

A tabela a seguir descreve as configurações que você pode configurar para controlar a coleta de dados.

Definição Tipo de dados valor Description
schema-version String (diferencia maiúsculas de minúsculas) v1 Usado pelo agente ao analisar este ConfigMap. A versão do esquema atualmente suportada é v1. Não há suporte para modificar esse valor e será rejeitado quando o ConfigMap for avaliado.
config-version String Permite que você acompanhe a versão deste arquivo de configuração em seu sistema/repositório de controle de origem. O máximo de caracteres permitidos é 10 e todos os outros caracteres são truncados.
[log_collection_settings]
[stdout] enabled Boolean verdadeiro
false
Controla se a coleta de log de contêiner stdout está habilitada. Quando definido como true e nenhum namespace é excluído para coleta de log stdout, os logs stdout serão coletados de todos os contêineres em todos os pods e nós no cluster. Se não especificado no ConfigMap, o valor padrão é true.
[stdout] exclude_namespaces String Matriz separada por vírgulas Matriz de namespaces do Kubernetes para os quais os logs stdout não serão coletados. Essa configuração só será efetiva se enabled estiver definida como true. Se não for especificado no ConfigMap, o valor padrão é
["kube-system","gatekeeper-system"].
[stderr] enabled Boolean verdadeiro
false
Controla se a coleta de log de contêiner stderr está habilitada. Quando definido como true e nenhum namespace é excluído para a coleta de log stderr, os logs stderr serão coletados de todos os contêineres em todos os pods e nós no cluster. Se não especificado no ConfigMap, o valor padrão é true.
[stderr] exclude_namespaces String Matriz separada por vírgulas Matriz de namespaces do Kubernetes para os quais os logs stderr não serão coletados. Essa configuração só será efetiva se enabled estiver definida como true. Se não for especificado no ConfigMap, o valor padrão é
["kube-system","gatekeeper-system"].
[env_var] enabled Boolean verdadeiro
false
Essa configuração controla a coleta de variáveis de ambiente em todos os pods e nós no cluster. Se não especificado no ConfigMap, o valor padrão é true. Se a coleção de variáveis de ambiente estiver habilitada globalmente, você poderá desativá-la para um contêiner específico definindo a variável AZMON_COLLECT_ENV de ambiente como False com uma configuração Dockerfile ou no arquivo de configuração para o Pod na env: seção . Se a coleta de variáveis de ambiente estiver desabilitada globalmente, você não poderá habilitar a coleta para um contêiner específico. A única substituição que pode ser aplicada no nível do contêiner é desabilitar a coleta quando ela já estiver habilitada globalmente.
[enrich_container_logs] enabled Boolean verdadeiro
false
Controla o enriquecimento de log de contêiner para preencher os Name valores de propriedade e Image para cada registro de log gravado na tabela ContainerLogV2 ou ContainerLog para todos os logs de contêiner no cluster. Se não especificado no ConfigMap, o valor padrão é false.
[collect_all_kube_events] enabled Boolean verdadeiro
false
Controla se os eventos Kube de todos os tipos são coletados. Por padrão, os eventos Kube com o tipo Normal não são coletados. Quando essa configuração é true, os eventos Normal não são mais filtrados e todos os eventos são coletados. Se não especificado no ConfigMap, o valor padrão é false.
[schema] containerlog_schema_version String (diferencia maiúsculas de minúsculas) v2
v1
Define o formato de ingestão de log. Se v2, a tabela ContainerLogV2 for usada. Se v1, a tabela ContainerLog for usada (esta tabela foi preterida). Para clusters que habilitam insights de contêiner usando a CLI do Azure versão 2.54.0 ou superior, a configuração padrão é v2. Consulte Esquema de log de insights de contêiner para obter detalhes.
[enable_multiline_logs] enabled Boolean verdadeiro
false
Controla se os logs de contêiner de várias linhas estão habilitados. Consulte Registro em log de várias linhas no Container Insights para obter detalhes. Se não especificado no ConfigMap, o valor padrão é false. Isso requer que a schema configuração seja v2.
[metric_collection_settings]
[collect_kube_system_pv_metrics] enabled Boolean verdadeiro
false
Permite que métricas de uso de volume persistente (PV) sejam coletadas no namespace kube-system. Por padrão, as métricas de uso para volumes persistentes com declarações de volume persistentes no namespace kube-system não são coletadas. Quando essa configuração é definida como true, as métricas de uso de PV para todos os namespaces são coletadas. Se não especificado no ConfigMap, o valor padrão é false.
[agent_settings]
[proxy_config] ignore_proxy_settings Boolean verdadeiro
false
Quando true, as configurações de proxy são ignoradas. Para ambientes Kubernetes habilitados para AKS e Arc, se o cluster estiver configurado com proxy de encaminhamento, as configurações de proxy serão aplicadas e usadas automaticamente para o agente. Para determinadas configurações, como AMPLS + Proxy, talvez você queira que a configuração de proxy seja ignorada. Se não especificado no ConfigMap, o valor padrão é false.

Verificar configuração

Para verificar se a configuração foi aplicada com êxito a um cluster, use o comando a seguir para revisar os logs de um pod de agente.

kubectl logs ama-logs-fdf58 -n kube-system

Se houver erros de configuração dos pods do Azure Monitor Agent, a saída mostrará erros semelhantes ao exemplo a seguir:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Erros relacionados à aplicação de alterações de configuração também estão disponíveis para revisão. As seguintes opções estão disponíveis para executar mais solução de problemas de alterações de configuração:

  • A partir de um log pod do agente usando o mesmo kubectl logs comando.

  • A partir de registos em tempo real. Os logs dinâmicos mostram erros semelhantes ao exemplo a seguir:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • Na tabela KubeMonAgentEvents no espaço de trabalho do Log Analytics. Os dados são enviados a cada hora com severidade de erro para erros de configuração. Se não houver erros, a entrada na tabela terá dados com informações de gravidade, que não relatam erros. A propriedade Tags contém mais informações sobre o pod e o ID do contêiner no qual o erro ocorreu e também a primeira ocorrência, a última ocorrência e a contagem na última hora.

Verificar a versão do esquema

As versões de esquema de configuração com suporte estão disponíveis como anotação de pod (versões de esquema) no pod do Azure Monitor Agent. Você pode vê-los com o seguinte comando kubectl.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

A saída semelhante ao exemplo a seguir aparece com as versões do esquema de anotação:

    Name:           ama-logs-fdf58
    Namespace:      kube-system
    Node:           aks-agentpool-95673144-0/10.240.0.4
    Start Time:     Mon, 10 Jun 2019 15:01:03 -0700
    Labels:         controller-revision-hash=589cc7785d
                    dsName=ama-logs-ds
                    pod-template-generation=1
    Annotations:    agentVersion=1.10.0.1
                  dockerProviderVersion=5.0.0-0
                    schema-versions=v1 

Perguntas mais frequentes

Como faço para habilitar a coleta de logs para contêineres no namespace kube-system por meio do Helm?

A coleta de logs de contêineres no namespace kube-system é desabilitada por padrão. Você pode habilitar a coleta de logs definindo uma variável de ambiente no Azure Monitor Agent. Consulte a página Container insights do GitHub.

Próximos passos