Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Containereinblicke 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. Dieses Schema ist die Standardtabelle für Kunden, die Containereinblicke mit verwalteter Identitätsauthentifizierung integrieren. Aktivieren Sie ContainerLogV2 explizit über CLI Version 2.51.0 oder höher mithilfe von Datensammlungseinstellungen.
Wichtig
Die Unterstützung für die ContainerLog-Tabelle wird am 30. September 2026 eingestellt. Nach diesem Datum empfängt die Legacytabelle keine Daten mehr. Migrieren Sie zu ContainerLogV2 , bevor Sie Lücken in der Protokollsammlung vermeiden. Informationen zum Wechseln von Tabellen finden Sie unter "Aktivieren des ContainerLogV2-Schemas".
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 |
| Einarbeitung | Nur über ConfigMap konfigurierbar. | Konfigurierbar über ConfigMap und DCR. 3 |
| Preiskalkulation | Nur kompatibel mit vollpreisigen Analyseprotokollen. | Unterstützt zusätzlich zu Analyseprotokollen die Stufe "Einfache Protokolle mit niedriger Kosten". |
| 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 Zeilen unterteilt. | Unterstützung für mehrzeilige Protokollierung, um konsolidierte, einzelne Einträge für mehrzeilige Ausgaben zu ermöglichen. |
1 If LogMessage is valid JSON and has a key named level, its value is used. Andernfalls leitet regex-basierte Schlüsselwortabgleiche LogLevel von LogMessage. Diese Ableitung kann zu einigen Fehlklassifizierungen führen.
LogLevelist ein Zeichenfolgenfeld mit einem Wert wie CRITICAL, ERROR, , , WARNING, INFO, DEBUG, oder TRACEUNKNOWN.
2KubernetesMetadata ist eine optionale Spalte, die mit Kubernetes-Metadaten aktiviert ist. Der Wert dieses Felds ist JSON mit den Feldern podLabels, , podAnnotations, podUid, image, imageID, und imageTagimageRepo.
3 Für die DCR-Konfiguration ist die Authentifizierung mit verwalteter Identität erforderlich.
Hinweis
Das LogMessage Feld ist dynamisch und unterstützt das Aufnehmen von JSON- und Nur-Text-Zeichenfolgenformaten.
Der Protokolldatenexport in Event Hubs und im Speicherkonto wird unterstützt, wenn die eingehenden LogMessage-Daten gültiger JSON-Code oder eine gültige einfache Zeichenfolge ist.
Wenn der LogMessage JSON-Code falsch formatiert ist, werden diese Protokollnachrichten mit Escapezeichen aufgenommen. Standardmäßig werden Protokollnachrichten abgeschnitten, die größer als 16 KB sind. Bei aktivierter mehrstufiger Protokollierung werden Protokollnachrichten abgeschnitten, die größer als 64 KB sind.
Aktivieren des ContainerLogV2-Schemas
Aktivieren Sie das ContainerLogV2-Schema für einen Cluster entweder mithilfe des Protokollprofils des Clusters oder configMap. Wenn beide Einstellungen aktiviert sind, hat ConfigMap Vorrang. Die ContainerLog Tabelle wird nur verwendet, wenn beide explizit deaktiviert sind.
Wichtig
Die ContainerLogV2-Einstellung steuert nicht, ob Daten gesammelt werden oder nicht. Es gibt nur an, an welche Tabelle die Daten gesendet werden, wenn sie erfasst werden.
Bevor Sie das ContainerLogV2-Schema aktivieren, überprüfen Sie, ob Warnungsregeln vorhanden sind, die auf der Tabelle "ContainerLog" basieren. Aktualisieren Sie alle Benachrichtigungen, um die neue Tabelle zu verwenden. Führen Sie die folgende Azure Resource Graph Abfrage aus, um nach Warnungsregeln zu suchen, die auf die Tabelle ContainerLog 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 erweitert das ContainerLogV2-Schema mit zusätzlichen Kubernetes-Metadaten. Das Protokollfilterfeature bietet Filterfunktionen für Workload- und Plattformcontainer. Diese Features verbessern die Sichtbarkeit Ihrer Workloads.
Hinweis
Die Kubernetes-Metadaten und Protokolle zum Filtern des Grafana-Dashboards unterstützen derzeit keine Standardprotokolle.
Funktionen
Erweitertes ContainerLogV2-Schema Wenn Sie Kubernetes-Metadaten aktivieren, enthält die
ContainerLogV2Tabelle eine neue Spalte namensKubernetesMetadata. Diese Spalte erleichtert die Problembehandlung mithilfe einfacher Protokollabfragen und entfernt die Notwendigkeit, mit anderen Tabellen zu verknüpfen. Die Felder in dieser Spalte umfassenpodLabels, ,podAnnotations,podUid,image,imageID, , undimageRepoimageTag. Informationen zum Aktivieren dieses Features finden Sie unter "Aktivieren von Kubernetes-Metadaten".Protokollebene Dieses Feature fügt eine
LogLevelSpalteContainerLogV2mit den möglichen WertenCRITICAL, ,ERRORWARNING,INFO,DEBUG, , oderTRACEUNKNOWN. In dieser Spalte können Sie den Anwendungsstatus basierend auf dem Schweregrad bewerten. Das Grafana-Dashboard visualisiert die Trends auf Protokollebene im Laufe der Zeit, um betroffene Ressourcen schnell zu ermitteln.Grafana-Dashboard zur Visualisierung Das Grafana-Dashboard bietet eine farbcodierte Visualisierung der Protokollebene und Einblicke in Protokollvolumen, Protokollrate und Protokolldatensätze. Das Dashboard bricht Daten nach Computer, Pod und Container auf, um eine gezielte Problembehandlung zu ermöglichen. Informationen zum Installieren des Dashboards finden Sie unter Installieren des Grafana-Dashboards.
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 der 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 Sammlung von Kubernetes-Metadaten erfordert die verwaltete Identitätsauthentifizierung und ContainerLogV2.
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 wird die KubernetesMetadata Spalte in jeder Protokollabfrage für die ContainerLogV2 Tabelle angezeigt, wie im folgenden Screenshot dargestellt.
Installieren des Grafana-Dashboards
Wichtig
Wenn Sie Grafana mithilfe der Anleitung unter Enable Monitoring 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. Lesen Sie in Wie Sie Zugriffsberechtigungen für Azure Monitor ändern die Anleitung zur Zuweisung der Rolle "Überwachungsleser" an Ihre Grafana-Instanz für Ihren Log-Analytics-Arbeitsbereich.
Importieren Sie das Dashboard aus dem Grafana-Katalog ContainerLogV2 Dashboard. Öffnen Sie das Dashboard, und wählen Sie Werte für DataSource, Subscription, ResourceGroup, Cluster, Namespace und Bezeichnungen aus.
Hinweis
Wenn Sie das Grafana-Dashboard anfänglich laden, werden möglicherweise Fehler angezeigt, da Variablen noch nicht ausgewählt sind. Um zu verhindern, dass dies wiederholt wird, speichern Sie das Dashboard, nachdem Sie eine Reihe von Variablen ausgewählt haben, sodass es zum Standard für das erste Öffnen wird.
Mehrzeilige Protokollierung
Die mehrstufige Protokollierung ordnet zuvor geteilte Containerprotokolle zusammen und sendet sie als einzelne Einträge an die ContainerLogV2 Tabelle. Aktivieren Sie die mehrstufige Protokollierung mithilfe von ConfigMap, wie unter "Konfigurieren der Containerprotokollsammlung mit ConfigMap" beschrieben.
Hinweis
Die Configmap verfügt jetzt über eine Sprachspezifikationsoption, mit der Sie 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.
Einschränkungen
- Die mehrzeilige Protokollierung fügt nur Ausnahmestapelablaufverfolgungen aus den Containern mit Java, Python, .NET und Go zusammen. Andere mehrteilige Protokolleinträge, einschließlich benutzerdefinierter Ausnahmen und beliebiger Protokollmeldungen, werden nicht zusammengefügt.
- Die mehrzeilige Protokollierung wird für Ausnahme-Stapelüberwachungen in Python mit fine-grained-error-locations-in-tracebacks nicht unterstützt. Damit die mehrstufige Protokollierung funktioniert, müssen Sie dieses Feature deaktivieren, wie in Python Documentation beschrieben.
- Standardmäßig schneidet die Containerlaufzeit Protokollzeilen mit 16 KB ab. Wenn Sie die mehrstufige Protokollierung aktivieren,
ContainerLogV2werden Protokollzeilen bis zu 64 KB unterstützt.
Beispiele
Deaktivieren der mehrzeilige Protokollierung für Ausnahmestapelablaufverfolgung
Aktivieren der mehrzeilige Protokollierung für Ausnahmestapelablaufverfolgung
Java-Stack-Trace-Mehrzeilenprotokollierung aktiviert
Python Stack-Trace mehrzeiliges Logging aktiviert
Nächste Schritte
- Konfigurieren von Standardprotokollen für ContainerLogV2.
- Erfahren Sie, wie Sie Daten aus ContainerLogV2 abfragen .