Udostępnij za pośrednictwem


Schemat dziennika usługi Container Insights

Usługa Container Insights przechowuje dane dziennika, które zbiera w tabeli o nazwie ContainerLogV2 w obszarze roboczym usługi Log Analytics. W tym artykule opisano schemat tej tabeli i opcji konfiguracji. Porównuje również tę tabelę ze starszą tabelą ContainerLog i zawiera szczegółowe informacje dotyczące migracji z niej.

Porównanie tabel

ContainerLogV2 to domyślny schemat interfejsu wiersza polecenia w wersji 2.54.0 i nowszej. Jest to domyślna tabela dla klientów, którzy dołączają usługę Container Insights przy użyciu uwierzytelniania tożsamości zarządzanej. KontenerLogV2 można jawnie włączyć za pomocą interfejsu wiersza polecenia w wersji 2.51.0 lub nowszej przy użyciu ustawień zbierania danych.

Ważne

Obsługa tabeli ContainerLog zostanie wycofana 30 września 2026 r.

W poniższej tabeli przedstawiono najważniejsze różnice między używaniem schematu ContainerLogV2 i ContainerLog.

Różnice między funkcjami ContainerLog ContainerLogV2
Schemat Szczegółowe informacje na stronie ContainerLog. Szczegóły na stronie ContainerLogV2.
Dodatkowe kolumny to:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Wprowadzanie Można konfigurować tylko za pomocą narzędzia ConfigMap. Konfigurowalne za pomocą narzędzia ConfigMap i DCR. 3
Cennik Tylko zgodne z pełnowartościowymi dziennikami analitycznymi. Obsługuje warstwę dzienników podstawowych o niskich kosztach oprócz dzienników analitycznych.
Wykonywanie zapytania Wymaga wielu operacji sprzężenia z tabelami spisu dla standardowych zapytań. Zawiera dodatkowe metadane zasobnika i kontenera, aby zmniejszyć złożoność zapytań i operacje łączenia.
Wiele wierszy Nieobsługiwane wpisy wielowierszowe są podzielone na wiele wierszy. Obsługa rejestrowania wielowierszowego w celu umożliwienia skonsolidowanych, pojedynczych wpisów dla danych wyjściowych wielowierszowych.

1 Jeśli LogMessage jest prawidłowy kod JSON i ma klucz o nazwie level, zostanie użyta jego wartość. W przeciwnym razie dopasowywanie słów kluczowych opartych na wyrażeniach regularnych jest używane do wnioskowania LogLevel z elementu LogMessage. To wnioskowanie może spowodować błędną klasyfikację. LogLevel to pole ciągu z wartością kondycji, taką jak CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACElub UNKNOWN.

2 KubernetesMetadata to opcjonalna kolumna, która jest włączona z metadanymi platformy Kubernetes. Wartość tego pola to JSON z polami podLabels, , podAnnotations, podUidImage, ImageTag, i Image repo.

3 Konfiguracja kontrolera domeny wymaga uwierzytelniania tożsamości zarządzanej.

Uwaga

Eksportowanie do centrum zdarzeń i konta magazynu nie jest obsługiwane, jeśli dane przychodzące LogMessage nie są prawidłowe w formacie JSON. Aby uzyskać najlepszą wydajność, emituj dzienniki kontenerów w formacie JSON.

Włączanie schematu ContainerLogV2

Włącz schemat ContainerLogV2 dla klastra przy użyciu reguły zbierania danych klastra (DCR) lub ConfigMap. Jeśli oba ustawienia są włączone, pierwszeństwo ma ConfigMap. Tabela ContainerLog jest używana tylko wtedy, gdy zarówno DCR, jak i ConfigMap są jawnie wyłączone.

Przed włączeniem schematu ContainerLogsV2 należy ocenić, czy istnieją reguły alertów, które opierają się na tabeli ContainerLog . Aby korzystać z nowej tabeli, należy zaktualizować wszystkie takie alerty. Uruchom następujące zapytanie usługi Azure Resource Graph, aby wyszukać reguły alertów odwołujące się do ContainerLog tabeli.

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

