Övervaka dataplans- och kontrollplansloggar i Azure Kubernetes Application Network (förhandsversion)

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Azure Kubernetes Application Network innehåller två typer av loggning som du kan konfigurera baserat på dina övervaknings- och felsökningskrav: dataplansloggar och kontrollplansloggar.

  • Dataplansloggar: Inkludera loggar från programarbetsbelastningar, applink-system namnområdeskomponenter och envoyproxyåtkomstloggar.
  • Kontrollplansloggar: Inkludera Istiod-loggar från kontrollplanskomponenterna för Azure Kubernetes Application Network.

Loggning av Azure Kubernetes-programnätverk är inaktiverad som standard. Den här artikeln beskriver hur du aktiverar båda typerna av loggning och visar dem i Azure Monitor.

Ange miljövariabler

  • Ange miljövariabler för det valda arbetsflödet med hjälp av följande kommandon:

    # 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>
    

Aktivera dataplansloggar

Dataplansloggar innehåller loggar från dina arbetsbelastningar/program och applink-system arbetsbelastningar (Ztunnel och Istio CNI). Azure Container Insights-tillägget är det bästa sättet att aktivera och visa loggar för felsökning.

När du aktiverar dataplansloggar kan du ange en befintlig Log Analytics-arbetsyta, använda standardarbetsytan för resursgruppen eller skapa en ny arbetsyta.

Skapa en ny Log Analytics-arbetsyta

  • Om du skapar en ny Log Analytics-arbetsyta använder du az monitor log-analytics workspace create kommandot:

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

Aktivera Container Insights-tillägg i ditt AKS-kluster

  • Aktivera Container Insights-tillägget för ditt Azure Kubernetes Application Network-medlemskluster (om du vill utelämna arbetsytans ID) med hjälp av az aks enable-addons kommandot .

     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
    

Visa loggar

  • Visa loggarna genom att gå till Log Analytics-arbetsytan och köra följande fråga:

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Åtkomstloggar för Envoy

I vissa fall kan du behöva undersöka Envoy-åtkomstloggar när trafik genereras för dina program/arbetsbelastningar. Om du vill aktivera Envoy-åtkomstloggar använder du telemetri-API:et.

  1. I YAML nedan anger du det namnområde där du vill aktivera Envoy-åtkomstloggning. För mesh-wide Envoy-åtkomstloggar tar du bort namnområdet från metadata.

    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-åtkomstloggar kommer att vara tillgängliga på Log Analytics-arbetsytan där Container Insights-tillägget aktiverades.

  2. Visa åtkomstloggarna för Envoy genom att gå till Log Analytics-arbetsytan och köra följande fråga:

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

Aktivera kontrollplansloggar

Om du vill aktivera kontrollplansloggar skapar du en diagnostikinställning och skickar loggar till Log Analytics-arbetsytan.

  1. Ange en miljövariabel för namnet på diagnostikinställningen med hjälp av följande kommando:

    export DS_NAME=<diagnostic-settings-name>
    
  2. Skapa en diagnostikinställning för din Azure Kubernetes Application Network-medlemsresurs och ange Log Analytics-arbetsytan som mål med kommandot az monitor diagnostic-settings create .

    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. När du är aktiverad navigerar du till Log Analytics-arbetsytan och kör följande fråga:

    Anmärkning

    $appnet_member_resourceId ska vara i formatet: /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
    

Loggtabeller och schema

Följande tabeller innehåller Azure Kubernetes Application Network-loggar på din Log Analytics-arbetsyta:

Logaritmtabell Beskrivning
ContainerLogV2 Innehåller dina program-/arbetsbelastningsloggar
MeshControlPlane Innehåller Istiod-loggar

Skema

Information om hur du hittar schemat finns i ContainerLogV2ContainerLogV2-kolumner.

MeshControlPlane är en anpassad tabell med följande schema:

# Kolumnnamn Type
0 Hyresgivares-id snöre
1 TimeGenerated datetime
2 Kategori snöre
3 Nivå snöre
4 Message snöre
5 Behållare snöre
6 Podnamn snöre
7 Källsystem snöre
8 Type snöre
9 _ResourceId snöre

Exempelfrågor

Filtrera loggar efter RESURS-ID för AKS-kluster

  • Filtrera loggar baserat på ditt AKS-hanterade klusterresurs-ID i tabellen ContainerLogV2 med hjälp av följande fråga:

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

Filtrera loggar efter Azure Kubernetes Application Network-medlemsresurs-ID

  • Filtrera loggar baserat på ditt azure Kubernetes Application Network-medlemsresurs-ID i tabellen MeshControlPlane för kontrollplansloggar med hjälp av följande fråga:

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

    Följande skärmbild visar ett exempel på Istiod-fel för programnätverk i Azure Monitor-loggar:

    Skärmbild av exempel på Istiod-fel för programnätverk i Azure Monitor-loggar.

Mer information om observerbarhet och övervakning av Azure Kubernetes-programnätverk finns i följande artiklar: