Freigeben über


Protokollschema von Container Insights

Container Insights speichert Protokolldaten, die in einer Tabelle mit dem Namen ContainerLogV2 in einem Log Analytics-Arbeitsbereich gesammelt werden. In diesem Artikel werden das Schema dieser Tabelle und die Konfigurationsoptionen dafür beschrieben. Außerdem wird diese Tabelle mit der älteren ContainerLog-Tabelle verglichen, und es werden Informationen zur Migration daraus bereitgestellt.

Tabellenvergleich

ContainerLogV2 ist das Standardschema für CLI-Version 2.54.0 und höher. Dies ist die Standardtabelle für Kunden, die in Container Insights mit Authentifizierung mit verwalteten Identitäten onboarden. ContainerLogV2 kann über die CLI-Version 2.51.0 oder höher mithilfe von Datensammlungseinstellungen explizit aktiviert werden.

Wichtig

Die Unterstützung für die ContainerLog-Tabelle wird am 30. September 2026 eingestellt.

In der folgenden Tabelle werden die wichtigsten Unterschiede zwischen der Verwendung des ContainerLogV2- und des ContainerLog-Schemas hervorgehoben.

Featureunterschiede ContainerLog ContainerLogV2
Schema Details unter ContainerLog. Details unter ContainerLogV2.
Weitere Spalten sind:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Onboarding Nur über ConfigMap konfigurierbar. Konfigurierbar über ConfigMap und DCR. 3
Preiskalkulation Nur kompatibel mit vollpreisigen Analyseprotokollen. Unterstützt die kostengünstige Basisprotokollebene zusätzlich zu Analyseprotokollen.
Abfragen Erfordert mehrere Verknüpfungsvorgänge mit Inventartabellen für Standardabfragen. Enthält zusätzliche Pod- und Containermetadaten zur Verringerung der Abfragekomplexität und Verknüpfungsvorgänge.
Mehrzeilig Nicht unterstützt, mehrzeilige Einträge werden in mehrere Datensätze unterteilt. Unterstützung für mehrzeilige Protokollierung, um konsolidierte, einzelne Einträge für mehrzeilige Ausgaben zu ermöglichen.

1 Wenn LogMessage ein gültiger JSON-Code ist und über einen Schlüssel mit dem Namen level verfügt, wird der Wert verwendet. Andernfalls wird der regex-basierte Schlüsselwortabgleich verwendet, um LogLevel von LogMessage abzuleiten. Diese Ableitung kann zu einigen Fehlklassifizierungen führen. LogLevel ist ein Zeichenfolgenfeld mit einem Integritätswert wie CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACE oder UNKNOWN.

2 KubernetesMetadata ist eine optionale Spalte, die mit Kubernetes-Metadaten aktiviert ist. Der Wert dieses Felds ist JSON mit den Feldern podLabels, podAnnotations, podUid, Image, ImageTag und Image repo.

3 Für die DCR-Konfiguration ist die Authentifizierung mit verwalteter Identität erforderlich.

Hinweis

Der Export zu Event Hub und Speicherkonto wird nicht unterstützt, wenn die eingehende LogMessage kein gültiges JSON ist. Für eine optimale Leistung empfehlen wir, Containerprotokolle im JSON-Format zu ausgeben.

Aktivieren des ContainerLogV2-Schemas

Sie können das ContainerLogV2-Schema für einen Cluster entweder über die Datensammlungsregel (Data Collection Rule, DCR) des Clusters oder ConfigMap aktivieren. Wenn beide Einstellungen aktiviert sind, hat ConfigMap Vorrang. Die ContainerLog-Tabelle wird nur verwendet, wenn sowohl DCR als auch ConfigMap explizit deaktiviert sind.

Bevor Sie das ContainerLogsV2-Schema aktivieren, sollten Sie bewerten, ob Sie über Warnungsregeln verfügen, die auf der Tabelle ContainerLog basieren. Alle derartigen Warnungen müssen auf die Verwendung einer neuen Tabelle aktualisiert werden. Führen Sie die folgende Azure Resource Graph-Abfrage aus, um nach Warnungsregeln zu suchen, die auf die ContainerLog-Tabellen verweisen.

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

