Compartilhar via


Configurar a coleção de logs em Insights de contêiner

Este artigo fornece detalhes sobre como configurar a coleta de dados em Insights de contêiner para o cluster do Kubernetes depois de integrado. Para obter diretrizes sobre como habilitar Insights de contêiner no cluster, consulte Habilitar o monitoramento para clusters do Kubernetes.

Métodos de configuração

Há dois métodos usados para configurar e filtrar dados coletados em Insights de contêiner. Dependendo da configuração, você poderá escolher entre os dois métodos ou talvez seja necessário usar um ou outro. Os dois métodos são descritos na tabela abaixo com informações detalhadas nas seções a seguir.

Método Descrição
Regra de coleta de dados (DCR) As regras de coleta de dados são conjuntos de instruções que dão suporte à coleta de dados usando opipeline do Azure Monitor. Uma DCR é criada ao habilitar os Insights de contêiner e pode modificar as configurações nesta DCR usando o portal do Azure ou outros métodos.
ConfigMap ConfigMaps são um mecanismo do Kubernetes que permite armazenar dados não confidenciais, como um arquivo de configuração ou variáveis de ambiente. Os insights de contêiner procuram um ConfigMap em cada cluster com configurações específicas que definem os dados que ele deve coletar.

Configurar a coleta de dados usando a DCR

A DCR criada por Insights de contêiner é denominada MSCI-cluster-region-cluster-name><<>. É possível exibir esta DCR juntamente com outras pessoas em sua assinatura e editá-la usando métodos descritos em Criar e editar as DCRs (regras de coleta de dados) no Azure Monitor. Embora seja possível modificar diretamente a DCR para personalizações específicas, você poderá executar a configuração mais necessária usando os métodos descritos abaixo. Consulte Transformações de dados em Insights de contêiner para obter detalhes sobre como editar a DCR diretamente para obter configurações mais avançadas.

Importante

Os clusters do AKS devem usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário. Se o cluster estiver usando uma entidade de serviço, você deverá atualizar o cluster para usar uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário.

Configurar a DCR com o portal do Azure

Usando o portal do Azure, selecione entre várias configurações pre-definidas para coleta de dados em Insights de contêiner. Essas configurações incluem diferentes conjuntos de tabelas e frequências de coleção, dependendo de suas prioridades específicas. Também é possível personalizar as configurações para coletar apenas os dados necessários. Use o portal do Azure para personalizar a configuração no cluster existente depois que os Insights de contêiner estiverem habilitados ou execute essa configuração ao habilitar os Insights de contêiner no cluster.

  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 pre-definições de custo.

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

    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
  6. Se você quiser personalizar as configurações, clique em Editar configurações de coleção.

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

    Nome Descrição
    Frequência de coleta 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.
    Filtragem de namespace Desativado: coleta dados em todos os namespaces.
    Inclua: coleta apenas dados dos valores no campo namespaces.
    Excluir: coleta dados de todos os namespaces, exceto os valores no campo namespaces.

    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.
    Dados coletados Define quais tabelas de Insights de contêiner coletar. Veja abaixo uma descrição de cada agrupamento.
    Habilitar a ContainerLogV2 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.
    Habilitar a coleção Syslog Habilita a coleção Syslog do cluster.

    A opção Dados coletados permite que você selecione as tabelas preenchidas para o cluster. As tabelas são agrupadas pelos cenários mais comuns. Para especificar tabelas individuais. modifique a DCR usando outro método.

    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
  7. Clique em Configurar para salvar as configurações.

Tabelas e métricas aplicáveis para DCR

As configurações de frequência de coleta e filtragem de namespace na DCR 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.

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 Sim

Transmitir valores na DCR

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 Fluxos de dados do DCR.

STREAM Tabela de insights do contêiner
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (modo de ajuste de escala alta)1
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

1 Você não deve usar Microsoft-ContainerLogV2 e Microsoft-ContainerLogV2-HighScale simultaneamente no mesmo DCR. Isso resultará em dados duplicados.