Filtrowanie metadanych i dzienników platformy Kubernetes

Filtrowanie metadanych i dzienników kubernetes rozszerza schemat ContainerLogsV2 z dodatkowymi metadanymi kubernetes. Funkcja filtrowania dzienników zapewnia funkcje filtrowania zarówno dla kontenerów obciążeń, jak i platform. Te funkcje zapewniają bogatszy kontekst i lepszy wgląd w obciążenia.

Funkcje

  • Rozszerzony schemat ContainerLogV2 Po włączeniu metadanych dzienników kubernetes dodaje kolumnę o ContainerLogV2 nazwie KubernetesMetadata , która rozszerza rozwiązywanie problemów z prostymi zapytaniami dzienników i eliminuje potrzebę łączenia z innymi tabelami. Pola w tej kolumnie obejmują: PodLabels, , PodAnnotations, ImagePodUid, ImageID, , ImageRepo. ImageTag Te pola rozszerzają środowisko rozwiązywania problemów przy użyciu zapytań dzienników bez konieczności łączenia z innymi tabelami. Zobacz poniżej, aby uzyskać szczegółowe informacje na temat włączania funkcji metadanych platformy Kubernetes.

  • Poziom dziennika Ta funkcja dodaje kolumnę LogLevel do elementu ContainerLogV2 z możliwymi wartościami krytycznymi, błędami, ostrzeżeniem, informacjami, debugowaniem, śledzeniem lub nieznanym. Pomaga to ocenić kondycję aplikacji na podstawie poziomu ważności. Dodanie pulpitu nawigacyjnego narzędzia Grafana pozwala wizualizować trendy na poziomie dziennika w czasie i szybko wskazać zasoby, których dotyczy problem.

  • Pulpit nawigacyjny narzędzia Grafana do wizualizacji Pulpit nawigacyjny narzędzia Grafana udostępnia wizualizację na podstawie kolorów poziomu dziennika, a także zapewnia szczegółowe informacje na temat woluminu dziennika, szybkości dzienników, rekordów dzienników, dzienników. Możesz uzyskać analizę czasową, dynamiczny wgląd w trendy na poziomie dziennika w czasie i kluczowe monitorowanie w czasie rzeczywistym. Pulpit nawigacyjny zawiera również szczegółowy podział według komputerów, zasobników i kontenerów, co umożliwia szczegółową analizę i określenie rozwiązywania problemów. Zobacz poniżej, aby uzyskać szczegółowe informacje na temat instalowania pulpitu nawigacyjnego narzędzia Grafana.

  • Filtrowanie dzienników na podstawie adnotacji dla obciążeń Wydajne filtrowanie dzienników za pomocą adnotacji zasobników. Dzięki temu można skupić się na odpowiednich informacjach bez przesiewania szumu. Filtrowanie oparte na adnotacjach umożliwia wykluczanie zbierania dzienników dla niektórych zasobników i kontenerów przez dodawanie adnotacji do zasobnika, co mogłoby znacznie zmniejszyć koszt analizy dzienników. Aby uzyskać szczegółowe informacje na temat konfigurowania filtrowania opartego na adnotacjach, zobacz Filtrowanie dzienników oparte na adnotacjach.

  • Filtrowanie dzienników oparte na programie ConfigMap dla dzienników platformy (system Kubernetes Namespaces) są emitowane przez kontenery w systemach (lub podobnych ograniczonych) przestrzeniach nazw. Domyślnie wszystkie dzienniki kontenerów z przestrzeni nazw systemu są wykluczone, aby zminimalizować koszty danych w obszarze roboczym usługi Log Analytics. Jednak w konkretnych scenariuszach rozwiązywania problemów dzienniki kontenera kontenera systemu odgrywają kluczową rolę. Jednym z przykładów coredns jest kontener w kube-system przestrzeni nazw.

Włączanie metadanych platformy Kubernetes

Ważne

Zbieranie metadanych platformy Kubernetes wymaga uwierzytelniania tożsamości zarządzanej i konteneraLogsV2

Włącz metadane platformy Kubernetes przy użyciu narzędzia ConfigMap z następującymi ustawieniami. Wszystkie pola metadanych są zbierane domyślnie po włączeniu metadata_collection . Usuń komentarz include_fields , aby określić poszczególne pola do zebrania.

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

Po kilku minutach kolumna KubernetesMetadata powinna zostać dołączona do wszystkich zapytań dziennika dotyczących ContainerLogV2 tabeli, jak pokazano poniżej.

Zrzut ekranu przedstawiający kontenerlogv2.

Instalowanie pulpitu nawigacyjnego narzędzia Grafana

Ważne

Jeśli włączono narzędzie Grafana, korzystając ze wskazówek w artykule Włączanie monitorowania dla klastrów Kubernetes, wystąpienie narzędzia Grafana powinno już mieć dostęp do obszaru roboczego usługi Azure Monitor dla metryk rozwiązania Prometheus. Pulpit nawigacyjny metadanych dzienników platformy Kubernetes wymaga również dostępu do obszaru roboczego usługi Log Analytics, który zawiera dane dziennika. Zobacz Jak zmodyfikować uprawnienia dostępu do usługi Azure Monitor , aby uzyskać wskazówki dotyczące udzielania wystąpienia narzędzia Grafana roli Czytelnik monitorowania dla obszaru roboczego usługi Log Analytics.

Zaimportuj pulpit nawigacyjny z galerii Grafana na pulpicie nawigacyjnym ContainerLogV2. Następnie możesz otworzyć pulpit nawigacyjny i wybrać wartości źródła danych, subskrypcji, grupy zasobów, klastra, przestrzeni nazw i etykiet.

Zrzut ekranu przedstawiający pulpit nawigacyjny narzędzia grafana.

Uwaga

Podczas początkowego ładowania pulpitu nawigacyjnego narzędzia Grafana mogą pojawić się błędy z powodu nie zaznaczonych zmiennych. Aby zapobiec temu cyklicznemu, zapisz pulpit nawigacyjny po wybraniu zestawu zmiennych, aby stał się domyślnym ustawieniem pierwszego otwarcia.

Rejestrowanie wielowierszowe

Po włączeniu rejestrowania wielowierszowego wcześniej podzielone dzienniki kontenerów są łączone i wysyłane jako pojedyncze wpisy do tabeli ContainerLogV2. Jeśli linia dziennika szwów jest większa niż 64 KB, zostanie obcięta z powodu limitów obszaru roboczego usługi Log Analytics. Ta funkcja obsługuje również ślady stosu .NET, Go, Python i Java, które są wyświetlane jako pojedyncze wpisy w tabeli ContainerLogV2. Włącz rejestrowanie wielowierszowe za pomocą narzędzia ConfigMap zgodnie z opisem w temacie Konfigurowanie zbierania danych w usłudze Container Insights przy użyciu narzędzia ConfigMap.

Uwaga

Mapa konfiguracji zawiera teraz opcję specyfikacji języka, w której klienci mogą wybrać tylko języki, które cię interesują. Tę funkcję można włączyć, edytując języki w opcji stacktrace_languages na mapie konfiguracji.

Na poniższych zrzutach ekranu przedstawiono rejestrowanie wielowierszowe dla śledzenia stosu wyjątków języka Go:

Rejestrowanie wielowierszowe jest wyłączone

Zrzut ekranu przedstawiający wyłączone rejestrowanie wielowierszowe.

Włączono rejestrowanie wielowierszowe

Zrzut ekranu przedstawiający włączoną obsługę wielu wierszy.

Ślad stosu języka Java

Zrzut ekranu przedstawiający włączoną obsługę wielu wierszy dla języka Java.

Ślad stosu języka Python

Zrzut ekranu przedstawiający włączoną obsługę wielu wierszy dla języka Python.

Następne kroki