Kubernetes-Metadaten- und Protokollfilterung

Kubernetes-Metadaten- und Protokollfilterung erweitern das ContainerLogsV2-Schema mit zusätzlichen Kubernetes-Metadaten. Das Protokollfilterfeature bietet Filterfunktionen für Workload- und Plattformcontainer. Mit diesen Features erhalten Sie umfassenderen Kontext und verbessern die Sichtbarkeit ihrer Workloads.

Hinweis

Das Grafana-Dashboard zum Filtern von Kubernetes-Metadaten und -Protokollen unterstützt derzeit keine Basisprotokolle.

Features

  • Erweitertes ContainerLogV2-Schema: Wenn Kubernetes Logs Metadata aktiviert ist, wird eine Spalte namens KubernetesMetadata zu ContainerLogV2 hinzugefügt, die die Problembehandlung mit einfachen Protokollabfragen verbessert und die Notwendigkeit für die Verknüpfung mit anderen Tabellen entfernt. Die Felder in dieser Spalte umfassen: PodLabels, PodAnnotations, PodUid, Image, ImageID, ImageRepo, ImageTag. Diese Felder verbessern die Problembehandlung mithilfe von Protokollabfragen, ohne dass Verknüpfungen mit anderen Tabellen erforderlich sind. Ausführliche Informationen zum Aktivieren des Kubernetes-Metadatenfeatures finden Sie unten.

  • Protokolliergrad: Dieses Feature fügt ContainerLogV2 eine LogLevel-Spalte mit den möglichen Werten critical, error, warning, info, debug, trace und unknown hinzu. Auf diese Weise können Sie den Anwendungsstatus basierend auf dem Schweregrad bewerten. Wenn Sie das Grafana-Dashboard hinzufügen, können Sie die Trends auf Protokollebene über die Zeit visualisieren und schnell betroffene Ressourcen ermitteln.

  • Grafana-Dashboard für die Visualisierung: Das Grafana-Dashboard bietet eine farbcodierte Visualisierung des Protokolliergrads sowie Einblicke in Protokollvolume, Protokollierungsrate, Protokolldatensätze und Protokolle. Sie erhalten zeitabhängige Analysen, dynamische Einblicke in die Entwicklung des Protokolliergrads im Laufe der Zeit und eine wichtige Echtzeitüberwachung. Das Dashboard bietet darüber hinaus eine detaillierte Aufschlüsselung nach Computern, Pods und Containern, die eine eingehende Analyse und gezielte Problembehandlung ermöglicht. Details zum Installieren des Grafana-Dashboards finden Sie unten.

  • Anmerkungsbasierte Protokollfilterung für Workloads: Effiziente Protokollfilterung über Podanmerkungen. So können Sie sich auf relevante Informationen konzentrieren, ohne Rauschen herausfiltern zu müssen. Die auf Anmerkungen basierende Filterung ermöglicht es Ihnen, die Protokollerfassung für bestimmte Pods und Container auszuschließen, indem Sie den Pod mit einer Anmerkung versehen, was die Kosten für die Protokollanalyse erheblich senken würde. Details zum Konfigurieren der anmerkungsbasierten Filterung finden Sie unter Annotationsbasiertes Filtern.

  • ConfigMap-basierte Protokollfilterung für Plattformprotokolle (System Kubernetes-Namespaces): Plattformprotokolle werden von Containern im Systemnamespace (oder ähnlich eingeschränkten Namespaces) ausgegeben. Standardmäßig werden alle Containerprotokolle aus dem Systemnamespace ausgeschlossen, um die Kosten für Daten in Ihrem Log Analytics-Arbeitsbereich zu minimieren. In bestimmten Fällen der Problembehandlung spielen die Containerprotokolle der Systemcontainer jedoch eine entscheidende Rolle. Ein Beispiel ist der coredns-Container im kube-system-Namespace.