Compartilhar a DCR com vários clusters

Ao habilitar os Insights de contêiner em um cluster do Kubernetes, uma nova DCR é criada para esse cluster e a DCR para cada cluster pode ser modificada de forma independente. Caso tenha vários clusters com configurações de monitoramento personalizadas, convém compartilhar uma única DCR com vários clusters. Em seguida, você poderá fazer alterações em uma única DCR que é implementada automaticamente para todos os clusters associados a ele.

Uma DCR é associada a um cluster com uma DCRA (associação de regra de coleta de dados). Use a experiência de versão prévia da DCR para exibir e remover associações de DCR existentes para cada cluster. Em seguida, use este recurso para adicionar uma associação a uma única DCR para vários clusters.

Configurar a coleta de dados usando ConfigMap

ConfigMaps são um mecanismo do Kubernetes que permite armazenar dados não confidenciais, como um arquivo de configuração ou variáveis de ambiente. Os insights de contêiner procuram um ConfigMap em cada cluster com configurações específicas que definem os dados que ele deve coletar.

Importante

ConfigMap é uma lista global e só pode haver um ConfigMap aplicado ao agente para insights de contêiner. Aplicar outro ConfigMap anulará as configurações anteriores da coleção ConfigMap.

Pré-requisitos

  • A versão mínima do agente com suporte para coletar variáveis stdout, stderr e variáveis de ambiente de cargas de trabalho do contêiner é ciprod06142019 ou posterior.

Configurar e implantar o ConfigMap

