Kapsayıcı içgörüleri sorunlarını giderme

Kapsayıcı içgörüleri ile Azure Kubernetes Service (AKS) kümenizin izlenmesini yapılandırdığınızda, veri toplamayı veya raporlama durumunu engelleyen bir sorunla karşılaşabilirsiniz. Bu makalede bazı yaygın sorunlar ve sorun giderme adımları ele alınmaktadır.

Bilinen hata iletileri

Aşağıdaki tabloda, Kapsayıcı içgörülerini kullanırken karşılaşabileceğiniz bilinen hatalar özetlemektedir.

Hata iletileri Eylem
"Seçili filtreler için veri yok" hata iletisi Yeni oluşturulan kümelerin veri akışını izlemek için bir süre beklemeniz gerekebilir. Kümenizde verilerin görünmesi için en az 10-15 dakika izin verin.

Veriler yine de gösterilmiyorsa Log Analytics çalışma alanının için disableLocalAuth = trueyapılandırılıp yapılandırılmamış olduğunu denetleyin. Evet ise, olarak disableLocalAuth = falseyeniden güncelleştirin.

az resource show --ids "/subscriptions/[Your subscription ID]/resourcegroups/[Your resource group]/providers/microsoft.operationalinsights/workspaces/[Your workspace name]"

az resource update --ids "/subscriptions/[Your subscription ID]/resourcegroups/[Your resource group]/providers/microsoft.operationalinsights/workspaces/[Your workspace name]" --api-version "2021-06-01" --set properties.features.disableLocalAuth=False
"Veri alınırken hata oluştu" hata iletisi AKS kümesi sistem durumu ve performans izleme için ayarlanırken, küme ile Log Analytics çalışma alanı arasında bir bağlantı kurulur. Log Analytics çalışma alanı, kümenizin tüm izleme verilerini depolamak için kullanılır. Log Analytics çalışma alanınız silindiğinde bu hata oluşabilir. Çalışma alanının silinip silinmediğini denetleyin. Doğruysa, Container insights ile kümenizin izlenmesini yeniden mümkün hale getirme. Ardından var olan bir çalışma alanını belirtin veya yeni bir çalışma alanı oluşturun. Yeniden etkinleştirmek için küme için izlemeyi devre dışı bırakın ve Kapsayıcı içgörülerini yeniden etkinleştirin .
Kapsayıcı içgörüleri eklendikten sonra "Veri alınırken hata oluştu" az aks cli kullanarak az aks cliizlemeyi etkinleştirdiğinizde Kapsayıcı içgörüleri düzgün dağıtılamayabilir. Çözümün dağıtılıp dağıtılmadığını denetleyin. Doğrulamak için Log Analytics çalışma alanınıza gidin ve sol taraftaki bölmeden Eski çözümler'i seçerek çözümün kullanılabilir olup olmadığını görün. Bu sorunu çözmek için çözümü yeniden dağıtın. Kapsayıcı içgörülerini etkinleştirme başlığındaki yönergeleri izleyin.
"Abonelik kaydı eksik" hata iletisi "Microsoft.OperationsManagement için Abonelik kaydı eksik" hatasını alırsanız, microsoft.OperationsManagement kaynak sağlayıcısını çalışma alanının tanımlandığı aboneliğe kaydederek sorunu çözebilirsiniz. Adımlar için bkz . Kaynak sağlayıcısı kaydı hatalarını çözme.
"İstekte belirtilen yanıt URL'si, uygulama için yapılandırılan yanıt URL'leriyle eşleşmiyor: '<uygulama kimliği>'." hata iletisi Canlı günlükleri etkinleştirdiğinizde bu hata iletisini görebilirsiniz. Çözüm için bkz . Kapsayıcı içgörüleriyle kapsayıcı verilerini gerçek zamanlı olarak görüntüleme.

Sorunu tanılamaya yardımcı olmak için bir sorun giderme betiği sağladık.

Ekleme veya güncelleştirme işlemi sırasında yetkilendirme hatası

Kapsayıcı içgörülerini etkinleştirdiğinizde veya bir kümeyi ölçümleri toplamayı destekleyecek şekilde güncelleştirdiğinizde, "Nesne kimliğine <user's objectId> sahip istemcinin <user's Identity> kapsam üzerinde eylem Microsoft.Authorization/roleAssignments/write gerçekleştirme yetkisi yok" gibi bir hata alabilirsiniz.

Ekleme veya güncelleştirme işlemi sırasında, küme kaynağında İzleme Ölçümleri Yayımcısı rol ataması yapılmaya çalışılır. Kapsayıcı içgörülerini etkinleştirme işlemini başlatan kullanıcının veya ölçümlerin toplanmasını destekleyen güncelleştirmenin AKS kümesi kaynak kapsamında Microsoft.Authorization/roleAssignments/write iznine erişimi olmalıdır. Bu izin yalnızca Sahip ve Kullanıcı Erişimi Yönetici istrator yerleşik rollerinin üyelerine erişim verilir. Güvenlik ilkeleriniz ayrıntılı düzeyde izinler atamanızı gerektiriyorsa bkz . Azure özel rolleri ve bunu gerektiren kullanıcılara izin atama.

Bu rolü Azure portalından el ile de verebilirsiniz: İzleme Ölçümleri kapsamına Yayımcı rolünü atayın. Ayrıntılı adımlar için bkz . Azure portalını kullanarak Azure rolleri atama.

Kapsayıcı içgörüleri etkinleştirildi ancak herhangi bir bilgi bildirilmiyor

Durum bilgilerini görüntüleyemiyorsanız veya günlük sorgusundan hiçbir sonuç döndürülmüyorsa sorunu tanılamak için:

  1. Aşağıdaki komutu çalıştırarak aracının durumunu denetleyin:

    kubectl get ds ama-logs --namespace=kube-system

    Pod sayısı, kümedeki Linux düğümlerinin sayısına eşit olmalıdır. Çıkış, düzgün dağıtıldığını gösteren aşağıdaki örneğe benzemelidir:

    User@aksuser:~$ kubectl get ds ama-logs --namespace=kube-system
    NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR    AGE
    ama-logs   2         2         2         2            2           <none>           1d
    
  2. Windows Server düğümleriniz varsa, aşağıdaki komutu çalıştırarak aracının durumunu denetleyin:

    kubectl get ds ama-logs-windows --namespace=kube-system

    Pod sayısı, kümedeki Windows düğümlerinin sayısına eşit olmalıdır. Çıkış, düzgün dağıtıldığını gösteren aşağıdaki örneğe benzemelidir:

    User@aksuser:~$ kubectl get ds ama-logs-windows --namespace=kube-system
    NAME                   DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR    AGE
    ama-logs-windows           2         2         2         2            2           <none>       1d
    
  3. Aşağıdaki komutu kullanarak dağıtım durumunu denetleyin:

    kubectl get deployment ama-logs-rs --namespace=kube-system

    Çıkış, düzgün dağıtıldığını gösteren aşağıdaki örneğe benzemelidir:

    User@aksuser:~$ kubectl get deployment ama-logs-rs --namespace=kube-system
    NAME          READY   UP-TO-DATE   AVAILABLE   AGE
    ama-logs-rs   1/1     1            1           24d
    
  4. komutunu kubectl get pods --namespace=kube-systemkullanarak podun durumunu denetleyerek çalıştığını doğrulayın.

    Çıkış, ama-logs durumuyla Running aşağıdaki örneğe benzemelidir:

    User@aksuser:~$ kubectl get pods --namespace=kube-system
    NAME                                READY     STATUS    RESTARTS   AGE
    aks-ssh-139866255-5n7k5             1/1       Running   0          8d
    azure-vote-back-4149398501-7skz0    1/1       Running   0          22d
    azure-vote-front-3826909965-30n62   1/1       Running   0          22d
    ama-logs-484hw                      1/1       Running   0          1d
    ama-logs-fkq7g                      1/1       Running   0          1d
    ama-logs-windows-6drwq              1/1       Running   0          1d
    
  5. Podlar çalışır durumdaysa ancak Log Analytics'te veri yoksa veya verilerin günün yalnızca belirli bir bölümünde gönderiliyor gibi görünmesi, günlük sınırın karşılandığının göstergesi olabilir. Bu sınır her gün karşılandığında, veriler Log Analytics Çalışma Alanına alımı durdurur ve sıfırlama zamanında sıfırlanır. Daha fazla bilgi için bkz . Log Analytics Günlük Üst Sınırı.

Kapsayıcı içgörüleri aracısı ReplicaSet Pod'ları AKS olmayan bir kümede zamanlanmamış

Kapsayıcı içgörüleri aracısı ReplicaSet Pod'ları, zamanlama için çalışan (veya aracı) düğümlerinde aşağıdaki düğüm seçicilerine bağımlıdır:

nodeSelector:
  beta.kubernetes.io/os: Linux
  kubernetes.io/role: agent

Çalışan düğümlerinizde düğüm etiketleri yoksa, aracı ReplicaSet Pod'ları zamanlanmamış olur. Etiketi ekleme yönergeleri için bkz . Kubernetes etiket seçicileri atama.

Performans grafiklerinde Azure olmayan bir kümede düğümlerin ve kapsayıcıların CPU'sunu veya belleği gösterilmiyor

Kapsayıcı içgörüleri aracı podları, performans ölçümlerini toplamak için düğüm aracısının cAdvisor uç noktasını kullanır. Düğümdeki kapsayıcı aracısının performans ölçümlerini toplamak için kümedeki tüm düğümlerde açılmasına izin verecek cAdvisor secure port: 10250 veya cAdvisor unsecure port: 10255 açılacak şekilde yapılandırıldığını doğrulayın. Daha fazla bilgi için bkz. karma Kubernetes kümeleri için önkoşullar.

AKS olmayan kümeler Kapsayıcı içgörülerinde gösterilmiyor

Aks olmayan kümeyi Container insights'ta görüntülemek için bu içgörüleri destekleyen Log Analytics çalışma alanında ve Container insights çözüm kaynağı Container Analizler (çalışma alanı) üzerinde okuma erişimi gerekir.

Ölçümler toplanmaz

  1. Aşağıdaki CLI komutunu kullanarak İzleme Ölçümleri Yayımcısı rol atamasının var olduğunu doğrulayın:

    az role assignment list --assignee "SP/UserassignedMSI for Azure Monitor Agent" --scope "/subscriptions/<subid>/resourcegroups/<RG>/providers/Microsoft.ContainerService/managedClusters/<clustername>" --role "Monitoring Metrics Publisher"
    

    MSI'ye sahip kümeler için, izleme her etkinleştirildiğinde ve devre dışı bırakildiğinde Azure İzleyici Aracısı için kullanıcı tarafından atanan istemci kimliği değişir, bu nedenle rol ataması geçerli MSI istemci kimliğinde bulunmalıdır.

  2. Microsoft Entra pod kimliği etkinleştirilmiş ve MSI kullanan kümeler için:

    • Aşağıdaki komutu kullanarak gerekli etiketin kubernetes.azure.com/managedby: aks değerinin Azure İzleyici Aracısı podlarında mevcut olduğunu doğrulayın:

      kubectl get pods --show-labels -n kube-system | grep ama-logs

    • konumunda desteklenen yöntemlerden birini kullanarak pod kimliği etkinleştirildiğinde özel durumların https://github.com/Azure/aad-pod-identity#1-deploy-aad-pod-identityetkinleştirildiğini doğrulayın.

      Doğrulamak için aşağıdaki komutu çalıştırın:

      kubectl get AzurePodIdentityException -A -o yaml

      Aşağıdaki örneğe benzer bir çıktı almalısınız:

      apiVersion: "aadpodidentity.k8s.io/v1"
      kind: AzurePodIdentityException
      metadata:
      name: mic-exception
      namespace: default
      spec:
      podLabels:
      app: mic
      component: mic
      ---
      apiVersion: "aadpodidentity.k8s.io/v1"
      kind: AzurePodIdentityException
      metadata:
      name: aks-addon-exception
      namespace: kube-system
      spec:
      podLabels:
      kubernetes.azure.com/managedby: aks
      

Azure İzleyici Kapsayıcıları Uzantısı'nın Azure Arc özellikli kubernetes kümesinde yüklenmesi başarısız oluyor

"Bildirimler zaten var olan bir kaynak içeriyor" hatası, Container insights aracısının kaynaklarının Azure Arc özellikli Kubernetes kümesinde zaten var olduğunu gösterir. Bu hata, Container insights aracısının zaten yüklü olduğunu gösterir. Azure Arc üzerinden bağlanan bir AKS kümesiyse azuremonitor-containers Helm grafiği veya İzleme Eklentisi aracılığıyla yüklenir.

