Freigeben über


Überwachen von Datenebenen- und Steuerungsebenenprotokollen in Azure Kubernetes Application Network (Vorschau)

Von Bedeutung

AKS-Vorschaufunktionen sind auf Selbstbedienungsbasis und freiwillig verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Das Azure Kubernetes-Anwendungsnetzwerk bietet zwei Arten von Protokollierung, die Sie basierend auf Ihren Überwachungs- und Problembehandlungsanforderungen konfigurieren können: Datenebenenprotokolle und Steuerungsebenenprotokolle.

  • Protokolle der Datenebene: Schließen Sie Protokolle aus Anwendungsworkloads, applink-system Namespacekomponenten und Envoy-Proxyzugriffsprotokollen ein.
  • Steuerungsebenenprotokolle: Schließen Sie Istiod-Protokolle aus den Komponenten der Azure Kubernetes-Anwendungsnetzwerksteuerungsebene ein.

Die Azure Kubernetes-Anwendungsnetzwerkprotokollierung ist standardmäßig deaktiviert. In diesem Artikel wird beschrieben, wie Sie beide Protokollierungstypen aktivieren und in Azure Monitor anzeigen.

Festlegen von Umgebungsvariablen

  • Legen Sie Umgebungsvariablen für den ausgewählten Workflow mithilfe der folgenden Befehle fest:

    # Set if specifying an existing or creating a new Log Analytics workspace
    export LAW_NAME=<log-analytics-workspace-name>
    
    # Set for resource group, location, and AKS cluster name
    export AKS_RG=<aks-resource-group>
    export LOCATION=<location>
    export CLUSTER_NAME=<aks-cluster-name>
    
    # Set for Azure Kubernetes Application Network member resource group, name, and member name
    export APPNET_RG=<appnet-resource-group>
    export APPNET_NAME=<appnet-name>
    export APPNET_MEMBER_NAME=<appnet-member-name>
    

Aktivieren von Datenebenenprotokollen

Datenebenenprotokolle enthalten Protokolle aus Ihren Workloads/Anwendungen und applink-system-Workloads (Ztunnel und Istio CNI). Das Azure Container Insights-Add-On ist die bevorzugte Methode zum Aktivieren und Anzeigen von Protokollen für die Problembehandlung.

Wenn Sie Datenebenenprotokolle aktivieren, haben Sie die Möglichkeit, einen vorhandenen Log Analytics-Arbeitsbereich anzugeben, den Standardarbeitsbereich für Ihre Ressourcengruppe zu verwenden oder einen neuen Arbeitsbereich zu erstellen.

Erstellen eines neuen Log Analytics-Arbeitsbereichs

  • Wenn Sie einen neuen Log Analytics-Arbeitsbereich erstellen, verwenden Sie den az monitor log-analytics workspace create Folgenden Befehl:

    az monitor log-analytics workspace create \
        --resource-group $AKS_RG \
        --workspace-name $LAW_NAME \
        --location $LOCATION
    

Aktivieren Sie das Containerüberwachungs-Add-On auf Ihrem AKS-Cluster

  • Aktivieren Sie das Container Insights-Add-On für Ihren Azure Kubernetes Application Network-Membercluster (optional weglassen der Arbeitsbereichs-ID) mithilfe des az aks enable-addons Befehls.

     az aks enable-addons \
      --addon monitoring \
      --name $CLUSTER_NAME \
      --resource-group $AKS_RG \
      --workspace-resource-id /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME
    

Protokolle anzeigen

  • Zeigen Sie die Protokolle an, indem Sie zum Log Analytics-Arbeitsbereich navigieren und die folgende Abfrage ausführen:

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Envoy-Zugriffsprotokolle

In einigen Fällen müssen Sie möglicherweise Envoy-Zugriffsprotokolle untersuchen, wenn Datenverkehr für Ihre Anwendungen/Workloads generiert wird. Verwenden Sie die Telemetrie-API, um Envoy-Zugriffsprotokolle zu aktivieren.

  1. Geben Sie im folgenden YAML den Namespace an, in dem Sie die Envoy-Zugriffsprotokollierung aktivieren möchten. Entfernen Sie für mesh-weite Envoy-Zugriffsprotokolle den Namespace aus den Metadaten.

    cat <<EOF | kubectl apply -n default -f -
    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: mesh-logging-default
      namespace: default
    spec:
      accessLogging:
      - providers:
        - name: envoy
    EOF
    

    Envoy-Zugriffsprotokolle sind im Log Analytics-Arbeitsbereich verfügbar, in dem das Container Insights-Add-On aktiviert wurde.

  2. Zeigen Sie die Protokolle des Envoy-Zugriffs an, indem Sie zum Log Analytics-Arbeitsbereich navigieren und die folgende Abfrage ausführen:

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where PodName contains "gateway"
    | take 10
    

