Compartilhar via


Esquema de log de insights de contêiner

O Container insights armazena dados de log coletados em uma tabela chamada ContainerLogV2 em um espaço de trabalho do Log Analytics. Este artigo descreve o esquema desta tabela e as opções de configuração para ela. Ele também compara essa tabela com a tabela ContainerLog herdada e fornece detalhes para migrar a partir dela.

Comparação de tabelas

ContainerLogV2 é o esquema padrão para CLI versão 2.54.0 e superior. Esta é a tabela padrão para clientes que integram o Container insights com autenticação de identidade gerenciada. O ContainerLogV2 pode ser explicitamente habilitado por meio da CLI versão 2.51.0 ou superior usando as configurações de coleta de dados.

Importante

O suporte para a tabela ContainerLog será desativado em 30 de setembro de 2026.

A tabela a seguir destaca as principais diferenças entre o uso do esquema ContainerLogV2 e ContainerLog.

Diferenças entre caraterísticas ContainerLog ContainerLogV2
Esquema Detalhes em ContainerLog. Detalhes em ContainerLogV2.
As colunas adicionais são:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Integração Apenas configurável através do ConfigMap. Configurável através do ConfigMap e DCR. 3
Preços Compatível apenas com logs de análise de preço completo. Suporta a camada de logs básicos de baixo custo, além de logs de análise.
A consultar Requer várias operações de junção com tabelas de inventário para consultas padrão. Inclui metadados adicionais de pod e contêiner para reduzir a complexidade da consulta e operações de junção.
Multilinha Não suportadas, as entradas de várias linhas são divididas em várias linhas. Suporte para registro em log de várias linhas para permitir entradas únicas consolidadas para saída de várias linhas.

1 Se LogMessage for JSON válido e tiver uma chave chamada level, seu valor será usado. Caso contrário, a correspondência de palavras-chave baseada em regex é usada para inferir LogLevel de LogMessage. Esta inferência pode resultar em algumas classificações erradas. LogLevelé um campo de cadeia de caracteres com um valor de integridade como CRITICAL, , , INFOWARNING, DEBUG, TRACE, ou UNKNOWNERROR.

KubernetesMetadata 2 é uma coluna opcional habilitada com metadados do Kubernetes. O valor deste campo é JSON com os campos podLabels, podAnnotations, podUid, Image, ImageTage Image repo.

3 A configuração do DCR requer autenticação de identidade gerenciada.

Nota

A exportação para o Hub de Eventos e a Conta de Armazenamento não são suportadas se a entrada LogMessage não for JSON válida. Para obter o melhor desempenho, emita logs de contêiner no formato JSON.

Habilitar o esquema ContainerLogV2

Habilite o esquema ContainerLogV2 para um cluster usando a Regra de Coleta de Dados (DCR) ou o ConfigMap do cluster. Se ambas as configurações estiverem habilitadas, o ConfigMap terá precedência. A ContainerLog tabela é usada somente quando o DCR e o ConfigMap estão explicitamente definidos como desativados.

Antes de habilitar o esquema ContainerLogsV2 , você deve avaliar se tem alguma regra de alerta que dependa da tabela ContainerLog . Esses alertas precisam ser atualizados para usar a nova tabela. Execute a seguinte consulta do Gráfico de Recursos do Azure para procurar regras de alerta que façam referência à ContainerLog tabela.

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "ContainerLog"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

Filtragem de metadados e logs do Kubernetes

A filtragem de metadados e logs do Kubernetes estende o esquema ContainerLogsV2 com metadados Kubernetes adicionais. O recurso de filtragem de logs fornece recursos de filtragem para contêineres de carga de trabalho e plataforma. Esses recursos oferecem contexto mais rico e visibilidade aprimorada de suas cargas de trabalho.

Funcionalidades

  • Esquema ContainerLogV2 aprimorado Quando o Kubernetes Logs Metadata está habilitado, ele adiciona uma coluna à chamada KubernetesMetadata que aprimora a ContainerLogV2 solução de problemas com consultas de log simples e elimina a necessidade de associação com outras tabelas. Os campos nesta coluna incluem: PodLabels, PodAnnotations, PodUid, , ImageImageID, ImageRepo, . ImageTag Esses campos aprimoram a experiência de solução de problemas usando consultas de log sem ter que se juntar a outras tabelas. Veja abaixo detalhes sobre como habilitar o recurso de metadados do Kubernetes.

  • Nível de log Este recurso adiciona uma LogLevel coluna ao ContainerLogV2 com os possíveis valores critical, error, warning, info, debug, trace ou unknown. Isso ajuda a avaliar a integridade do aplicativo com base no nível de gravidade. Adicionando o painel do Grafana, você pode visualizar as tendências de nível de log ao longo do tempo e identificar rapidamente os recursos afetados.

  • Painel do Grafana para visualização O painel do Grafana fornece uma visualização codificada por cores do nível de log e também fornece informações sobre Volume de Log, Taxa de Log, Registros de Log, Logs. Você pode obter análises sensíveis ao tempo, insights dinâmicos sobre as tendências de nível de log ao longo do tempo e monitoramento crucial em tempo real. O painel também fornece um detalhamento detalhado por computador, pod e contêiner, o que permite uma análise aprofundada e a solução de problemas identificada. Veja abaixo os detalhes sobre como instalar o painel do Grafana.

  • Filtragem de log baseada em anotação para cargas de trabalho Filtragem de log eficiente por meio de anotações de pod. Isso permite que você se concentre em informações relevantes sem peneirar o ruído. A filtragem baseada em anotação permite excluir a coleta de logs para determinados pods e contêineres anotando o pod, o que ajudaria a reduzir significativamente o custo de análise de log. Consulte Filtragem de log baseada em anotação para obter detalhes sobre como configurar a filtragem baseada em anotação.

  • Filtragem de logs baseada em ConfigMap para logs de plataforma (Namespaces do System Kubernetes) Os logs de plataforma são emitidos por contêineres nos namespaces do sistema (ou restritos semelhantes). Por padrão, todos os logs de contêiner do namespace do sistema são excluídos para minimizar o custo dos dados no espaço de trabalho do Log Analytics. Em cenários específicos de solução de problemas, porém, os logs de contêiner do sistema desempenham um papel crucial. Um exemplo é o coredns kube-system contêiner no namespace.

Habilitar metadados do Kubernetes

Importante

A coleta de metadados do Kubernetes requer autenticação de identidade gerenciada e ContainerLogsV2

Habilite os metadados do Kubernetes usando o ConfigMap com as seguintes configurações. Todos os campos de metadados são coletados por padrão quando o está habilitado metadata_collection . Descomente include_fields para especificar campos individuais a serem coletados.

[log_collection_settings.metadata_collection]
    enabled = true
    include_fields = ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]

Após alguns minutos, a KubernetesMetadata coluna deve ser incluída com todas as consultas de log para ContainerLogV2 a tabela, conforme mostrado abaixo.

Captura de tela que mostra containerlogv2.

Instalar o painel do Grafana

Importante

Se você habilitou o Grafana usando a orientação em Habilitar monitoramento para clusters do Kubernetes, sua instância do Grafana já deve ter acesso ao espaço de trabalho do Azure Monitor para métricas do Prometheus. O painel Kubernetes Logs Metadata também requer acesso ao seu espaço de trabalho do Log Analytics que contém dados de log. Consulte Como modificar as permissões de acesso ao Azure Monitor para obter orientação sobre como conceder à sua instância do Grafana a função Leitor de Monitoramento para seu espaço de trabalho do Log Analytics.

Importe o painel da galeria Grafana em ContainerLogV2 Dashboard. Em seguida, você pode abrir o painel e selecionar valores para DataSource, Subscription, ResourceGroup, Cluster, Namespace e Labels.

Captura de tela que mostra o painel grafana.

Nota

Quando você carrega inicialmente o Painel do Grafana, você pode ver erros devido a variáveis que ainda não estão sendo selecionadas. Para evitar que isso se repita, salve o painel depois de selecionar um conjunto de variáveis para que ele se torne padrão na primeira abertura.

Registo de várias linhas

Com o log de várias linhas habilitado, os logs de contêiner divididos anteriormente são costurados e enviados como entradas únicas para a tabela ContainerLogV2. Se a linha de log costurada for maior que 64 KB, ela será truncada devido aos limites do espaço de trabalho do Log Analytics. Esse recurso também tem suporte para rastreamentos de pilha .NET, Go, Python e Java, que aparecem como entradas únicas na tabela ContainerLogV2. Habilite o registro em log de várias linhas com o ConfigMap conforme descrito em Configurar a coleta de dados no Container insights usando o ConfigMap.

Nota

O configmap agora apresenta uma opção de especificação de idioma, na qual os clientes podem selecionar apenas os idiomas em que estão interessados. Esse recurso pode ser ativado editando os idiomas na opção stacktrace_languages no configmap.

As capturas de tela a seguir mostram o registro em log de várias linhas para o rastreamento da pilha de exceções Go:

Registo de várias linhas desativado

Captura de ecrã que mostra o registo de várias linhas desativado.

Registro em log de várias linhas habilitado

Captura de ecrã que mostra Multi-line ativado.

Rastreamento de pilha Java

Captura de tela que mostra Multi-line ativado para Java.

Rastreamento de pilha Python

Captura de tela que mostra Multi-line ativado para Python.

Próximos passos