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. Tento článek popisuje schéma této tabulky a její porovnání a migraci ze starší tabulky ContainerLog .

Důležité

ContainerLogV2 bude výchozí schéma prostřednictvím objektu ConfigMap pro rozhraní příkazového řádku verze 2.54.0 a vyšší. ContainerLogV2 bude výchozím formátem příjmu dat pro zákazníky, kteří budou připojovat přehledy kontejnerů pomocí ověřování spravovaných identit pomocí ARM, Bicep, Terraformu, zásad a onboardingu portálu. 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.

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

Porovnání tabulek

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.

1Pokud je LogMessage platným kódem JSON a má pojmenovanou úroveň klíče, použije se její hodnota. V opačném případě používáme přístup pro porovnávání klíčových slov založený na regulárním výrazu k odvození LogLevel ze samotného LogMessage. Všimněte si, že se může zobrazit několik chybných klasifikací, protože tato hodnota je odvozena.

2KubernetesMetadata je volitelný sloupec a kolekce tohoto pole je možné povolit pomocí funkce Metadata Kubernetes. Hodnota tohoto pole je JSON a obsahuje pole, jako jsou podLabels, podAnnotations, podUid, Image, ImageTag a Image.

Konfigurace 3DCR se pro clustery používající clustery založené na ověřování instančního objektu nepodporuje. Pokud chcete použít toto prostředí, migrujte clustery s instančním objektem na spravovanou identitu.

Poznámka:

Export do centra událostí a účtu úložiště se nepodporuje, pokud příchozí logMessage není platný JSON. Pro zajištění nejlepšího výkonu doporučujeme generovat protokoly kontejneru ve formátu JSON.

Posouzení dopadu na existující výstrahy

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í.

Pokud chcete vyhledat výstrahy odkazované na tabulku ContainerLog , spusťte následující dotaz Azure Resource Graphu:

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

Povolení schématu ContainerLogV2

Schéma ContainerLogV2 pro cluster můžete povolit buď pomocí pravidla shromažďování dat clusteru (DCR) nebo objektu ConfigMap. Pokud jsou obě nastavení povolená, má přednost objekt ConfigMap. Protokoly Stdout a stderr se ingestují pouze do tabulky ContainerLog, pokud jsou explicitně nastavené dcR i ConfigMap.

Filtrování metadat a protokolů Kubernetes

Filtrování metadat a protokolů Kubernetes vylepšuje schéma ContainerLogsV2 o další metadata Kubernetes, jako jsou PodLabels, PodAnnotations, PodUid, Image, ImageID, ImageRepo a ImageTag. Kromě toho funkce Filtrování protokolů poskytuje možnosti filtrování pro kontejnery úloh i platforem (tj. systémových oborů názvů). Díky těmto funkcím uživatelé získají bohatší kontext a lepší přehled o svých úlohách.

Klíčové funkce

  • Vylepšené schéma ContainerLogV2 s poli metadat Kubernetes: Metadata protokolů Kubernetes zavádí další volitelná pole metadat, která vylepšují prostředí pro řešení potíží s jednoduchými dotazy Log Analytics a odstraňují potřebu spojení s jinými tabulkami. Tato pole zahrnují základní informace, jako jsou PodLabels, PodAnnotations, PodUid, ImageID, ImageID, ImageRepo a ImageTag. Díky snadnému zpřístupnění tohoto kontextu můžou uživatelé urychlit řešení potíží a rychle identifikovat problémy.

  • Vlastní konfigurace seznamu: Uživatelé můžou přizpůsobit nová pole metadat, která chtějí zobrazit úpravou mapy konfigurace. Všimněte si, že všechna pole metadat jsou ve výchozím nastavení shromažďována, pokud metadata_collection je povolená a pokud chcete vybrat konkrétní pole, zrušte komentář include_fields a zadejte pole, která je potřeba shromáždit.

