Azure Kubernetes Uygulama Ağı'nda veri düzlemi ve denetim düzlemi günlüklerini izleme (önizleme)

Önemli

AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:

Azure Kubernetes Uygulama Ağı, izleme ve sorun giderme gereksinimlerinize göre yapılandırabileceğiniz iki günlük türü sağlar: veri düzlemi günlükleri ve denetim düzlemi günlükleri.

  • Veri düzlemi günlükleri: Uygulama iş yüklerinden, applink-system ad alanı bileşenlerinden ve Envoy proxy erişim günlüklerinden günlükleri ekleyin.
  • Denetim düzlemi günlükleri: Azure Kubernetes Uygulama Ağı denetim düzlemi bileşenlerinden Istiod günlüklerini ekleyin.

Azure Kubernetes Uygulama Ağı günlüğü varsayılan olarak devre dışıdır. Bu makalede her iki günlük türünün de nasıl etkinleştirileceği ve Bunların Azure İzleyici'de nasıl görüntüleneceği açıklanmaktadır.

Ortam değişkenlerini belirleme

  • Aşağıdaki komutları kullanarak seçtiğiniz iş akışı için ortam değişkenlerini ayarlayın:

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

Veri düzlemi günlüklerini etkinleştirme

Veri düzlemi günlükleri, iş yüklerinizden/uygulamalarınızdan ve applink-system iş yüklerinizden (Ztunnel ve Istio CNI) günlükleri içerir. Azure Container Insights eklentisi, sorun giderme için günlükleri etkinleştirmenin ve görüntülemenin tercih edilen yoludur.

Veri düzlemi günlüklerini etkinleştirirken mevcut bir Log Analytics çalışma alanını belirtme, kaynak grubunuz için varsayılan çalışma alanını kullanma veya yeni bir çalışma alanı oluşturma seçeneğiniz vardır.

Yeni log analytics çalışma alanı oluşturma

  • Yeni bir Log Analytics çalışma alanı oluşturuyorsanız komutunu kullanın az monitor log-analytics workspace create :

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

AKS kümenizde Container Insights eklentisini etkinleştirme

  • komutunu kullanarak az aks enable-addons Azure Kubernetes Application Network üye kümeniz için Container Insights eklentisini etkinleştirin (isteğe bağlı olarak çalışma alanı kimliğini atlayın).

     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
    

Günlükleri görüntüleme

  • Log Analytics çalışma alanına gidip aşağıdaki sorguyu çalıştırarak günlükleri görüntüleyin:

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Elçi erişim günlükleri

Bazı durumlarda, uygulamalarınız/iş yükleriniz için trafik oluşturulduğunda Elçi erişim günlüklerini incelemeniz gerekebilir. Envoy erişim günlüklerini etkinleştirmek için Telemetri API'sini kullanın.

  1. Aşağıdaki YAML'de, Envoy erişim günlüğünü etkinleştirmek istediğiniz ad alanını belirtin. Ağ genelindeki Envoy erişim günlükleri için meta verilerden ad alanını kaldırın.

    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
    

    Elçi erişim günlükleri, Container Insights eklentisinin etkinleştirildiği Log Analytics çalışma alanında kullanılabilir.

  2. Log Analytics çalışma alanına gidip aşağıdaki sorguyu çalıştırarak Envoy erişim günlüklerini görüntüleyin:

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

Denetim düzlemi günlüklerini etkinleştir

Denetim düzlemi günlüklerini etkinleştirmek için bir tanılama ayarı oluşturur ve günlükleri Log Analytics çalışma alanına gönderirsiniz.

  1. Aşağıdaki komutu kullanarak tanılama ayarı adınız için bir ortam değişkeni ayarlayın:

    export DS_NAME=<diagnostic-settings-name>
    
  2. Azure Kubernetes Application Network üye kaynağınız için bir tanılama ayarı oluşturun ve komutunu kullanarak az monitor diagnostic-settings create Log Analytics çalışma alanını hedef olarak belirtin.

    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. Etkinleştirildikten sonra Log Analytics çalışma alanına gidin ve aşağıdaki sorguyu çalıştırın:

    Uyarı

    $appnet_member_resourceId biçiminde olmalıdır: /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
    

Günlük tabloları ve şema

Aşağıdaki tablolar Log Analytics çalışma alanınızdaki Azure Kubernetes Uygulama Ağı günlüklerini içerir:

logaritma tablosu Açıklama
ContainerLogV2 Uygulama/iş yükü günlüklerinizi içerir
MeshControlPlane Istiod günlüklerini içerir

Şema

Şemayı ContainerLogV2 bulmak için bkz. ContainerLogV2 sütunları.

MeshControlPlane aşağıdaki şemaya sahip özel bir tablodur:

# Sütun adı Türü
0 KiracıID dize
1 TimeGenerated tarih/zaman
2 Kategori dize
3 Seviye dize
4 Mesaj dize
5 Container dize
6 PodAdı dize
7 Kaynak Sistemi dize
8 Türü dize
9 Kaynak Kimliği (_ResourceId) dize

Örnek sorgulamalar

Aks kümesi kaynak kimliğine göre günlükleri filtreleme

  • Aşağıdaki sorguyu kullanarak ContainerLogV2 tablosundaki AKS yönetilen küme kaynak kimliğinize göre günlükleri filtreleyin:

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

Günlükleri Azure Kubernetes Uygulama Ağı üyesi kaynak kimliğine göre filtreleme

  • Aşağıdaki sorguyu kullanarak denetim düzlemi günlükleri için MeshControlPlane tablosundaki Azure Kubernetes Uygulama Ağı üyesi kaynak kimliğinize göre günlükleri filtreleyin:

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

    Aşağıdaki ekran görüntüsünde Azure İzleyici Günlüklerindeki Uygulama Ağı Istiod hatalarının bir örneği gösterilmektedir:

    Azure İzleyici günlüklerindeki örnek Uygulama Ağı Istiod hatalarının ekran görüntüsü.

Azure Kubernetes Uygulama Ağı gözlemlenebilirliği ve izlemesi hakkında daha fazla bilgi için aşağıdaki makalelere bakın: