Partilhar via


Configurar a coleta de logs no Container insights

Este artigo fornece detalhes sobre como configurar a coleta de dados no Container insights para seu cluster Kubernetes depois que ele for integrado. Para obter orientação sobre como habilitar insights de contêiner em seu cluster, consulte Habilitar monitoramento para clusters Kubernetes.

Métodos de configuração

Há dois métodos usados para configurar e filtrar os dados que estão sendo coletados no Container insights. Dependendo da configuração, você poderá escolher entre os dois métodos ou poderá ser 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 Description
Regra de recolha de dados (DCR) As regras de coleta de dados são conjuntos de instruções que dão suporte à coleta de dados usando o pipeline do Azure Monitor. Um DCR é criado quando você habilita Insights de contêiner e você pode modificar as configurações nesse DCR usando o portal do Azure ou outros métodos.
ConfigMap O ConfigMaps é um mecanismo do Kubernetes que permite armazenar dados não confidenciais, como um arquivo de configuração ou variáveis de ambiente. O Container insights procura um ConfigMap em cada cluster com configurações específicas que definem os dados que ele deve coletar.

Configurar a coleta de dados usando DCR

O DCR criado pelo Container insights é chamado MSCI-cluster-region-cluster-name><<>. Você pode exibir esse DCR junto com outros em sua assinatura e editá-lo usando os métodos descritos em Criar e editar regras de coleta de dados (DCRs) no Azure Monitor. Embora você possa modificar diretamente o DCR para personalizações específicas, você pode executar a maioria das configurações necessárias usando os métodos descritos abaixo. Consulte Transformações de dados em Informações de contêiner para obter detalhes sobre como editar o DCR diretamente para obter configurações mais avançadas.

Importante

Os clusters 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á atualizá-lo para usar uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário.

Configurar o DCR com o portal do Azure

Usando o portal do Azure, você pode selecionar entre várias configurações predefinidas para coleta de dados no Container insights. Essas configurações incluem diferentes conjuntos de tabelas e frequências de coleta, dependendo de suas prioridades específicas. Você também pode personalizar as configurações para coletar apenas os dados necessários. Você pode usar o portal do Azure para personalizar a configuração em seu cluster existente depois que o Container insights tiver sido habilitado, ou pode executar essa configuração ao habilitar o Container insights no cluster.

  1. Selecione o cluster no portal do Azure.

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

  3. Se o Container insights já tiver sido habilitado no cluster, selecione o botão Configurações de monitoramento . Caso contrário, selecione Configurar o Azure Monitor e consulte Habilitar monitoramento em seu cluster Kubernetes com o Azure Monitor para obter detalhes sobre como habilitar o monitoramento.

    Captura de ecrã do cluster AKS com o botão de definições do monitor.

  4. Para Kubernetes habilitados para AKS e Arc, selecione Usar identidade gerenciada se ainda não tiver migrado o cluster para autenticação de identidade gerenciada.

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

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

    Predefinição de custo Frequência da recolha Filtros de namespace Coleção Syslog Dados recolhidos
    Standard 1 milh Nenhuma Não ativado Todas as tabelas de insights de contêiner padrão
    Custo otimizado 5 metros Exclui kube-system, gatekeeper-system, azure-arc Não ativado Todas as tabelas de insights de contêiner padrão
    Syslog 1 milh Nenhuma Ativado por predefinição Todas as tabelas de insights de contêiner padrão
    Logs e eventos 1 milh Nenhuma Não ativado ContainerLog/ContainerLogV2
    KubeEvents
    KubePodInventory
  6. Se quiser personalizar as configurações, clique em Editar configurações de coleção.

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

    Nome Descrição
    Frequência da recolha Determina a frequência com que o agente coleta dados. Os valores válidos são 1m - 30m em intervalos de 1m O valor padrão é 1m.
    Filtragem de namespace Desativado: Coleta dados em todos os namespaces.
    Include: Coleta apenas dados dos valores no campo namespaces .
    Excluir: coleta dados de todos os namespaces, exceto os valores no campo namespaces .

    Matriz de namespaces Kubernetes separados por vírgulas para coletar dados de inventário e perf com base no namespaceFilteringMode. Por exemplo, namespaces = ["kube-system", "default"] com uma configuração Include coleta apenas esses dois namespaces. Com uma configuração Exclude , o agente coleta dados de todos os outros namespaces, exceto kube-system e default.
    Dados Recolhidos Define quais tabelas de insights de contêiner coletar. Veja abaixo uma descrição de cada agrupamento.
    Ativar ContainerLogV2 Sinalizador booleano para habilitar o esquema ContainerLogV2. Se definido como true, os logs stdout/stderr são ingeridos na tabela ContainerLogV2 . Caso contrário, os logs de contêiner são ingeridos na tabela ContainerLog , a menos que 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 coleta Syslog do cluster.

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

    Captura de ecrã que mostra as opções de dados recolhidos.

    Agrupamento Tabelas Notas
    Tudo (padrão) Todas as tabelas de insights de contêiner padrão Necessário para habilitar as visualizações padrão do Container insights
    Desempenho Perf, InsightsMetrics
    Logs e eventos ContainerLog ou ContainerLogV2, KubeEvents, KubePodInventory Recomendado se você tiver ativado 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 no DCR não se aplicam a todos os dados de insights de contêiner. As tabelas a seguir listam as tabelas no espaço de trabalho do Log Analytics usado pelo Container insights e as métricas que ele coleta, juntamente com as configurações que se aplicam a cada um.

Nome da tabela Intervalo? Namespaces? Observações
ContainerInventory Sim Sim
ContainerNodeInventory Sim No A configuração de coleta de dados para namespaces não é aplicável, pois o Nó Kubernetes não é um recurso com escopo de namespace
KubeNodeInventory Sim No A configuração de coleta de dados para namespaces não é aplicável O nó Kubernetes não é um recurso com escopo de namespace
KubePodInventory Sim Sim
KubePVInventory Sim Sim
KubeServices Sim Sim
KubeEvents Não Sim A configuração de coleta de dados para intervalo não é aplicável aos Eventos do Kubernetes
Perf Sim Sim A configuração de coleta de dados para namespaces não é aplicável para as métricas relacionadas ao Nó Kubernetes, pois o Nó Kubernetes não é um objeto com escopo de namespace.
InsightsMetrics Sim Sim 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
Espaço de nomes de métricas Intervalo? Namespaces? Observações
Insights.container/nós Sim No O nó não é um recurso com escopo de namespace
Insights.container/pods Sim Sim
Insights.container/containers Sim Sim
Insights.container/persistentvolumes Sim Sim

Valores de fluxo em DCR

Ao especificar as tabelas a serem coletadas usando CLI ou ARM, você especifica um nome de fluxo que corresponde a uma tabela específica no espaço de trabalho do Log Analytics. A tabela a seguir lista o nome do fluxo para cada tabela.

Nota

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.

Fluxo Tabela de informações do contêiner
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (modo de alta escala)1
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEventos KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEventos
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

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

Compartilhar DCR com vários clusters

Quando você habilita as informações de contêiner em um cluster Kubernetes, um novo DCR é criado para esse cluster e o DCR para cada cluster pode ser modificado independentemente. Se você tiver vários clusters com configurações de monitoramento personalizadas, convém compartilhar um único DCR com vários clusters. Em seguida, você pode fazer alterações em um único DCR que são implementadas automaticamente para quaisquer clusters associados a ele.

Um DCR está associado a um cluster com uma regra de coleta de dados associada (DCRA). Use a experiência de visualização de DCR para exibir e remover associações de DCR existentes para cada cluster. Em seguida, você pode usar esse recurso para adicionar uma associação a um único DCR para vários clusters.

Configurar a coleta de dados usando o 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. O Container insights procura um ConfigMap em cada cluster com configurações específicas que definem os dados que ele deve coletar.

Importante

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.

Pré-requisitos

  • 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.

Configurar e implantar o ConfigMap

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

  1. Se você ainda não tiver um ConfigMap for Container insights, baixe o arquivo YAML do modelo ConfigMap 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 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`.
    

Verificar a configuração da regra

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 -c ama-logs

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

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

Use as seguintes opções para executar mais solução de problemas de alterações de configuração:

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

  • Revise os logs em tempo real para 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 KubeMonAgentEvents tabela no espaço de trabalho 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 de gravidade, que não relatam erros. A Tags coluna 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.

Configurações do ConfigMap

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

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
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.
[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 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.
[metadata_collection]
enabled
Boolean verdadeiro
false
Controla se os KubernetesMetadata metadados são coletados na coluna da ContainerLogV2 tabela.
[metadata_collection]
include_fields
String Matriz separada por vírgulas Lista de campos de metadados a incluir. 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
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.

Próximos passos

  • Consulte Coleta de log de filtro em Insights de contêiner para obter detalhes sobre como economizar custos configurando Insights de contêiner para filtrar dados que você não precisa.