Snímek obrazovky znázorňující pole metadat

  • Vylepšené schéma ContainerLogV2 s úrovní protokolu: Uživatelé teď můžou posoudit stav aplikace na základě barevných úrovní závažnosti, jako jsou KRITICKÉ, CHYBA, UPOZORNĚNÍ, INFORMACE, LADĚNÍ, TRASOVÁNÍ nebo NEZNÁMÝ. Je to zásadní nástroj pro reakce na incidenty a proaktivní monitorování. Díky vizuálnímu rozlišení úrovní závažnosti můžou uživatelé rychle určit ovlivněné prostředky. Barevně kódovaný systém zjednodušuje proces šetření a umožňuje uživatelům přejít k podrobnostem ještě více výběrem panelu pro prozkoumání prostředí pro další ladění. Je ale důležité si uvědomit, že tato funkce se dá použít jenom při použití Grafany. Pokud používáte pracovní prostor služby Log Analytics, je úroveň LogLevel jednoduše dalším sloupcem v tabulce ContainerLogV2.

  • Filtrování protokolů na základě poznámek pro úlohy: Efektivní technika filtrování protokolů prostřednictvím poznámek podů Uživatelé se můžou soustředit na relevantní informace, aniž by se museli zabývat šumem. Filtrování na základě poznámek umožňuje uživatelům 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.

  • Filtrování protokolů na základě ConfigMap pro protokoly platformy (System Kubernetes Namespaces): Protokoly platformy se generují 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 Log Analytics. V konkrétních scénářích řešení potíží ale hrají zásadní roli protokoly kontejnerů systémového kontejneru. Zvažte například kontejner coredns v rámci oboru názvů kube-system. Pokud chcete shromažďovat protokoly (stdout a stderr) výhradně z kontejneru coredns ve formátu kube-system, můžete v konfigurační mapě povolit následující nastavení.

Snímek obrazovky znázorňující pole filtrování

  • Řídicí panel Grafana pro vizualizaci: Na řídicím panelu Grafana se zobrazují nejen barevně kódované vizualizace úrovní protokolů od CRITICAL až UNKNOWN, ale také se ponoří do svazku protokolu, rychlosti protokolů, záznamů protokolů a protokolů. Uživatelé můžou 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. Poskytujeme také podrobný rozpis podle počítačů, podů a kontejnerů, který umožňuje podrobnou analýzu a určení řešení potíží. A nakonec v novém prostředí tabulky Protokoly můžou uživatelé zobrazit podrobné podrobnosti s rozbalením zobrazení a zobrazit data v jednotlivých sloupcích a přiblížit si informace, které chtějí zobrazit.

Tady je video znázorňující řídicí panel Grafana:

Povolení filtrování metadat a protokolů Kubernetes

Požadavky

  1. Migrujte na ověřování spravované identity. Další informace

  2. Ujistěte se, že je kontejnerLogV2 povolený. Clustery ověřování spravovaných identit mají ve výchozím nastavení toto schéma povolené. Pokud ne, povolte schéma ContainerLogV2.

Omezení

Řídicí panel Grafana ContainerLogV2 se nepodporuje u skladové položky Základní protokoly v tabulce ContainerLogV2.

Povolení metadat Kubernetes

  1. Stáhněte si mapu configmap a upravte nastavení z hodnoty false na true, jak je vidět na následujícím snímku obrazovky. Všimněte si, že všechna podporovaná pole metadat se ve výchozím nastavení shromažďují. Pokud chcete shromáždit konkrétní pole, zadejte povinná pole do include_fieldspole .

Snímek obrazovky znázorňující povolení polí metadat

  1. Použijte objekt ConfigMap. Další informace o nasazení a konfiguraci objektu ConfigMap najdete v tématu konfigurace konfigurační mapy .

  2. Po několika minutách by se data měla dostat do tabulky ContainerLogV2 s metadaty protokolů Kubernetes, jak je znázorněno na následujícím snímku obrazovky.

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

Onboarding do prostředí řídicího panelu Grafana

  1. Na kartě Přehledy vyberte nastavení monitorování a připojte se k řídicímu panelu Grafana s verzí 10.3.4 nebo novější.

Snímek obrazovky znázorňující onboarding grafana

  1. Zkontrolujte řízení přístupu (IAM) a ujistěte se, že máte některou z rolí Správa Grafana, Editoru a Čtenáře. Pokud ne, přidejte je.

Snímek obrazovky znázorňující role grafany

  1. Ujistěte se, že vaše instance Grafana má přístup k pracovnímu prostoru Azure Logs Analytics (LA). Pokud přístup nemá, musíte udělit roli Čtenář monitorování instancí Grafana přístup k pracovnímu prostoru LA.

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

  1. Přejděte do pracovního prostoru Grafana a naimportujte řídicí panel ContainerLogV2 z galerie Grafana.

  2. Vyberte informace pro DataSource, Subscription, ResourceGroup, Cluster, Namespace a Labels. Řídicí panel se pak naplní, jak je znázorněno na následujícím snímku obrazovky.

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

Poznámka:

Při počátečním načtení řídicího panelu Grafana může dojít k chybám kvůli tomu, že proměnné ještě nejsou vybrány. 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.

Povolení filtrování na základě poznámek

Pokud chcete povolit filtrování na základě poznámek, postupujte podle níže uvedených kroků. Odkaz najdete tady , jakmile se publikuje související dokumentace k filtrování.

  1. Stáhněte si mapu configmap a upravte nastavení z hodnoty false na true, jak je vidět na následujícím snímku obrazovky.

Snímek obrazovky znázorňující poznámky

  1. Použijte objekt ConfigMap. Další informace o nasazení a konfiguraci objektu ConfigMap najdete v tématu konfigurace konfigurační mapy .

  2. Přidejte požadované poznámky do specifikace podu úlohy. V následující tabulce jsou zvýrazněné různé možné poznámky podů a jejich popisy.

Poznámka Popis
fluentbit.io/exclude: "true" Vyloučí oba streamy stdout a stderr ve všech kontejnerech v podu.
fluentbit.io/exclude_stdout: "true" Vyloučí pouze stream stdout u všech kontejnerů v podu.
fluentbit.io/exclude_stderr: "true" Vyloučí pouze stream stderr u všech kontejnerů v podu.
fluentbit.io/exclude_container1: "true" Vyloučit oba streamy stdout a stderr pouze pro kontejner1 v podu
fluentbit.io/exclude_stdout_container1: "true" Vyloučit pouze stdout pouze pro kontejner1 v podu

Poznámka:

Tyto poznámky jsou založené na fluentu. Pokud používáte vlastní řešení shromažďování protokolů s filtrem modulu plug-in Kubernetes a vyloučením na základě poznámek, přestane shromažďovat protokoly z kontejneru Přehledy i z vašeho řešení.

Tady je příklad poznámek ve specifikaci podu fluentbit.io/exclude: "true" :

apiVersion: v1 
kind: Pod 
metadata: 
 name: apache-logs 
 labels: 
  app: apache-logs 
 annotations: 
  fluentbit.io/exclude: "true" 
spec: 
 containers: 
 - name: apache 
  image: edsiper/apache_logs 

Filtrování protokolů na základě ConfigMap pro protokoly platformy (obory názvů System Kubernetes)

  1. Stáhněte mapu konfigurace a upravte nastavení související s collect_system_pod_logs a exclude_namespaces.

Pokud například chcete shromažďovat protokoly stdout a stderr kontejneru coredns v oboru názvů kube-system, ujistěte se, že obor názvů kube-system není v exclude_namespaces a tato funkce je omezená pouze na následující systémové obory názvů: kube-system, gatekeeper-system, calico-system, azure-arc, kube-public a kube-node-lease obory názvů.

Snímek obrazovky znázorňující pole filtrování

  1. Použijte objekt ConfigMap. Další informace o nasazení a konfiguraci objektu ConfigMap najdete v tématu konfigurace konfigurační mapy .

Víceřádkové protokolování v kontejneru Přehledy

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