Freigeben über


Konfigurieren der Protokollsammlung in Container Insights

In diesem Artikel wird beschrieben, wie Sie die Datensammlung in Container Insights für Ihren Kubernetes-Cluster nach dem Onboarding konfigurieren. Anleitungen zum Aktivieren von Container Insights in Ihrem Cluster finden Sie unter Aktivieren der Überwachung für Kubernetes-Cluster.

Konfigurationsmethoden

Es gibt zwei Methoden zum Konfigurieren und Filtern von Daten, die in Container Insights gesammelt werden. Je nach Einstellung können Sie möglicherweise zwischen den beiden Methoden wählen, oder Sie müssen eine bestimmte Methode verwenden. Die beiden Methoden werden in der nachstehenden Tabelle beschrieben. Detaillierte Informationen finden Sie in den folgenden Abschnitten.

Methode Beschreibung
Datensammlungsregel (Data Collection Rule, DCR) Datensammlungsregeln sind Gruppen von Anweisungen, die die Datensammlung mit der Azure Monitor-Pipeline unterstützen. Wenn Sie Container Insights aktivieren, wird eine Datensammlungsregel erstellt. Sie können die Einstellungen in dieser Datensammlungsregel entweder über das Azure-Portal oder mit anderen Methoden ändern.
ConfigMap ConfigMap ist ein Kubernetes-Mechanismus, mit dem Sie nicht vertrauliche Daten wie Konfigurationsdateien oder Umgebungsvariablen speichern können. Container Insights sucht auf jedem Cluster nach einer ConfigMap mit bestimmten Einstellungen, die die Daten definieren, die gesammelt werden sollen.

Konfigurieren der Datensammlung mit einer Datensammlungsregel

Die Datensammlungsregel, die von Container Insights erstellt wird, heißt MSCI-<Clusterregion>-<Clustername>. Sie können diese Datensammlungsregel zusammen mit anderen in Ihrem Abonnement anzeigen, und Sie können sie mithilfe von Methoden bearbeiten, die in Erstellen und Bearbeiten von Datensammlungsregeln (DATA Collection Rules, DCRs) in Azure Monitor beschrieben werden. Sie können die Datensammlungsregel für bestimmte Anpassungen zwar direkt ändern, aber die meisten erforderlichen Konfigurationen können Sie mit den unten beschriebenen Methoden ausführen. Unter Datentransformationen in Container Insights wird genauer beschrieben, wie Sie die Datensammlungsregel direkt bearbeiten, um erweiterte Konfigurationen vorzunehmen.

Wichtig

AKS-Cluster müssen entweder eine systemseitig oder benutzerseitig zugewiesene verwaltete Identität verwenden. Wenn ein Cluster einen Dienstprinzipal verwendet, müssen Sie den Cluster so aktualisieren, dass eine systemseitig zugewiesene verwaltete Identität oder eine benutzerseitig zugewiesene verwaltete Identität verwendet wird.

Konfigurieren einer Datensammlungsregel mit dem Azure-Portal

