Monitorování protokolů datové vrstvy a řídicí vrstvy ve službě Azure Kubernetes Application Network (preview)

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Aplikační síť Azure Kubernetes poskytuje dva typy protokolování, které můžete nakonfigurovat na základě požadavků na monitorování a řešení potíží: protokoly roviny dat a protokoly řídicí roviny.

  • Protokoly roviny dat: Zahrňte protokoly z aplikačních úloh, applink-system komponent oboru názvů a protokolů přístupu proxy serveru Envoy.
  • Protokoly řídicí roviny: Zahrnout protokoly Istiod z komponent řídicí roviny aplikační sítě Azure Kubernetes.

Protokolování sítě aplikací Azure Kubernetes je ve výchozím nastavení zakázané. Tento článek popisuje, jak povolit oba typy protokolování a zobrazit je ve službě Azure Monitor.

Nastavení proměnných prostředí

  • Pomocí následujících příkazů nastavte proměnné prostředí pro vybraný pracovní postup:

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

Povolení protokolů roviny dat

Protokoly roviny dat zahrnují protokoly z vašich úloh nebo aplikací a applink-system úloh (Ztunnel a Istio CNI). Doplněk Azure Container Insights je upřednostňovaným způsobem povolení a zobrazení protokolů pro řešení potíží.

Při povolování protokolů roviny dat máte možnost zadat existující pracovní prostor služby Log Analytics, použít výchozí pracovní prostor pro vaši skupinu prostředků nebo vytvořit nový pracovní prostor.

Vytvoření nového pracovního prostoru služby Log Analytics

  • Pokud vytváříte nový pracovní prostor služby Log Analytics, použijte tento az monitor log-analytics workspace create příkaz:

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

Povolení doplňku Container Insights v clusteru AKS

  • Povolte doplněk Container Insights pro váš členský cluster Azure Kubernetes Application Network, a to volitelně bez ID pracovního prostoru, pomocí příkazu az aks enable-addons.

     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
    

Zobrazit protokoly

  • Prohlédněte si protokoly tak, že přejdete do pracovního prostoru služby Log Analytics a spustíte následující dotaz:

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Protokoly přístupu Envoy

V některých případech možná budete muset prozkoumat protokoly přístupu Envoy, když se generuje provoz pro vaše aplikace nebo úlohy. Pokud chcete povolit protokoly přístupu Envoy, použijte rozhraní API Telemetrie.

  1. V souboru YAML níže zadejte obor názvů, ve kterém chcete povolit přístupové logování Envoy. Pro přístupové protokoly Envoy v rámci celé sítě odeberte obor názvů z metadat.

    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
    

    Protokoly přístupu Envoy budou k dispozici v pracovním prostoru Log Analytics, kde byl povolen doplněk Container Insights.

  2. Zobrazte protokoly přístupu envoy tak, že přejdete do pracovního prostoru služby Log Analytics a spustíte následující dotaz:

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

Povolení protokolů řídicí roviny

Pokud chcete povolit protokoly řídicí roviny, vytvoříte nastavení diagnostiky a odešlete protokoly do pracovního prostoru služby Log Analytics.

  1. Pomocí následujícího příkazu nastavte proměnnou prostředí pro název nastavení diagnostiky:

    export DS_NAME=<diagnostic-settings-name>
    
  2. Vytvořte nastavení diagnostiky pro prostředek člena aplikační sítě Azure Kubernetes a pomocí příkazu zadejte pracovní prostor služby Log Analytics jako cíl 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. Po povolení přejděte do pracovního prostoru služby Log Analytics a spusťte následující dotaz:

    Poznámka:

    $appnet_member_resourceId by měla být ve formátu: /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
    

Tabulky protokolů a schéma

Následující tabulky obsahují protokoly aplikační sítě Azure Kubernetes v pracovním prostoru služby Log Analytics:

Tabulka logů Description
ContainerLogV2 Obsahuje vaše aplikace nebo protokoly úloh.
MeshControlPlane Obsahuje protokoly Istiod.

Schema

Pokud chcete najít ContainerLogV2 schéma, projděte si sloupce ContainerLogV2.

MeshControlPlane je vlastní tabulka s následujícím schématem:

# Název sloupce Typ
0 Identifikátor nájemce (TenantId) řetězec
1 TimeGenerated datetime
2 Kategorie řetězec
3 Úroveň řetězec
4 Zpráva řetězec
5 Kontejner řetězec
6 Název podu řetězec
7 SourceSystem řetězec
8 Typ řetězec
9 _ResourceId (ID zdroje) řetězec

Vzorové dotazy

Filtrování protokolů podle ID zdroje clusteru AKS

  • Pomocí následujícího dotazu vyfiltrujte protokoly na základě ID prostředku spravovaného clusteru AKS v tabulce ContainerLogV2:

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

Filtrování protokolů podle ID zdroje člena Azure Kubernetes Application Network

  • Pomocí následujícího dotazu vyfiltrujte protokoly na základě ID prostředku člena aplikační sítě Azure Kubernetes v tabulce MeshControlPlane pro protokoly roviny řízení:

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

    Následující snímek obrazovky ukazuje příklad chyb aplikace Istiod v protokolech služby Azure Monitor.

    Snímek obrazovky s ukázkovými chybami aplikační sítě Istiod v protokolech služby Azure Monitor

Další informace o pozorovatelnosti a monitorování aplikační sítě Azure Kubernetes najdete v následujících článcích: