Memecahkan masalah wawasan Kontainer

Saat mengonfigurasi pemantauan kluster Azure Kubernetes Service (AKS) dengan wawasan Kontainer, Anda mungkin mengalami masalah yang mencegah pengumpulan data atau status pelaporan. Artikel ini membahas beberapa masalah umum dan langkah-langkah pemecahan masalah.

Pesan kesalahan yang diketahui

Tabel berikut ini meringkas kesalahan yang diketahui yang mungkin Anda temui saat menggunakan wawasan Kontainer.

Pesan kesalahan Perbuatan
Pesan kesalahan "Tidak ada data untuk filter yang dipilih" Mungkin perlu waktu untuk menetapkan aliran data pemantauan untuk kluster yang baru dibuat. Biarkan setidaknya 10 hingga 15 menit agar data muncul untuk kluster Anda.

Jika data masih tidak muncul, periksa apakah ruang kerja Analitik Log dikonfigurasi untuk disableLocalAuth = true. Jika ya, perbarui kembali ke disableLocalAuth = false.

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
Pesan kesalahan "Kesalahan mengambil data" Saat kluster AKS disiapkan untuk pemantauan kesehatan dan performa, koneksi dibuat antara kluster dan ruang kerja Analitik Log. Ruang kerja Analitik Log digunakan untuk menyimpan semua data pemantauan untuk kluster Anda. Kesalahan ini mungkin terjadi saat ruang kerja Analitik Log Anda telah dihapus. Periksa jika ruang kerja telah terhapus. Jika ya, pemantauan kluster Anda yang dapat diperkenalkan dengan wawasan Kontainer. Kemudian tentukan ruang kerja yang sudah ada atau buat ruang kerja baru. Untuk mengaktifkan kembali, nonaktifkan pemantauan untuk kluster dan aktifkan wawasan Kontainer lagi.
"Kesalahan mengambil data" setelah menambahkan wawasan Kontainer melalui az aks cli Saat Anda mengaktifkan pemantauan dengan menggunakan az aks cli, Wawasan kontainer mungkin tidak disebarkan dengan benar. Periksa apakah solusinya disebarkan. Untuk memverifikasi, buka ruang kerja Analitik Log Anda dan lihat apakah solusi tersedia dengan memilih Solusi warisan dari panel di sisi kiri. Untuk mengatasi masalah ini, sebarkan ulang solusinya. Ikuti instruksi di Mengaktifkan wawasan Kontainer.
Pesan kesalahan "Pendaftaran langganan hilang" Jika Anda menerima kesalahan "Pendaftaran langganan hilang untuk Microsoft.OperationsManagement," Anda dapat mengatasinya dengan mendaftarkan penyedia sumber daya Microsoft.OperationsManagement di langganan tempat ruang kerja ditentukan. Untuk langkah-langkahnya, lihat Mengatasi kesalahan untuk pendaftaran penyedia sumber daya.
Pesan kesalahan "Url balasan yang ditentukan dalam permintaan tidak cocok dengan url balasan yang dikonfigurasi untuk aplikasi: '<ID> aplikasi'." Anda mungkin melihat pesan kesalahan ini saat mengaktifkan log langsung. Untuk solusinya, lihat Menampilkan data kontainer secara real time dengan wawasan Kontainer.

Untuk membantu mendiagnosis masalah, kami telah menyediakan skrip pemecahan masalah.

Kesalahan otorisasi selama operasi orientasi atau pembaruan

Saat Anda mengaktifkan wawasan Kontainer atau memperbarui kluster untuk mendukung pengumpulan metrik, Anda mungkin menerima kesalahan seperti "Klien <user's Identity> dengan id <user's objectId> objek tidak memiliki otorisasi untuk melakukan tindakan Microsoft.Authorization/roleAssignments/write melalui cakupan."