Aktivieren von Kubernetes-Metadaten

Wichtig

Die Erfassung von Kubernetes-Metadaten erfordert die Authentifizierung mit verwalteten Identitäten und ContainerLogsV2.

Aktivieren Sie Kubernetes-Metadaten mit ConfigMap mit den folgenden Einstellungen. Alle Metadatenfelder werden standardmäßig erfasst, wenn metadata_collection aktiviert ist. Heben Sie die Kommentare include_fields auf, um einzelne Felder für die Erfassung anzugeben.

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

Nach ein paar Minuten sollte die KubernetesMetadata-Spalte in alle Protokollabfragen für die ContainerLogV2-Tabelle eingeschlossen werden, wie unten dargestellt.

Screenshot von containerlogv2.

Installieren des Grafana-Dashboards

Wichtig

Wenn Sie Grafana mithilfe der Anleitung unter Aktivieren der Überwachung für Kubernetes-Cluster aktiviert haben, sollte Ihre Grafana-Instanz bereits Zugriff auf Ihren Azure Monitor-Arbeitsbereich für Prometheus-Metriken haben. Das Kubernetes Logs Metadata-Dashboard erfordert auch Zugriff auf Ihren Log Analytics-Arbeitsbereich, der Protokolldaten enthält. Unter So ändern Sie Zugriffsberechtigungen für Azure Monitor finden Sie Anleitungen, wie Sie Ihrer Grafana-Instanz die Rolle „Überwachungsleser“ für Ihren Log Analytics-Arbeitsbereich gewähren.

Importieren Sie das Dashboard aus dem Grafana-Katalog ContainerLogV2 Dashboard. Sie können dann das Dashboard öffnen und Werte für DataSource, Abonnement, ResourceGroup, Cluster, Namespace und Bezeichnungen auswählen.

Screenshot des Grafana-Dashboards.

Hinweis

Wenn Sie das Grafana Dashboard zum ersten Mal laden, sehen Sie möglicherweise Fehler, weil die Variablen noch nicht ausgewählt sind. Um dies zu verhindern, speichern Sie das Dashboard, nachdem Sie eine Reihe von Variablen ausgewählt haben, damit es beim ersten Öffnen als Standard festgelegt wird.

Mehrzeilige Protokollierung

Wenn die mehrzeilige Protokollierung aktiviert ist, werden zuvor geteilte Containerprotokolle zusammengefügt und als einzelne Einträge an die Tabelle ContainerLogV2 gesendet. Wenn die zusammengefügte Protokollzeile größer als 64 KB ist, wird sie aufgrund der Grenzwerte des Log Analytics-Arbeitsbereichs abgeschnitten. Dieses Feature bietet auch Unterstützung für .NET-, Go-, Python- und Java-Stapelüberwachungen, die als einzelne Einträge in der ContainerLogV2-Tabelle angezeigt werden. Aktivieren Sie die mehrzeilige Protokollierung mit ConfigMap, wie in Konfigurieren der Datensammlung in Container Insights mithilfe von ConfigMap beschrieben.

Hinweis

Die configmap verfügt jetzt über eine Sprachspezifikationsoption, bei der Kunden nur die Sprachen auswählen können, an denen sie interessiert sind. Dieses Feature kann durch Bearbeiten der Sprachen in der Option stacktrace_languages in der Configmapaktiviert werden.

Die folgenden Screenshots zeigen die mehrzeilige Protokollierung für die Go-Ausnahmestapelüberwachung:

Mehrzeilige Protokollierung deaktiviert

Screenshot der zeigt, dass die mehrzeilige Protokollierung deaktiviert ist.

Mehrzeilige Protokollierung aktiviert

Screenshot der zeigt, dass die mehrzeilige Protokollierung aktiviert ist.

Java-Stapelüberwachung

Screenshot der zeigt, dass die mehrzeilige Protokollierung für Java aktiviert ist.

Python-Stapelüberwachung

Screenshot der zeigt, dass die mehrzeilige Protokollierung für Python aktiviert ist.

Nächste Schritte