Use o procedimento a seguir para configurar e implementar seu arquivo de configuração ConfigMap em seu cluster:

  1. Caso ainda não tenha um ConfigMap para Insights de contêiner, baixe o arquivo YAML do ConfigMap de modelo e abra-o em um editor.

  2. Edite o arquivo YAML do ConfigMap com suas personalizações. O modelo inclui todas as configurações válidas com descrições. Para habilitar uma configuração, remova o caractere de comentário (#) e defina seu valor.

  3. Crie um ConfigMap executando o seguinte comando kubectl:

    kubectl config set-context <cluster-name>
    kubectl apply -f <configmap_yaml_file.yaml>
    
    # Example: 
    kubectl config set-context my-cluster
    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    A alteração da configuração pode levar alguns minutos para ser concluída, antes de entrar em vigor. Em seguida, todos os pods do Agente do Azure Monitor no cluster serão reiniciados. A reinicialização ocorre sem interrupção para todos os pods do agente do Azure Monitor e, assim, nem todos são reiniciados mesmo tempo. Quando as reinicializações terminarem, você receberá uma mensagem semelhante ao seguinte resultado:

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

Verificar a configuração

Para verificar se a configuração foi aplicada com sucesso 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 -c ama-logs

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

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

Use as opções a seguir para realizar mais soluções de problemas de alterações de configuração:

  • Use o mesmo comando kubectl logs de um pod de agente.

  • Examine os logs ao vivo em busca de erros semelhantes aos seguintes:

    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
    
  • Os dados são enviados para a tabela KubeMonAgentEvents no workspace do Log Analytics 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 sobre severidade, que relatarão nenhum erro. A coluna Tags contém mais informações sobre o pod e a ID do contêiner em que o erro ocorreu, e também a primeira e a última ocorrências e a contagem da última hora.

Verificar a versão do esquema

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

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

Configurações de ConfigMap

A tabela a seguir descreve as configurações possíveis para o controle da coleta de dados com o ConfigMap.

Configuração Data type Valor DESCRIÇÃO
schema-version Cadeia de caracteres (diferencia maiúsculas e minúsculas) v1 Usado pelo agente ao analisar este ConfigMap. No momento, a versão de esquema com suporte é v1. Não há suporte para modificar esse valor, e ele 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. São permitidos no máximo dez caracteres; todos os outros são truncados.
[log_collection_settings]
[stdout]
enabled
Booliano true
false
Controla se a coleta de logs do contêiner stdout está habilitada. Quando definido como true e nenhum namespace for excluído para a coleta de logs stdout, os logs stdout serão coletados de todos os contêineres em todos os pods e nós do cluster. Se ele não for especificado no ConfigMap, o valor padrão será true.
[stdout]
exclude_namespaces
String Matriz separada por vírgulas Matriz de namespaces de Kubernetes para os quais os logs de stdout não serão coletados. Essa configuração só entrará em vigor se enabled estiver definido como true. Se esse campo não for especificado no ConfigMap, o valor padrão será
["kube-system","gatekeeper-system"].
[stderr]
enabled
Booliano true
false
Controla se a coleta de logs do contêiner stderr está habilitada. Quando definido como true e nenhum namespace for excluído para a coleta de logs stderr, os logs stderr serão coletados de todos os contêineres em todos os pods e nós no cluster. Se ele não for especificado no ConfigMap, o valor padrão será true.
[stderr]
exclude_namespaces
String Matriz separada por vírgulas Matriz de namespaces de Kubernetes para os quais os logs de stderr não serão coletados. Essa configuração só entrará em vigor se enabled estiver definido como true. Se esse campo não for especificado no ConfigMap, o valor padrão será
["kube-system","gatekeeper-system"].
[env_var]
enabled
Booliano true
false
Controla a coleta de variáveis de ambiente em todos os pods e nós do cluster. Se ele não for especificado no ConfigMap, o valor padrão será true.
[enrich_container_logs]
enabled
Booliano true
false
Controla o enriquecimento de log de contêiner para preencher os valores de propriedade Name e Image de cada registro de log gravado na tabela ContainerLog para todos os logs de contêiner no cluster. Se ele não for especificado no ConfigMap, o valor padrão será false.
[collect_all_kube_events]
enabled
Booliano true
false
Controla se eventos Kube de todos os tipos são coletados. Por padrão, os eventos Kube com tipo Normal não são coletados. Quando essa configuração é true, os eventos Normais não são mais filtrados e todos os eventos são coletados. Se ele não for especificado no ConfigMap, o valor padrão será false.
[schema]
containerlog_schema_version
Cadeia de caracteres (diferencia maiúsculas e minúsculas) v2
v1
Define o formato de ingestão de log. Se v2, a tabela ContainerLogV2 será usada. Se v1, a tabela ContainerLog será usada (essa tabela foi descontinuada). 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. Veja Esquema de log do Container Insights para obter detalhes.
[enable_multiline_logs]
enabled
Booliano true
false
Controla se os logs de contêiner multilinha estão habilitados. Veja Registro multilinha no Contêiner de Insights para obter detalhes. Se ele não for especificado no ConfigMap, o valor padrão será false. Isso requer que a configuração schema seja v2.
[metadata_collection]
enabled
Booliano true
false
Controla se os metadados são coletados na coluna KubernetesMetadata da tabela ContainerLogV2.
[metadata_collection]
include_fields
String Matriz separada por vírgulas Lista de campos de metadados a serem incluídos. Se a configuração não for usada, todos os campos serão coletados. Os valores válidos são ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[metric_collection_settings]
[collect_kube_system_pv_metrics]
enabled
Booliano true
false
Permite que métricas de uso de volume persistente (PV) sejam coletadas no namespace kube-system. Por padrão, métricas de uso para volumes persistentes com declarações de volume persistente no namespace kube-system não são coletadas. Quando essa configuração é definida como true, são coletadas métricas de uso de PV para todos os namespaces. Se ele não for especificado no ConfigMap, o valor padrão será false.
[agent_settings]
[proxy_config]
ignore_proxy_settings
Booliano true
false
Quando true, as configurações de proxy são ignoradas. Para ambientes Kubernetes ativados por AKS e Arc, se o seu cluster estiver configurado com proxy de encaminhamento, as configurações de proxy serão automaticamente aplicadas e usadas para o agente. Para determinadas configurações, como AMPLS + Proxy, talvez você queira que a configuração do proxy seja ignorada. Se ele não for especificado no ConfigMap, o valor padrão será false.

Próximas etapas