Bei Verwendung des Azure-Portals können Sie aus mehreren voreingestellten Konfigurationen für die Datensammlung in Container Insights auswählen. Diese Konfigurationen umfassen unterschiedliche Tabellengruppen und Sammlungshäufigkeiten, je nach Ihren jeweiligen Prioritäten. Sie können die Einstellungen auch so anpassen, dass nur die benötigten Daten gesammelt werden. Sie können das Azure-Portal verwenden, um die Konfiguration auf Ihrem vorhandenen Cluster anzupassen, nachdem Container Insights aktiviert wurde, oder Sie können diese Konfiguration vornehmen, wenn Sie Container Insights auf Ihrem Cluster aktivieren.

  1. Wählen Sie den Cluster im Azure-Portal aus.

  2. Wählen Sie im Menü Überwachung die Option Erkenntnisse aus.

  3. Wenn Containererkenntnisse bereits im Cluster aktiviert wurde, wählen Sie die Schaltfläche Überwachungseinstellungen aus. Wählen Sie andernfalls Azure Monitor konfigurieren aus, und lesen Sie Überwachung auf Ihrem Kubernetes-Cluster mit Azure Monitor aktivieren für Details zum Aktivieren der Überwachung.

    Screenshot eines AKS-Clusters mit Schaltfläche für Überwachungseinstellungen.

  4. Wählen Sie für AKS und Arc-fähige Kubernetes die Option Verwaltete Identität verwenden aus, wenn Sie den Cluster noch nicht zur verwalteten Identitätsauthentifizierung migriert haben.

  5. Wählen Sie eine der Kostenvoreinstellungen aus.

    Screenshot der Onboardingoptionen

    Kostenvoreinstellung Sammlungshäufigkeit Namespacefilter Syslog-Sammlung Gesammelte Daten
    Standard 1 m Keine Nicht aktiviert Alle Container Insights-Standardtabellen
    Kostenoptimiert 5 m Schließt „kube-system“, „gatekeeper-system“, „azure-arc“ aus. Nicht aktiviert Alle Container Insights-Standardtabellen
    syslog 1 m Keine Standardmäßig aktiviert Alle Container Insights-Standardtabellen
    Protokolle und Ereignisse 1 m Keine Nicht aktiviert ContainerLog/ContainerLogV2
    KubeEvents
    KubePodInventory
  6. Wenn Sie die Einstellungen anpassen möchten, klicken Sie auf Sammlungseinstellungen bearbeiten.

    Screenshot der Optionen für Sammlungseinstellungen.

    Name Beschreibung
    Sammlungshäufigkeit Bestimmt, wie oft der Agent Daten sammelt. Gültige Werte sind 1 Min. bis 30 Min. in 1 Min.-Intervallen. Der Standardwert ist 1 Min.
    Namespacefilterung Aus: Sammelt Daten für alle Namespaces.
    Include: Erfasst nur Daten aus den Werten im Feld Namespaces.
    Exclude: Erfasst Daten aus allen Namespaces mit Ausnahme der Werte im Feld Namespaces.

    Array von durch Kommas getrennten Kubernetes-Namespaces zum Sammeln von Bestands- und Leistungsdaten basierend auf der namespaceFilteringMode. Beispielsweise werden bei namespaces = [“kube-system“, „default“] mit der Einstellung Include nur Daten für diese beiden Namespaces erfasst. Bei der Einstellung Exclude sammelt der Agent Daten aus allen Namespaces mit Ausnahme der Namespaces kube-system und default.
    Gesammelte Daten Definiert, welche Container Insights-Tabellen gesammelt werden sollen. Eine Beschreibung der einzelnen Gruppierungen finden Sie unten.
    Aktivieren von ContainerLogV2 Boolesches Flag zum Aktivieren des ContainerLogV2-Schemas. Wenn dieser Wert auf „true“ festgelegt ist, werden die Stdout/stderr-Protokolle in die Tabelle ContainerLogV2 aufgenommen. Andernfalls werden die Containerprotokolle in die Tabelle Containerlog aufgenommen, sofern nicht anders in der ConfigMap angegeben. Wenn Sie die einzelnen Datenströme angeben, müssen Sie die entsprechende Tabelle für „ContainerLog“ oder „ContainerLogV2“ einschließen.
    Aktivieren der Syslog-Sammlung Aktiviert die Syslog-Sammlung vom Cluster.

    Mit der Option Gesammelte Daten können Sie die Tabellen auswählen, die für den Cluster aufgefüllt werden. Die Tabellen sind nach den häufigsten Szenarien gruppiert. Um einzelne Tabellen anzugeben, müssen Sie die Datensammlungsregel mithilfe einer anderen Methode ändern.

    Screenshot: Optionen für gesammelte Daten

    Gruppierung Tabellen Hinweise
    Alle (Standard) Alle Container Insights-Standardtabellen Zum Aktivieren der Container Insights-Standardvisualisierungen erforderlich
    Leistung Perf, InsightsMetrics
    Protokolle und Ereignisse ContainerLog oder ContainerLogV2, KubeEvents, KubePodInventory Empfohlen, wenn Sie verwaltete Prometheus-Metriken aktiviert haben
    Workloads, Bereitstellungen und HPAs InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
    Persistent Volumes InsightsMetrics, KubePVInventory
  7. Klicken Sie auf Konfigurieren, um die Einstellungen zu speichern.

Anwendbare Tabellen und Metriken für die Datensammlungsregel

Die Einstellungen für die Sammlungshäufigkeit und Namespacefilterung in der Datensammlungsregel gelten nicht für alle Container Insights-Daten. In der folgenden Tabelle sind die Tabellen im Log Analytics-Arbeitsbereich aufgeführt, die von Container Insights verwendet werden, sowie die gesammelten Metriken mit den jeweils geltenden Einstellungen.

Tabellenname Interval? Namespaces? Hinweise
ContainerInventory Ja Ja
ContainerNodeInventory Ja Nein Die Einstellung zur Datensammlung für Namespaces ist nicht anwendbar, da Kubernetes Node keine Namespace-Ressource ist.
KubeNodeInventory Ja Nein Die Einstellung für die Datensammlung für Namespaces ist nicht anwendbar; Kubernetes Node ist keine Namespace-Ressource
KubePodInventory Ja Ja
KubePVInventory Ja Ja
KubeServices Ja Ja
KubeEvents Nein Ja Die Einstellung zur Datensammlung für das Intervall ist für Kubernetes Events nicht anwendbar
Perf Ja Ja Die Einstellung zur Datensammlung für Namespaces gilt nicht für die auf Kubernetes Node bezogenen Metriken, da Kubernetes Node kein Namespace-Objekt ist.
InsightsMetrics Ja Ja Datensammlungseinstellungen gelten nur für die Metriken, die die folgenden Namespaces sammeln: container.azm.ms/kubestate, container.azm.ms/pv und container.azm.ms/gpu
Metriknamespace Interval? Namespaces? Hinweise
Insights.container/nodes Ja Nein Node ist keine Namespace-Ressource.
Insights.container/pods Ja Ja
Insights.container/containers Ja Ja
Insights.container/persistentvolumes Ja Ja

Datenstromwerte in der Datensammlungsregel

Wenn Sie die Tabellen angeben, die mit CLI oder ARM gesammelt werden sollen, geben Sie einen Datenstromnamen an, der einer bestimmten Tabelle im Log Analytics-Arbeitsbereich entspricht. In der folgenden Tabelle sind die Datenstromnamen für jede Tabelle aufgeführt.

Hinweis

Wenn Sie mit der Struktur einer Datensammlungsregel vertraut sind, können Sie die Datenstromnamen in dieser Tabelle im Abschnitt dataFlows der Datensammlungsregel angegeben.

STREAM Container Insights-Tabelle
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (Hoher Skalierungsmodus)1
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

1 Microsoft-ContainerLogV2 sowie Microsoft-ContainerLogV2-HighScale sollte nicht im selben DCR verwendt werden. Dies führt zu doppelten Daten.

Teilen einer Datensammlungsregel mit mehreren Clustern

Wenn Sie Container Insights für einen Kubernetes-Cluster aktivieren, wird für diesen Cluster eine neue Datensammlungsregel erstellt, und die Datensammlungsregel für jeden Cluster kann unabhängig geändert werden. Wenn Sie über mehrere Cluster mit benutzerdefinierten Überwachungskonfigurationen verfügen, kann eine einzelne Datensammlungsregel von mehreren Clustern geteilt werden. Anschließend können Sie an einer einzelnen Datensammlungsregel Änderungen vornehmen, die automatisch für alle damit verbundenen Cluster implementiert werden.

Eine Datensammlungsregel wird einem Cluster mit einer Datensammlungsregelzuordnung (Data Collection Rule Association, DCRA) zugeordnet. Verwenden Sie die Datensammlungsregel-Vorschau, um vorhandene Datensammlungsregelzuordnungen für jeden Cluster anzuzeigen und zu entfernen. Sie können diese Funktion dann verwenden, um eine Zuordnung zu einer einzelnen Datensammlungsregel für mehrere Cluster hinzuzufügen.

Konfigurieren der Datensammlung mit ConfigMap

Eine ConfigMap ist ein Kubernetes-Mechanismus, mit dem Sie nicht vertrauliche Daten wie eine Konfigurationsdatei oder Umgebungsvariablen speichern können. Container Insights sucht auf jedem Cluster nach einer ConfigMap mit bestimmten Einstellungen, die die Daten definieren, die gesammelt werden sollen.

Wichtig

Eine ConfigMap ist eine globale Liste, und es kann nur eine ConfigMap auf den Agent für Container Insights angewandt werden. Durch das Anwenden einer weiteren ConfigMap werden die vorherigen ConfigMap-Sammlungseinstellungen außer Kraft gesetzt.

Voraussetzungen

  • Die Agent-Mindestversion, die zum Erfassen von „stdout“, „stderr“ und Umgebungsvariablen aus Containerworkloads unterstützt wird, ist ciprod06142019 oder höher.

Konfigurieren und Bereitstellen einer ConfigMap

