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.
Selecione o cluster no portal do Azure.
Selecione a opção Insights na seção Monitoramento do menu.
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.
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.
Selecione uma das pre-definições de custo.
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
KubePodInventorySe você quiser personalizar as configurações, clique em Editar 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.
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 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:
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.
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.
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 colunaTags
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
- Consulte a Filtrar coleta de logs em Insights de contêiner para obter detalhes sobre como economizar custos configurando os Insights de contêiner para filtrar dados que você não precisa.