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.
Selecione o cluster no portal do Azure.
Selecione a opção Insights na seção Monitoramento do menu.
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.
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.
Selecione uma das predefinições de custo.
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
KubePodInventorySe quiser personalizar as configurações, clique em Editar configurações de 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.
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 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:
Se você ainda não tiver um ConfigMap for Container insights, baixe o arquivo YAML do modelo ConfigMap 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 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. ATags
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.