Selama proses onboarding atau pembaruan, pemberian penetapan peran Penerbit Metrik Pemantauan akan dicoba pada sumber daya kluster. Pengguna yang memulai proses untuk mengaktifkan Container insight atau pembaruan untuk mendukung pengumpulan metrik harus memiliki akses ke izin Microsoft.Authorization/roleAssignments/write pada cakupan sumber daya kluster AKS. Hanya anggota peran bawaan Pemilik dan Admin Akses Pengguna yang diberikan akses ke izin ini. Jika kebijakan keamanan mengharuskan Anda menetapkan izin tingkat granular, lihat Peran kustom Azure dan menetapkan izin kepada pengguna yang memerlukannya.

Anda juga dapat memberikan peran ini secara manual dari portal Azure: Tetapkan peran Penerbit ke cakupan Metrik Pemantauan. Untuk langkah yang lebih detail, lihat Menetapkan peran Azure dengan menggunakan portal Azure.

Container insight diaktifkan tetapi tidak melaporkan informasi apa pun

Untuk mendiagnosis masalah jika Anda tidak dapat menampilkan informasi status atau tidak ada hasil yang dikembalikan dari kueri log:

  1. Periksa status agen dengan menjalankan perintah berikut:

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

    Jumlah pod harus sama dengan jumlah simpul Linux pada kluster. Output harus menyerupai contoh berikut, yang menunjukkan bahwa output tersebut disebarkan dengan benar:

    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. Jika Anda memiliki simpul Windows Server, periksa status agen dengan menjalankan perintah berikut:

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

    Jumlah pod harus sama dengan jumlah simpul Windows pada kluster. Output harus menyerupai contoh berikut, yang menunjukkan bahwa output tersebut disebarkan dengan benar:

    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. Periksa status penyebaran dengan menggunakan perintah berikut:

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

    Output harus menyerupai contoh berikut, yang menunjukkan bahwa output tersebut disebarkan dengan benar:

    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. Periksa status pod untuk memverifikasi bahwa pod berjalan dengan menggunakan perintah kubectl get pods --namespace=kube-system.

    Output harus menyerupai contoh berikut dengan status Running untuk ama-logs:

    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. Jika pod dalam keadaan berjalan, tetapi tidak ada data di Analitik Log atau data yang tampaknya hanya dikirim selama bagian tertentu dalam sehari, itu mungkin merupakan indikasi bahwa batas harian telah terpenuhi. Ketika batas ini terpenuhi setiap hari, data berhenti menyerap ke ruang kerja Analitik Log dan mengatur ulang pada waktu reset. Untuk informasi selengkapnya, lihat Batas Harian Analitik Log.

Pod ReplicaSet agen wawasan kontainer tidak dijadwalkan pada kluster non-AKS

Pod ReplicaSet agen container insights memiliki dependensi pada pemilih simpul berikut pada simpul pekerja (atau agen) untuk penjadwalan:

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

Jika simpul pekerja Anda tidak memiliki label node yang terpasang, Pod ReplicaSet agen tidak akan dijadwalkan. Untuk petunjuk tentang cara melampirkan label, lihat Kubernetes menetapkan pemilih label.

Bagan kinerja tidak menampilkan CPU atau memori node dan kontainer pada kluster non-Azure

Pod agen wawasan kontainer menggunakan titik akhir cAdvisor pada agen simpul untuk mengumpulkan metrik performa. Verifikasi agen kontainer pada simpul dikonfigurasi untuk mengizinkan cAdvisor secure port: 10250 atau cAdvisor unsecure port: 10255 dibuka pada semua simpul dalam kluster untuk mengumpulkan metrik performa. Lihat prasyarat untuk kluster Kubernetes hibrid untuk informasi selengkapnya.

Kluster non-AKS tidak ditampilkan dalam wawasan Kontainer

Untuk melihat kluster non-AKS dalam wawasan Kontainer, akses baca diperlukan di ruang kerja Analitik Log yang mendukung wawasan ini dan pada sumber daya solusi wawasan Kontainer ContainerInsights (ruang kerja).