Aktivieren von Steuerungsebenenprotokollen

Um Steuerungsebenenprotokolle zu aktivieren, erstellen Sie eine Diagnoseeinstellung und senden Protokolle an den Log Analytics-Arbeitsbereich.

  1. Legen Sie eine Umgebungsvariable für den Namen Ihrer Diagnoseeinstellung mithilfe des folgenden Befehls fest:

    export DS_NAME=<diagnostic-settings-name>
    
  2. Erstellen Sie eine Diagnoseeinstellung für Ihre Azure Kubernetes Application Network-Memberressource, und geben Sie den Log Analytics-Arbeitsbereich als Ziel mit dem az monitor diagnostic-settings create Befehl an.

    az monitor diagnostic-settings create \
    --resource /subscriptions/$SUBSCRIPTION/resourceGroups/$APPNET_RG/providers/Microsoft.AppLink/appLinks/$APPNET_NAME/appLinkMembers/$APPNET_MEMBER_NAME \
    --workspace /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME \
    --logs "[{category:istiod,enabled:true}]" \
    --name $DS_NAME
    
  3. Navigieren Sie nach der Aktivierung zum Log Analytics-Arbeitsbereich, und führen Sie die folgende Abfrage aus:

    Hinweis

    $appnet_member_resourceId sollte im Format vorliegen: /subscriptions/$subscription/resourceGroups/$appnet_rg/providers/microsoft.applink/applinks/$appnet_name/applinkmembers/$appnet_member_name.

    MeshControlPlane
    | where TimeGenerated > ago(1h)
    | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
    

Protokolltabellen und -schema

Die folgenden Tabellen enthalten Azure Kubernetes-Anwendungsnetzwerkprotokolle in Ihrem Log Analytics-Arbeitsbereich:

Logbuch-Tabelle Beschreibung
ContainerLogV2 Enthält Ihre Anwendungs-/Workload-Protokolle
MeshControlPlane Enthält Istiod-Protokolle

Schema

Informationen zum Suchen des ContainerLogV2 Schemas finden Sie in den Spalten "ContainerLogV2".

MeshControlPlane ist eine benutzerdefinierte Tabelle mit dem folgenden Schema:

# Spaltenname Typ
0 Mieter-ID Schnur
1 TimeGenerated Datum/Uhrzeit
2 Kategorie Schnur
3 Grad Schnur
4 Meldung Schnur
5 Container Schnur
6 PodName Schnur
7 SourceSystem Schnur
8 Typ Schnur
9 _ResourceId Schnur

Beispielabfragen

Filtern von Protokollen nach AKS-Clusterressourcen-ID

  • Filtern Sie Protokolle mithilfe der folgenden Abfrage basierend auf Ihrer AKS-verwalteten Clusterressource-ID in der Tabelle "ContainerLogV2".

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where _ResourceId == $aks_cluster_resource_id // managed cluster resourceId
    

Protokolle nach Azure Kubernetes Application Network-Mitgliedsressourcen-ID filtern

  • Filtern Sie Protokolle basierend auf Ihrer Azure Kubernetes Application Network-Ressourcen-ID in der Tabelle "MeshControlPlane" für Steuerebenenprotokolle mithilfe der folgenden Abfrage:

    MeshControlPlane
    | where TimeGenerated > ago(45m)
    | where Level == "ERROR"
    | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
    

    Der folgende Screenshot zeigt ein Beispiel für Fehler im Zusammenhang mit “Application Network Istiod” in den Azure Monitor Protokollen.

    Screenshot von Beispielfehlern des Anwendungsnetzwerks Istiod in Azure Monitor-Protokollen.

Weitere Informationen zu Azure Kubernetes Application Network Observability und Monitoring finden Sie in den folgenden Artikeln: