Sdílet prostřednictvím


Schéma protokolu Container Insights

Container Insights ukládá data protokolů, která shromažďuje, v tabulce s názvem ContainerLogV2 v pracovním prostoru služby Log Analytics. Tento článek popisuje schéma této tabulky a možnosti konfigurace. Porovná také tuto tabulku se starší tabulkou ContainerLog a poskytuje podrobnosti pro migraci z ní.

Porovnání tabulek

ContainerLogV2 je výchozí schéma rozhraní příkazového řádku verze 2.54.0 a vyšší. Toto je výchozí tabulka pro zákazníky, kteří nasadí přehledy kontejnerů s ověřováním spravovaných identit. ContainerLogV2 je možné explicitně povolit prostřednictvím rozhraní příkazového řádku verze 2.51.0 nebo vyšší pomocí nastavení shromažďování dat.

Důležité

Podpora tabulky ContainerLog bude vyřazena 30. září 2026.

Následující tabulka uvádí hlavní rozdíly mezi používáním schématu ContainerLogV2 a ContainerLog.

Rozdíly ve funkcích ContainerLog ContainerLogV2
Schéma Podrobnosti v ContainerLogu Podrobnosti v ContainerLogV2.
Další sloupce jsou:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Onboarding Konfigurovatelné pouze prostřednictvím objektu ConfigMap. Konfigurovatelné prostřednictvím objektu ConfigMap i DCR. 3
Ceny Kompatibilní pouze s protokoly analýzy s plnou cenou. Kromě analytických protokolů podporuje úroveň protokolů Basic s nízkými náklady.
Dotazování Vyžaduje více operací spojení s tabulkami inventáře pro standardní dotazy. Obsahuje další metadata podu a kontejneru, aby se snížila složitost dotazů a operace spojení.
Multiline Nepodporuje se, víceřádkové položky jsou rozdělené na více řádků. Podpora víceřádkového protokolování, které umožňuje konsolidované a jednoduché položky pro víceřádkový výstup.

1 Pokud LogMessage je platný JSON a má klíč s názvem level, použije se jeho hodnota. V opačném případě se porovnávání klíčových slov založených na regulárním výrazu používá k odvození LogLevel z LogMessage. Výsledkem tohoto odvozování může být nesprávná klasifikace. LogLevelje řetězcové pole s hodnotou stavu, například CRITICAL, ERROR, WARNINGINFO, DEBUG, , , TRACEnebo UNKNOWN.

2 KubernetesMetadata je volitelný sloupec, který je povolený s metadaty Kubernetes. Hodnota tohoto pole je JSON s poli podLabels, , podAnnotationspodUid, Image, , ImageTaga Image repo.

Konfigurace 3 DCR vyžaduje ověřování spravovaných identit.

Poznámka:

Export do centra událostí a účtu úložiště se nepodporuje, pokud příchozí LogMessage kód JSON není platný. Nejlepšího výkonu dosáhnete generováním protokolů kontejneru ve formátu JSON.

Povolení schématu ContainerLogV2

Povolte schéma ContainerLogV2 pro cluster buď pomocí pravidla shromažďování dat clusteru (DCR) nebo ConfigMap. Pokud jsou obě nastavení povolená, má přednost objekt ConfigMap. Tabulka ContainerLog se používá pouze v případech, kdy je explicitně nastavená hodnota DCR i ConfigMap.

Před povolením schématu ContainerLogsV2 byste měli posoudit, jestli máte nějaká pravidla upozornění, která spoléhají na tabulku ContainerLog . Aby se nová tabulka používala, je potřeba aktualizovat všechna taková upozornění. Spuštěním následujícího dotazu Azure Resource Graph vyhledejte pravidla upozornění, která odkazují na ContainerLog tabulku.

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

Filtrování metadat a protokolů Kubernetes

Filtrování metadat a protokolů Kubernetes rozšiřuje schéma ContainerLogsV2 o další metadata Kubernetes. Funkce filtrování protokolů poskytuje možnosti filtrování pro kontejnery úloh i platforem. Tyto funkce poskytují bohatší kontext a lepší přehled o vašich úlohách.