Bu sorunun çözümü, varsa Container insights aracısının mevcut kaynaklarını temizlemektir. Ardından Azure İzleyici Kapsayıcıları Uzantısı'nı etkinleştirin.

AKS olmayan kümeler için

  1. Azure Arc'a bağlı K8s kümesinde Helm grafiği sürümünün mevcut olup olmadığını azmon-containers-release-1 doğrulamak için aşağıdaki komutu çalıştırın:

    helm list -A

  2. Yukarıdaki komutun çıktısı mevcut olduğunu azmon-containers-release-1 gösteriyorsa Helm grafiği sürümünü silin:

    helm del azmon-containers-release-1

AKS kümeleri için

  1. Aşağıdaki komutları çalıştırın ve AKS İzleme Eklentisi'nin etkinleştirilip etkinleştirilmediğini doğrulamak için Azure İzleyici Aracısı eklenti profilini arayın:

    az  account set -s <clusterSubscriptionId>
    az aks show -g <clusterResourceGroup> -n <clusterName>
    
  2. Çıkış, Log Analytics çalışma alanı kaynak kimliğine sahip bir Azure İzleyici Aracısı eklenti profili yapılandırması içeriyorsa, bu bilgiler AKS İzleme Eklentisi'nin etkinleştirildiğini ve devre dışı bırakılması gerektiğini gösterir:

    az aks disable-addons -a monitoring -g <clusterResourceGroup> -n <clusterName>

Yukarıdaki adımlar Azure İzleyici Kapsayıcıları Uzantısı yükleme sorunlarını çözmediyse, daha fazla araştırma için Microsoft'a gönderilecek bir destek bileti oluşturun.

Yinelenen uyarılar alınıyor

Kapsayıcı içgörüleri önerilen uyarıları devre dışı bırakmadan Prometheus uyarı kurallarını etkinleştirmiş olabilirsiniz. Bkz . Kapsayıcı içgörülerinden önerilen uyarıları Prometheus önerilen uyarı kurallarına (önizleme) geçirme.

"Kapsayıcı Analizler özelliklerine erişiminizi kısıtlayacak doğru küme izinlerine sahip değilsiniz. Doğru izni almak için lütfen küme yöneticinize ulaşın"

Kapsayıcı Analizler, kullanıcıların Log Analytics çalışma alanının erişim iznine bağlı olarak Azure portal deneyimine erişmesine geçmişte izin verilmektedir. Şimdi Azure portalı deneyimine erişim sağlamak için küme düzeyinde izni denetler. Bu izni atamak için küme yöneticinize ihtiyacınız olabilir.

Temel salt okunur küme düzeyi erişimi için aşağıdaki küme türleri için İzleme Okuyucusu rolünü atayın.

  • Kubernetes rol tabanlı erişim denetimi (RBAC) yetkilendirmesi etkin olmayan AKS
  • AKS, Microsoft Entra SAML tabanlı çoklu oturum açma özelliğiyle etkinleştirildi
  • Aks, Kubernetes RBAC yetkilendirmesi ile etkinleştirildi
  • Küme rolü bağlama kümesiyle yapılandırılan AKSMonitoringUser
  • Azure Arc özellikli Kubernetes kümeleri

Rol atamaları hakkında daha fazla bilgi edinmek için aks ve Erişim için bu rolleri atama ve Azure Kubernetes Service (AKS) için kimlik seçenekleri hakkında ayrıntılı bilgi için bkz. Kullanıcıya veya gruba rol izinleri atama.

ContainerLog tablosunu sorgularken Görüntü ve Ad özellik değerlerinin doldurulup doldurulmadiğini görmüyorum

Aracı sürümü ciprod12042019 ve sonraki sürümlerde, toplanan günlük verilerinde tahakkuk eden maliyeti en aza indirmek için varsayılan olarak bu iki özellik her günlük satırı için doldurulmaz. Bu özellikleri içeren tabloyu değerleriyle sorgulamak için iki seçenek vardır:

Seçenek 1

Sonuçlara bu özellik değerlerini eklemek için diğer tabloları birleştirin.

Özelliğine katılarak sorgularınızı ve tablodaki ContainerInventory özellikleri içerecek ImageImageTag şekilde ContainerID değiştirin. Özelliğine Name katılarak ContainerID tablonun ContainerName alanından özelliğini (daha önce tabloda göründüğü ContainerLog gibi) KubepodInventory ekleyebilirsiniz. Bu seçenekle devam etmenizi öneririz.

Aşağıdaki örnek, birleştirmelerle bu alan değerlerinin nasıl alınacağını açıklayan ayrıntılı bir örnek sorgudur.

//Let's say we're querying an hour's worth of logs
let startTime = ago(1h);
let endTime = now();
//Below gets the latest Image & ImageTag for every containerID, during the time window
let ContainerInv = ContainerInventory | where TimeGenerated >= startTime and TimeGenerated < endTime | summarize arg_max(TimeGenerated, *)  by ContainerID, Image, ImageTag | project-away TimeGenerated | project ContainerID1=ContainerID, Image1=Image ,ImageTag1=ImageTag;
//Below gets the latest Name for every containerID, during the time window
let KubePodInv  = KubePodInventory | where ContainerID != "" | where TimeGenerated >= startTime | where TimeGenerated < endTime | summarize arg_max(TimeGenerated, *)  by ContainerID2 = ContainerID, Name1=ContainerName | project ContainerID2 , Name1;
//Now join the above 2 to get a 'jointed table' that has name, image & imagetag. Outer left is safer in case there are no kubepod records or if they're latent
let ContainerData = ContainerInv | join kind=leftouter (KubePodInv) on $left.ContainerID1 == $right.ContainerID2;
//Now join ContainerLog table with the 'jointed table' above and project-away redundant fields/columns and rename columns that were rewritten
//Outer left is safer so you don't lose logs even if we can't find container metadata for loglines (due to latency, time skew between data types, etc.)
ContainerLog
| where TimeGenerated >= startTime and TimeGenerated < endTime
| join kind= leftouter (
  ContainerData
) on $left.ContainerID == $right.ContainerID2 | project-away ContainerID1, ContainerID2, Name, Image, ImageTag | project-rename Name = Name1, Image=Image1, ImageTag=ImageTag1

Seçenek 2

Her kapsayıcı günlük satırı için bu özellikler için koleksiyonu yeniden kullanılabilir.

Sorgu değişiklikleri söz konusu olduğundan ilk seçenek uygun değilse, bu alanları toplamayı yeniden düzenleyebilirsiniz. Veri toplama yapılandırma ayarlarında açıklandığı gibi aracı yapılandırma eşlemesindeki ayarı log_collection_settings.enrich_container_logs etkinleştirin.

Not

50'den fazla düğümü olan büyük kümeler için ikinci seçeneği önermeyiz. Bu zenginleştirmeyi gerçekleştirmek için kümedeki her düğümden API sunucusu çağrıları oluşturur. Bu seçenek ayrıca toplanan her günlük satırı için veri boyutunu artırır.

Eklendikten sonra kümeyi yükseltemiyorum

Senaryo şu şekildedir: Azure Kubernetes Service kümesi için Kapsayıcı içgörülerini etkinleştirmişsiniz. Ardından kümenin verilerini gönderdiği Log Analytics çalışma alanını sildiyseniz. Şimdi kümeyi yükseltmeye çalıştığınızda başarısız oluyor. Bu sorunu geçici olarak çözmek için izlemeyi devre dışı bırakmanız ve aboneliğinizde farklı bir geçerli çalışma alanına başvurarak yeniden etkinleştirmeniz gerekir. Küme yükseltmesini yeniden gerçekleştirmeye çalıştığınızda, başarıyla işlemesi ve tamamlanması gerekir.

Azure Stack HCI kümesinde günlükler toplanmıyor

Kümenizi kaydettiyseniz ve/veya HCI Analizler Kasım 2023'den önce yapılandırdıysanız, HCI'de Azure İzleyici aracısını kullanan Sunucular için Arc Analizler, VM Analizler, Container Analizler, Bulut için Defender veya Microsoft Sentinel gibi özellikler günlükleri ve olay verilerini düzgün toplamayabilir. Aracıyı ve HCI Analizler yeniden yapılandırma adımları için bkz. HCI için AMA aracısını onarma.

Sonraki adımlar

AKS kümesi düğümleri ve podları için sistem durumu ölçümlerini yakalamak için izleme etkinleştirildiğinde, bu sistem durumu ölçümleri Azure portalında kullanılabilir. Kapsayıcı içgörülerini kullanmayı öğrenmek için bkz. Azure Kubernetes Hizmet durumu görüntüleme.