Führen Sie die folgenden Schritte durch, um Ihre ConfigMap-Konfigurationsdatei zu konfigurieren und in Ihrem Cluster bereitzustellen:

  1. Wenn Sie noch nicht über eine ConfigMap für Container Insights verfügen, laden Sie die ConfigMap-YAML-Vorlagendatei herunter, und öffnen Sie sie in einem Editor.

  2. Passen Sie die ConfigMap-YAML-Datei wie gewünscht an. Die Vorlage enthält alle gültigen Einstellungen mit Beschreibungen. Um eine Einstellung zu aktivieren, entfernen Sie das Kommentarzeichen (#), und legen Sie ihren Wert fest.

  3. Erstellen Sie eine ConfigMap, indem Sie den folgenden kubectl-Befehl ausführen:

    kubectl config set-context <cluster-name>
    kubectl apply -f <configmap_yaml_file.yaml>
    
    # Example: 
    kubectl config set-context my-cluster
    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    Die Änderung der Konfiguration kann einige Minuten dauern, bevor sie wirksam wird. Anschließend werden alle Azure Monitor-Agent-Pods im Cluster neu gestartet. Der Neustart aller Azure Monitor-Agent-Pods erfolgt gleitend, sodass nicht alle gleichzeitig neu gestartet werden. Nach Abschluss der Neustarts wird eine Meldung mit einem Ergebnis ähnlich dem folgenden angezeigt:

    configmap "container-azm-ms-agentconfig" created`.
    

Überprüfen der Konfiguration

Verwenden Sie den folgenden Befehl zum Überprüfen der Protokolle aus einem Agent-Pod, um sich zu vergewissern, dass die Konfiguration erfolgreich auf einen Cluster angewandt wurde.

kubectl logs ama-logs-fdf58 -n kube-system -c ama-logs

Bei Konfigurationsfehlern aus den Azure Monitor-Agent-Pods werden von der Ausgabe Fehler ähnlich den folgenden angezeigt:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Verwenden Sie die folgenden Optionen zur weiteren Problembehandlung von Konfigurationsänderungen:

  • Verwenden Sie denselben kubectl logs-Befehl von einem Agent-Pod.

  • Überprüfen Sie Liveprotokolle auf ähnliche Fehler wie:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • Daten werden jede Stunde an die KubeMonAgentEvents-Tabelle in Ihrem Log Analytics-Arbeitsbereich gesendet. Sie enthalten einen Fehlerschweregrad für Konfigurationsfehler. Wenn keine Fehler vorliegen, enthält der Eintrag in der Tabelle Daten mit dem Schweregrad „Info“, der Fehlerfreiheit angibt. Die Spalte Tags enthält weitere Informationen zum Pod und zu der Container-ID, für die der Fehler aufgetreten ist, sowie zum ersten Vorkommen, zum letzten Vorkommen und zur Anzahl in der letzten Stunde.

Überprüfen der Schemaversion

Unterstützte Konfigurationsschemaversionen stehen als Podanmerkung (schema-versions) auf dem Azure Monitor-Agent-Pod zur Verfügung. Sie können diese mit dem folgenden kubectl-Befehl anzeigen.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

ConfigMap-Einstellungen

In der folgenden Tabelle werden die Einstellungen beschrieben, die Sie zum Steuern der Datensammlung mit ConfigMap konfigurieren können.

Einstellung Datentyp Wert BESCHREIBUNG
schema-version Zeichenfolge (Groß-/Kleinschreibung wird berücksichtigt) v1 Wird vom Agent beim Parsen dieser ConfigMap verwendet Die derzeit unterstützte Schemaversion ist v1. Die Bearbeitung dieses Werts wird nicht unterstützt und bei der Auswertung der ConfigMap abgelehnt.
config-version String Ermöglicht die Nachverfolgung der Version dieser Konfigurationsdatei in Ihrem Quellcodeverwaltungssystem/Repository Es sind maximal 10 Zeichen zulässig, alle zusätzlichen Zeichen werden abgeschnitten.
[log_collection_settings]
[stdout]
enabled
Boolesch true
false
Steuert, ob die Sammlung von stdout-Containerprotokollen aktiviert wird. Wenn dieser Wert auf true festgelegt ist und keine Namespaces für die stdout-Protokollsammlung ausgeschlossen wurden, werden stdout-Protokolle von allen Containern auf allen Pods und Knoten im Cluster gesammelt. Falls in der ConfigMap nicht angegeben, lautet der Standardwert true.
[stdout]
exclude_namespaces
String Durch Trennzeichen getrenntes Array Array aus Kubernetes-Namespaces, für die keine stdout-Protokolle erfasst werden. Diese Einstellung gilt nur, wenn enabled auf true festgelegt ist. Falls in der ConfigMap nicht angegeben, lautet der Standardwert
["kube-system","gatekeeper-system"].
[stderr]
enabled
Boolesch true
false
Steuert, ob die Sammlung von stderr-Containerprotokollen aktiviert wird. Wenn dieser Wert auf true festgelegt ist und keine Namespaces für die stderr-Protokollsammlung ausgeschlossen wurden, werden stderr-Protokolle von allen Containern auf allen Pods und Knoten im Cluster gesammelt. Falls in der ConfigMap nicht angegeben, lautet der Standardwert true.
[stderr]
exclude_namespaces
String Durch Trennzeichen getrenntes Array Array aus Kubernetes-Namespaces, für die keine stderr-Protokolle erfasst werden. Diese Einstellung gilt nur, wenn enabled auf true festgelegt ist. Falls in der ConfigMap nicht angegeben, lautet der Standardwert
["kube-system","gatekeeper-system"].
[env_var]
enabled
Boolesch true
false
Steuert die Sammlung von Umgebungsvariablen für alle Pods und Knoten im Cluster. Falls in der ConfigMap nicht angegeben, lautet der Standardwert true.
[enrich_container_logs]
enabled
Boolesch true
false
Steuert die Anreicherung von Containerprotokollen so, dass die Eigenschaftswerte Name und Image für jeden in die Tabelle ContainerLog geschriebenen Protokolldatensatz für alle Containerprotokolle im Cluster ausgefüllt werden. Falls in der ConfigMap nicht angegeben, lautet der Standardwert false.
[collect_all_kube_events]
enabled
Boolesch true
false
Steuert, ob Kube-Ereignisse aller Typen gesammelt werden. Standardmäßig werden Kube-Ereignisse mit dem Typ Normal nicht erfasst. Wenn diese Einstellung auf true festgelegt wird, werden Ereignisse vom Typ Normal nicht mehr gefiltert, und alle Ereignisse werden gesammelt. Falls in der ConfigMap nicht angegeben, lautet der Standardwert false.
[schema]
containerlog_schema_version
Zeichenfolge (Groß-/Kleinschreibung wird berücksichtigt) v2
v1
Legt das Protokollerfassungsformat fest. Wenn der Wert v2 lautet, wird die Tabelle ContainerLogV2 verwendet. Wenn der Wert v1 lautet, wird die Tabelle ContainerLog verwendet (diese Tabelle ist veraltet). Für Cluster, die Container Insights mithilfe der Azure-Befehlszeilenschnittstelle Version 2.54.0 oder höher ermöglichen, lautet die Standardeinstellung v2. Weitere Details finden Sie unter Container Insights-Protokollschema.
[enable_multiline_logs]
enabled
Boolesch true
false
Steuert, ob mehrzeilige Containerprotokolle aktiviert sind. Weitere Informationen finden Sie unter Mehrzeilige Protokollierung in Container Insights. Falls in der ConfigMap nicht angegeben, lautet der Standardwert false. Dies erfordert, dass die Einstellung schema auf v2 festgelegt ist.
[metadata_collection]
enabled
Boolesch true
false
Steuert, ob Metadaten in der Spalte KubernetesMetadata der Tabelle ContainerLogV2 gesammelt werden.
[metadata_collection]
include_fields
String Durch Trennzeichen getrenntes Array Liste der einzuschließenden Metadatenfelder. Wenn die Einstellung nicht verwendet wird, werden alle Felder gesammelt. Gültige Werte sind ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[metric_collection_settings]
[collect_kube_system_pv_metrics]
enabled
Boolesch true
false
Ermöglicht das Sammeln von Nutzungsmetriken für persistente Volumes (PV) im kube-system-Namespace. Standardmäßig werden Nutzungsmetriken für persistente Volumes mit Ansprüchen für persistente Volumes (Persistent Volume Claim, PVC) im kube-system-Namespace nicht erfasst. Wenn diese Einstellung auf true festgelegt ist, werden die PV-Nutzungsmetriken für alle Namespaces gesammelt. Falls in der ConfigMap nicht angegeben, lautet der Standardwert false.
[agent_settings]
[proxy_config]
ignore_proxy_settings
Boolesch true
false
Wenn der Wert true lautet, werden Proxyeinstellungen ignoriert. Wenn Ihr Cluster mit einem Weiterleitungsproxy in AKS- und Arc-fähigen Kubernetes-Umgebungen konfiguriert ist, werden Proxyeinstellungen automatisch angewandt und für den Agent verwendet. Bei bestimmten Konfigurationen, z. B. AMPLS und Proxy, können Sie die Proxykonfiguration ignorieren. Falls in der ConfigMap nicht angegeben, lautet der Standardwert false.

Nächste Schritte