Esquema de log de insights de contêiner

Os insights de contêiner armazenam dados de log coletados em uma tabela chamada ContainerLogV2 em um workspace 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 dela.

Comparação de tabelas

ContainerLogV2 é o esquema padrão da CLI versão 2.54.0 e superior. Essa é a tabela padrão para clientes que integram Insights de contêiner com autenticação de identidade gerenciada. O ContainerLogV2 pode ser habilitado explicitamente por meio da CLI versão 2.51.0 ou superior usando 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 realça as principais diferenças entre o uso do esquema ContainerLogV2 e ContainerLog.

Diferenças de recursos ContainerLog ContainerLogV2
Esquema Detalhes em ContainerLog. Detalhes em ContainerLogV2.
Colunas adicionais são:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Integração Configurável apenas por meio de ConfigMap. Configurável por meio de ConfigMap e DCR. 3
Preços Compatível apenas com logs de análise com preços completos. Dá suporte à camada de logs básicos de baixo custo, além dos logs de análise.
Consultas 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 as operações de junção.
Várias linhas Sem suporte, 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 individuais consolidadas para saída de várias linhas.

1 Se LogMessage for JSON válido e tiver uma chave nomeada level, seu valor será usado. Caso contrário, a correspondência de palavra-chave baseada em expressão regular é usada para inferir LogLevel de LogMessage. Essa inferência pode resultar em algumas classificações incorretas. LogLevel é um campo de cadeia de caracteres com um valor de integridade, como CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACE ou UNKNOWN.

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

3 a configuração DCR exige autenticação de identidade gerenciada.

Observação

Não há suporte para exportação para o Hub de Eventos e a Conta de Armazenamento se o LogMessage não for um JSON válido. Para obter melhor desempenho, emita logs de contêiner no formato JSON.

Habilitar o esquema ContainerLogV2

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

Antes de habilitar o esquema ContainerLogsV2, você deve avaliar se você 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 Azure Resource Graph para verificar as regras de alerta que fazem referência à tabela ContainerLog.

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 adicionais do Kubernetes. O recurso de filtragem de logs fornece funcionalidades de filtragem para contêineres de carga de trabalho e de plataforma. Esses recursos oferecem um contexto mais avançado e visibilidade aprimorada nas cargas de trabalho.

Recursos

  • Esquema ContainerLogV2 avançado Quando os Metadados de logs do Kubernetes estão habilitados, ele adiciona uma coluna a ContainerLogV2 chamada KubernetesMetadata que melhora a solução de problemas com consultas de log simples e remove a necessidade de ingressar em outras tabelas. Os campos nesta coluna incluem: PodLabels, PodAnnotations, PodUid, Image, ImageID, ImageRepo, ImageTag. Esses campos melhoram a experiência de solução de problemas usando consultas de log sem precisar ingressar em outras tabelas. Confira abaixo os detalhes de como habilitar o recurso de metadados do Kubernetes.

  • Nível de log Esse recurso adiciona uma colunaLogLevel ao ContainerLogV2 com os valores críticos possíveis, erros, aviso, informações, depuração, rastreamento ou desconhecidos. Isso ajuda a avaliar a integridade do aplicativo com base no nível de gravidade. Ao adicionar o painel do Grafana, é possível visualizar as tendências de nível de log ao longo do tempo e identificar rapidamente os recursos impactados.

  • Painel do Grafana para visualização O painel do Grafana fornece uma visualização codificada por cores do nível do log e também fornece insights sobre o Volume do log, Taxa do log, Registros do log, Logs. Você pode obter análises com diferenciação de tempo, insights dinâmicos sobre tendências de nível de log ao longo do tempo e monitoramento crucial em tempo real. O painel também fornece um detalhamento por computador, pod e contêiner, que capacita a análise detalhada e a solução de problemas identificadas. Confira abaixo 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 se concentrar em informações relevantes sem filtrar os ruídos. 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 da análise de logs. Consulte a filtragem de logs 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) 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 em seu workspace do Log Analytics. Em cenários específicos de solução de problemas, no entanto, os logs de contêiner do contêiner do sistema desempenham uma função crucial. Um exemplo é o contêiner coredns no namespace kube-system.

Habilitar metadados do Kubernetes

Importante

A coleção de metadados do Kubernetes necessita da autenticação de identidade gerenciada e ContainerLogsV2

Habilitar os metadados do Kubernetes usando ConfigMap com as seguintes configurações. Todos os campos de metadados são coletados por padrão quando metadata_collection está habilitado. Remover marca de comentário 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 coluna KubernetesMetadata deve ser incluída com todas as consultas de log na tabela ContainerLogV2, conforme mostrado abaixo.

Captura de tela mostrando o containerlogv2 habilitado.

Instalar o painel do Grafana

Importante

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

Importar o painel da galeria do Grafana no Painel ContainerLogV2. Você pode abrir o painel e selecionar valores para DataSource, Subscription, ResourceGroup, Cluster, Namespace e Labels.

Captura de tela que mostra um painel do Grafana.

Observação

Ao carregar inicialmente o painel do Grafana, é possível obter erros devido a variáveis que ainda não foram selecionadas. Para evitar que isso seja recorrente, salve o painel depois de selecionar um conjunto de variáveis para que ele se torne padrão na primeira abertura.

Log de várias linhas

Com o log multilinha habilitado, os logs de contêiner divididos anteriormente são emendados e enviados como entradas simples para a tabela ContainerLogV2. Se a linha de logs emendados 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 do .NET, Go, Python e Java, que aparecem como entradas simples na tabela ContainerLogV2. Habilite o registro em log de várias linhas com o ConfigMap, conforme descrito em Configurar coleta de dados em insights de contêiner usando ConfigMap.

Observação

O configmap já apresenta uma opção de especificação de idioma, na qual os clientes podem selecionar apenas os idiomas nos quais estão interessados. Esse recurso pode ser habilitado 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 de pilha de exceções Go:

Log de várias linhas desabilitado

Captura de tela que mostra o registro em log de várias linhas desabilitado.

Log de várias linhas habilitado

Captura de tela que mostra o registro em log de várias linhas habilitado.

Rastreamento de pilha do Java

Captura de tela que mostra o registro em log de várias linhas habilitado para Java.

Rastreamento de pilha do Python

Captura de tela que mostra o registro em log de várias linhas habilitado para Python.

Próximas etapas