Funkce

  • Vylepšené schéma ContainerLogV2 Při povolení metadat protokolů Kubernetes přidá sloupec, který ContainerLogV2 vylepší KubernetesMetadata řešení potíží s jednoduchými dotazy protokolu a eliminuje potřebu spojení s jinými tabulkami. Pole v tomto sloupci zahrnují: PodLabels, PodAnnotations, PodUid, Image, ImageID, ImageRepo. ImageTag Tato pole vylepšují prostředí pro řešení potíží pomocí dotazů protokolu, aniž byste se museli spojovat s jinými tabulkami. Podrobnosti o povolení funkce metadat Kubernetes najdete níže.

  • Úroveň protokolu: Tato funkce přidá LogLevel sloupec do ContainerLogV2 s možnými kritickými hodnotami, chybami, upozorněními, informacemi, laděním, trasováním nebo neznámým. To vám pomůže vyhodnotit stav aplikace na základě úrovně závažnosti. Přidáním řídicího panelu Grafana můžete vizualizovat trendy na úrovni protokolu v průběhu času a rychle určit ovlivněné prostředky.

  • Řídicí panel Grafana pro vizualizaci Řídicí panel Grafana poskytuje barevnou vizualizaci úrovně protokolu a poskytuje také přehled o objemu protokolů, rychlosti protokolů, záznamech protokolů a protokolech. Můžete získat analýzu citlivou na čas, dynamické přehledy o trendech na úrovni protokolů v průběhu času a zásadní monitorování v reálném čase. Řídicí panel také poskytuje podrobný rozpis podle počítačů, podů a kontejnerů, což umožňuje podrobnou analýzu a určení řešení potíží. Podrobnosti o instalaci řídicího panelu Grafana najdete níže.

  • Filtrování protokolů založené na anotaci pro úlohy Efektivní filtrování protokolů prostřednictvím poznámek podů Díky tomu se můžete soustředit na relevantní informace, aniž byste museli procházet šumem. Filtrování na základě poznámek umožňuje vyloučit shromažďování protokolů pro určité pody a kontejnery přidáním poznámek k podu, což by pomohlo výrazně snížit náklady na log analytics. Podrobnosti o konfiguraci filtrování na základě poznámek najdete v tématu Filtrování protokolu založeného na poznámkách.

  • Filtrování protokolů založené na configmap pro protokoly platformy (System Kubernetes Namespaces) Protokoly platformy jsou generovány kontejnery v systémových (nebo podobných omezených) oborech názvů. Ve výchozím nastavení jsou všechny protokoly kontejneru ze systémového oboru názvů vyloučeny, aby se minimalizovaly náklady na data v pracovním prostoru služby Log Analytics. V konkrétních scénářích řešení potíží ale hrají zásadní roli protokoly kontejnerů systémového kontejneru. Jedním z příkladů je coredns kontejner v kube-system oboru názvů.

Povolení metadat Kubernetes

Důležité

Kolekce metadat Kubernetes vyžaduje ověřování spravovaných identit a ContainerLogsV2

Povolte metadata Kubernetes pomocí objektu ConfigMap s následujícím nastavením. Všechna pole metadat se ve výchozím nastavení shromažďují, když je tato možnost povolená metadata_collection . Zrušte include_fields komentář k zadání jednotlivých polí, která se mají shromažďovat.

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

Po několika minutách KubernetesMetadata by se sloupec měl zahrnout do všech dotazů protokolu pro ContainerLogV2 tabulku, jak je znázorněno níže.

Snímek obrazovky znázorňující containerlogv2

Instalace řídicího panelu Grafana

Důležité

Pokud jste grafana povolili pomocí pokynů v tématu Povolení monitorování clusterů Kubernetes, vaše instance Grafana by už měla mít přístup k vašemu pracovnímu prostoru služby Azure Monitor pro metriky Prometheus. Řídicí panel metadat protokolů Kubernetes také vyžaduje přístup k pracovnímu prostoru služby Log Analytics, který obsahuje data protokolů. Pokyny k udělení role Čtenář monitorování pro pracovní prostor služby Log Analytics najdete v tématu Úprava přístupových oprávnění ke službě Azure Monitor .

Naimportujte řídicí panel z galerie Grafana na řídicím panelu ContainerLogV2. Pak můžete otevřít řídicí panel a vybrat hodnoty pro DataSource, Subscription, ResourceGroup, Cluster, Namespace a Labels.

Snímek obrazovky znázorňující řídicí panel Grafana

Poznámka:

Při počátečním načtení řídicího panelu Grafana se můžou zobrazit chyby kvůli tomu, že proměnné ještě nejsou vybrané. Pokud chcete zabránit opakovanému opakování, uložte řídicí panel po výběru sady proměnných, aby se při prvním otevření automaticky nastavil.

Víceřádkové protokolování

S povoleným víceřádkovým protokolováním se dříve rozdělují protokoly kontejneru a odesílají se jako jednotlivé položky do tabulky ContainerLogV2. Pokud je stehovaná čára protokolu větší než 64 kB, zkrátí se kvůli omezením pracovního prostoru služby Log Analytics. Tato funkce také podporuje trasování zásobníků .NET, Go, Python a Java, které se v tabulce ContainerLogV2 zobrazují jako samostatné položky. Povolte víceřádkové protokolování pomocí objektu ConfigMap, jak je popsáno v tématu Konfigurace shromažďování dat v Nástroji Container Insights pomocí configMap.

Poznámka:

Konfigurační mapa teď obsahuje možnost specifikace jazyka, kde zákazníci můžou vybrat pouze jazyky, které mají zájem. Tuto funkci lze povolit úpravou jazyků v možnosti stacktrace_languages v konfigurační mapě.

Následující snímky obrazovky ukazují protokolování víceřádkového protokolování pro trasování zásobníku výjimek Go:

Protokolování s více řádky je zakázané

Snímek obrazovky se zakázaným protokolováním s více řádky

Protokolování s více řádky je povolené

Snímek obrazovky s povoleným víceřádkovým řádkem

Trasování zásobníku Java

Snímek obrazovky s více řádky povolenými pro Javu

Trasování zásobníku Pythonu

Snímek obrazovky s více řádky povolenými pro Python

Další kroky