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 - LogLevel 1- KubernetesMetadata 2 |
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.
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í.
- Ří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
Migrujte na ověřování spravované identity. Další informace
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
- 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_fields
pole .
Použijte objekt ConfigMap. Další informace o nasazení a konfiguraci objektu ConfigMap najdete v tématu konfigurace konfigurační mapy .
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.
Onboarding do prostředí řídicího panelu Grafana
- 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ší.
- 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.
- 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.
Přejděte do pracovního prostoru Grafana a naimportujte řídicí panel ContainerLogV2 z galerie Grafana.
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.
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í.
- 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.
Použijte objekt ConfigMap. Další informace o nasazení a konfiguraci objektu ConfigMap najdete v tématu konfigurace konfigurační mapy .
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)
- Stáhněte mapu konfigurace a upravte nastavení související s
collect_system_pod_logs
aexclude_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ů.
- 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é
Protokolování s více řádky je povolené
Trasování zásobníku Java
Trasování zásobníku Pythonu
Další kroky
- Nakonfigurujte základní protokoly pro ContainerLogv2.
- Zjistěte, jak dotazovat data z ContainerLogV2