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 - LogLevel 1- KubernetesMetadata 2 |
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.
Features
Erweitertes ContainerLogV2-Schema: Wenn Kubernetes Logs Metadata aktiviert ist, wird eine Spalte namens
KubernetesMetadata
zuContainerLogV2
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 imkube-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.
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.
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
Mehrzeilige Protokollierung aktiviert
Java-Stapelüberwachung
Python-Stapelüberwachung
Nächste Schritte
- Konfigurieren Sie die Basisprotokolle für ContainerLogv2.
- Erfahren Sie, wie Sie aus ContainerLogV2 Daten abfragen.