Metrik tidak ada yang dikumpulkan

  1. Verifikasi bahwa penetapan peran Penerbit Metrik Pemantauan ada dengan menggunakan perintah CLI berikut:

    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"
    

    Untuk kluster dengan MSI, ID klien yang ditetapkan pengguna untuk Agen Azure Monitor berubah setiap kali pemantauan diaktifkan dan dinonaktifkan, sehingga penetapan peran harus ada pada ID klien MSI saat ini.

  2. Untuk kluster dengan identitas pod Microsoft Entra diaktifkan dan menggunakan MSI:

    • Verifikasi bahwa label yang diperlukan kubernetes.azure.com/managedby: aks ada di pod Agen Azure Monitor dengan menggunakan perintah berikut:

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

    • Verifikasi bahwa pengecualian diaktifkan ketika identitas pod diaktifkan dengan menggunakan salah satu metode yang didukung di https://github.com/Azure/aad-pod-identity#1-deploy-aad-pod-identity.

      Jalankan perintah berikut ini untuk memverifikasi:

      kubectl get AzurePodIdentityException -A -o yaml

      Anda harus menerima output yang mirip dengan contoh berikut:

      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
      

Penginstalan Ekstensi Kontainer Azure Monitor gagal pada kluster Kubernetes dengan dukungan Azure Arc

Kesalahan "manifes berisi sumber daya yang sudah ada" menunjukkan bahwa sumber daya agen wawasan Kontainer sudah ada di kluster Kubernetes dengan dukungan Azure Arc. Kesalahan ini menunjukkan bahwa agen wawasan Kontainer sudah diinstal. Ini diinstal baik melalui bagan Helm kontainer azuremonitor atau Add-on Pemantauan jika itu adalah kluster AKS yang terhubung melalui Azure Arc.

Solusi untuk masalah ini adalah membersihkan sumber daya yang ada dari agen wawasan Kontainer jika ada. Kemudian aktifkan Ekstensi Kontainer Azure Monitor.

Untuk kluster non-AKS

  1. Terhadap kluster K8s yang tersambung ke Azure Arc, jalankan perintah berikut untuk memverifikasi apakah azmon-containers-release-1 rilis bagan Helm ada atau tidak:

    helm list -A

  2. Jika output perintah sebelumnya menunjukkan bahwa azmon-containers-release-1 ada, hapus rilis bagan Helm:

    helm del azmon-containers-release-1

Untuk kluster AKS

  1. Jalankan perintah berikut dan cari profil add-on Agen Azure Monitor untuk memverifikasi apakah Add-on Pemantauan AKS diaktifkan:

    az  account set -s <clusterSubscriptionId>
    az aks show -g <clusterResourceGroup> -n <clusterName>
    
  2. Jika output menyertakan konfigurasi profil add-on Agen Azure Monitor dengan ID sumber daya ruang kerja Analitik Log, informasi ini menunjukkan bahwa Add-on Pemantauan AKS diaktifkan dan harus dinonaktifkan:

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

Jika langkah-langkah sebelumnya tidak menyelesaikan penginstalan masalah Ekstensi Kontainer Azure Monitor, buat tiket dukungan untuk dikirim ke Microsoft untuk penyelidikan lebih lanjut.

Pemberitahuan duplikat sedang diterima

Anda mungkin telah mengaktifkan aturan pemberitahuan Prometheus tanpa menonaktifkan pemberitahuan yang direkomendasikan wawasan Kontainer. Lihat Migrasi dari pemberitahuan yang direkomendasikan wawasan Kontainer ke aturan pemberitahuan yang direkomendasikan Prometheus (pratinjau).

Saya melihat banner info "Anda tidak memiliki izin kluster yang tepat yang akan membatasi akses Anda ke fitur Container Insights. Silakan hubungi admin kluster Anda untuk mendapatkan izin yang tepat"

Container Insights secara historis mengizinkan pengguna untuk mengakses pengalaman portal Azure berdasarkan izin akses ruang kerja Analitik Log. Sekarang memeriksa izin tingkat kluster untuk memberikan akses ke pengalaman portal Azure. Anda mungkin memerlukan admin kluster untuk menetapkan izin ini.

Untuk akses tingkat kluster baca-saja dasar, tetapkan peran Pembaca Pemantauan untuk jenis kluster berikut.

  • AKS tanpa otorisasi kontrol akses berbasis peran (RBAC) Kubernetes diaktifkan
  • AKS diaktifkan dengan akses menyeluruh berbasis Microsoft Entra SAML
  • AKS diaktifkan dengan otorisasi RBAC Kubernetes
  • AKS dikonfigurasi dengan kluster pengikatan peran clusterMonitoringUser
  • Kluster Kubernetes dengan dukungan Azure Arc

Lihat Menetapkan izin peran ke pengguna atau grup untuk detail tentang cara menetapkan peran ini untuk opsi AKS dan Akses dan identitas untuk Azure Kubernetes Service (AKS) untuk mempelajari lebih lanjut tentang penetapan peran.

Saya tidak melihat nilai properti Gambar dan Nama diisi saat saya mengkueri tabel ContainerLog

Untuk versi agen ciprod12042019 dan yang lebih baru, secara default kedua properti ini tidak diisi untuk setiap baris log guna meminimalkan biaya yang timbul pada data log yang dikumpulkan. Ada dua opsi untuk mengkueri tabel yang menyertakan properti ini dengan nilainya:

Pilihan 1

Gabungkan tabel lain untuk menyertakan nilai properti ini dalam hasil.

Ubah kueri Anda untuk menyertakan Image dan properti dari ContainerInventory tabel dengan bergabung pada ContainerIDImageTag properti . Anda dapat menyertakan Name properti (seperti yang sebelumnya muncul dalam ContainerLog tabel) dari KubepodInventory bidang tabel ContainerName dengan bergabung pada ContainerID properti . Kami merekomendasikan opsi ini.

Contoh berikut adalah sampel kueri terperinci yang menjelaskan cara mendapatkan nilai bidang ini dengan gabungan.

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

Opsi 2

Koleksi yang dapat diperbaharui untuk properti ini untuk setiap baris log kontainer.

Jika opsi pertama tidak nyaman karena perubahan kueri yang terlibat, Anda dapat mengaktifkan kembali pengumpulan bidang ini. Aktifkan pengaturan log_collection_settings.enrich_container_logs di peta konfigurasi agen seperti yang dijelaskan dalam pengaturan konfigurasi pengumpulan data.

Catatan

Kami tidak merekomendasikan opsi kedua untuk kluster besar yang memiliki lebih dari 50 simpul. Ini menghasilkan panggilan server API dari setiap node dalam kluster untuk melakukan pengayaan ini. Opsi ini juga meningkatkan ukuran data untuk setiap baris log yang dikumpulkan.

Saya tidak dapat meningkatkan kluster setelah onboarding

Berikut skenarionya: Anda mengaktifkan wawasan Kontainer untuk kluster Azure Kubernetes Service. Kemudian Anda menghapus ruang kerja Analitik Log tempat kluster mengirim datanya. Sekarang ketika Anda mencoba meningkatkan kluster, kluster gagal. Untuk mengatasi masalah ini, Anda harus menonaktifkan pemantauan lalu mengaktifkannya kembali dengan merujuk ruang kerja valid yang berbeda di langganan Anda. Saat Anda mencoba untuk melakukan peningkatan kluster lagi, ini harus diproses dan diselesaikan dengan sukses.

Tidak mengumpulkan log pada kluster Azure Stack HCI

Jika Anda mendaftarkan kluster dan/atau mengonfigurasi HCI Insights sebelum November 2023, fitur yang menggunakan agen Azure Monitor di HCI, seperti Arc for Servers Insights, VM Insights, Container Insights, Defender untuk Cloud, atau Microsoft Sentinel mungkin tidak mengumpulkan log dan data peristiwa dengan benar. Lihat Memperbaiki agen AMA untuk HCI untuk langkah-langkah mengonfigurasi ulang agen dan Wawasan HCI.

Langkah berikutnya

Saat pemantauan diaktifkan untuk menangkap metrik kesehatan untuk node dan pod kluster AKS, metrik kesehatan ini tersedia di portal Azure. Untuk mempelajari cara menggunakan Container insight, lihat Melihat kesehatan Azure Kubernetes Service.