Memecahkan masalah kegagalan penyebaran umum di Azure Container Apps

Artikel ini membantu Anda mengidentifikasi dan mengatasi skenario kegagalan penyebaran yang paling sering memerlukan eskalasi dukungan dalam Azure Container Apps. Setiap skenario mencakup gejala, langkah-langkah diagnostik melalui portal dan CLI, serta solusi.

Temukan gejala Anda di tabel referensi cepat dan ikuti tautan ke skenario yang cocok.

Referensi cepat gejala

Gejala Scenario
Penerapan gagal dengan kesalahan penyediaan, tidak ada revisi yang dibuat Kegagalan penarikan gambar
Revisi dibuat tetapi statusnya adalah Failed atau Degraded Crash kontainer dan kegagalan startup
Variabel rahasia atau lingkungan kosong atau hilang saat runtime Masalah akses rahasia
referensi Key Vault gagal selama penyebaran atau saat runtime Kegagalan referensi Key Vault
Panggilan identitas terkelola mengembalikan 401 atau 403 Kesalahan konfigurasi identitas terkelola
Kontainer init macet atau gagal, aplikasi tidak pernah dimulai Masalah waktu inisialisasi
Revisi telah disediakan tetapi ditandai Degraded Kegagalan pemeriksaan kesehatan
Aplikasi berfungsi dengan baik, tetapi permintaan menghasilkan kesalahan atau tidak ada respons Masalah ingres dan perutean lalu lintas
Autentikasi registri gagal (401 atau TIDAK SAH) Autentikasi registri kontainer

Tempat untuk melihat: permukaan diagnostik

Gunakan permukaan diagnostik berikut untuk menyelidiki kegagalan penyebaran.

Permukaan Apa yang ditampilkannya Cara mengakses
Mendiagnosis dan memecahkan masalah Detektor otomatis untuk masalah umum, kategori pemecahan masalah, dan analisis terpandu. Di portal Azure, buka aplikasi kontainer Anda dan pilih Diagnosis dan selesaikan masalah.
Log sistem Peristiwa tingkat platform: status penarikan gambar, hasil pemeriksaan, kesalahan identitas, hasil sinkronisasi rahasia. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50atau tabel Log AnalyticsContainerAppSystemLogs_CL.
Log konsol Stdout/stderr aplikasi: jejak tumpukan, pesan startup, kesalahan runtime. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 atau bilah aliran log portal.
Log HTTP Log permintaan lapisan ingress: kode status, latensi, jalur, percobaan ulang, detail respons. Aktifkan keikutsertaan melalui pengaturan diagnostik Azure Monitor di lingkungan. Log Analytics ContainerAppHTTPLogs tabel.
Properti Detail Revisi provisioningState, provisioningError, healthState, runningState, runningStateDetails. az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json atau panel Revisi di portal.
Kesalahan waktu penyebaran Level aplikasi provisioningState dan provisioningError saat tidak ada revisi yang dibuat. az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json

Kegagalan penarikan gambar

Kegagalan penarikan gambar adalah salah satu penyebab kesalahan penyebaran yang paling umum. Mereka biasanya terjadi sebelum Azure Container Apps dapat menciptakan revisi yang dapat digunakan.

Gejala

  • Tidak ada revisi yang dibuat.
  • provisioningState adalah Failed.
  • Pesan kesalahan menyebutkan ImagePullBackOff, , UNAUTHORIZEDatau manifest unknown.

Tempat untuk melihat: diagnostik penarikan gambar

Di portal Azure, bukaRevisi Aplikasi >Kontainer(daftar kosong atau menunjukkan entri yang gagal) >Mendiagnosis dan menyelesaikan masalah, dan cari "gambar".

# Check app-level provisioning state and error
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "{provisioning:properties.provisioningState, error:properties.provisioningError, latestRevision:properties.latestRevisionName}" -o json

# List revisions (expect empty or failed)
az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "[].{name:name, health:properties.healthState, provisioning:properties.provisioningState}" -o table

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Tag gambar tidak ada manifest unknown, tag not found Verifikasi bahwa tag yang tepat ada di registri Anda: az acr repository show-tags --name <AZURE_CONTAINER_REGISTRY_NAME> --repository <REPOSITORY_NAME>
Registri memerlukan autentikasi UNAUTHORIZED: authentication required Konfigurasikan kredensial registri pada aplikasi kontainer. Gunakan kredensial admin atau identitas terkelola untuk penarikan ACR. Lihat Autentikasi registri kontainer.
Nama host registri salah name unknown, Kegagalan resolusi DNS Verifikasi nilai --image menggunakan nama host yang benar <REGISTRY>.azurecr.io .
Firewall atau NSG memblokir registri Waktu koneksi habis Jika Anda menggunakan VNet kustom, pastikan akses keluar ke registri. AzureContainerRegistry Tambahkan tag layanan atau aturan FQDN.

Crash kontainer dan kegagalan saat memulai

Gunakan bagian ini saat revisi dibuat, tetapi beban kerja gagal dimulai atau tidak dapat terus berjalan.

Gejala

  • Revisi dibuat tetapi healthState adalah Unhealthy.
  • runningState adalah Failed.
  • Log konsol mungkin kosong (kontainer keluar sebelum menulis output).

Tempat melihat: diagnostik kegagalan dan saat memulai

Di portal Azure, buka Aplikasi Kontainer>Revisi, pilih revisi yang gagal, dan buka tab Peristiwa. Periksa apakah ada peristiwa BackOff atau CrashLoopBackOff.

# Inspect revision detail
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "{health:properties.healthState, running:properties.runningState, details:properties.runningStateDetails, error:properties.provisioningError}" -o json

# Pull console logs (if any output was written)
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100

# Pull system logs for platform-level events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Aplikasi mengalami crash saat startup Jejak tumpukan di log konsol Perbaiki kesalahan aplikasi. Jika log kosong, crash terjadi sebelum stdout dihapus. Tambahkan pengelogan awal atau atur runtime Anda untuk menonaktifkan buffering output (misalnya, PYTHONUNBUFFERED=1).
Perintah atau titik masuk tidak valid exec format error, executable file not found Pastikan command dan args pada kontainer sesuai dengan yang diharapkan image. Periksa az containerapp revision show untuk properties.template.containers[].command.
Variabel lingkungan hilang KeyError, undefined, referensi null Verifikasi bahwa semua var env yang diperlukan telah diatur. Lihat Masalah akses rahasia.
Sumber daya tidak mencukup OOMKilled Tingkatkan batas memori dan CPU pada kontainer: az containerapp update -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --cpu 1.0 --memory 2.0Gi.

Masalah akses rahasia

Gunakan bagian ini untuk memecahkan masalah nilai rahasia yang hilang atau kosong yang merusak konfigurasi aplikasi saat runtime.

Gejala

  • Kontainer dimulai tetapi aplikasi gagal karena nilai konfigurasi yang diharapkan kosong atau hilang.
  • Variabel lingkungan yang mereferensikan rahasia tidak memiliki nilai.

Tempat untuk melihat: diagnostik referensi rahasia

Di portal Azure, buka Aplikasi Kontainer>Pengaturan>Rahasia untuk memverifikasi bahwa rahasia tersebut ada. Kemudian bukaRevisi Aplikasi >Kontainer, pilih revisi, dan periksaVariabel lingkungan> kontainer untuk memverifikasi bahwa referensi sudah benar.

# List secrets defined on the app
az containerapp secret list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table

# Show the revision template to verify env var references
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "properties.template.containers[].env" -o json

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Nama rahasia tidak cocok Nilai env var kosong Dalam secretRef variabel lingkungan harus sama persis dengan nama rahasia (peka huruf besar/kecil).
Rahasia tidak ditentukan Kesalahan penyebaran yang merujuk ke rahasia yang tidak diketahui Tentukan rahasia sebelum menyebarkan: az containerapp secret set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --secrets mysecret=myvalue.
Rahasia diperbarui tetapi revisi tidak dimulai ulang Nilai lama tetap ada Sebarkan revisi baru atau mulai ulang yang sudah ada: az containerapp revision restart -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV>. Memperbarui rahasia saja tidak memicu revisi baru.
Rahasia dihapus saat revisi mereferensikannya Kontainer tidak dapat memulai Sebarkan revisi baru yang menghapus referensi ke rahasia yang dihapus, lalu nonaktifkan revisi lama.

Important

Dalam Container Apps, secret cakupannya terbatas pada aplikasi, tetapi referensi variabel lingkungan cakupannya terbatas pada revisi. Mengubah nilai rahasia tidak akan otomatis diterapkan ke revisi yang sedang berjalan. Anda harus membuat revisi baru atau memulai ulang yang sudah ada agar nilai yang diperbarui berlaku.

Key Vault kegagalan referensi

Gunakan bagian ini saat rahasia yang didukung Key Vault gagal diselesaikan selama penyebaran atau saat aplikasi sedang berjalan.

Gejala

  • Penyebaran gagal atau nilai rahasia tidak tersedia.
  • Log sistem merujuk pada kesalahan akses Key Vault.
  • provisioningErrormenyebutkan kegagalan autentikasi atau otorisasi terhadap Key Vault.

Tempat melihat: diagnostik akses Key Vault

Di portal Azure, buka Container App>Pengaturan>Rahasia (cari ikon peringatan pada referensi Key Vault). Kemudian buka Aplikasi >Diagnosis dan selesaikan masalah dan cari "Key Vault".

# List secrets and check for Key Vault reference status
az containerapp secret list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json

# Verify managed identity is assigned
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Identitas terkelola tidak diaktifkan Managed identity not configured Aktifkan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna: az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned.
Peran RBAC hilang Authorization failed, Access denied Berikan peran Pengguna Rahasia Key Vault ke identitas terkelola pada Key Vault: az role assignment create --role "Key Vault Secrets User" --assignee <IDENTITY_PRINCIPAL_ID> --scope <KEYVAULT_RESOURCE_ID>.
Key Vault firewall memblokir akses Batas waktu koneksi, ForbiddenByFirewall Tambahkan IP keluar lingkungan Container Apps ke firewall Key Vault, atau konfigurasikan titik akhir privat. AzureKeyVault Tambahkan juga tag layanan dan login.microsoft.com FQDN jika menggunakan UDR dengan Azure Firewall.
Rahasia dinonaktifkan di Key Vault SecretDisabled Aktifkan rahasia di Key Vault: portal Azure > Key Vault > Rahasia > pilih rahasia > Aktifkan.
URI Key Vault salah bentuk SecretNotFound, InvalidUri Verifikasi format URI: https://<vault>.vault.azure.net/secrets/<secret-name> atau https://<vault>.vault.azure.net/secrets/<secret-name>/<version>.
Penundaan penyebaran peran RBAC Berfungsi setelah ~5 menit Perubahan RBAC dapat memakan waktu hingga 10 menit untuk disebarluaskan. Cache token identitas dapat bertahan hingga 24 jam. Tunggu dan coba lagi, atau sebarkan revisi baru.

Kesalahan konfigurasi identitas terkelola

Gunakan bagian ini saat autentikasi untuk Azure layanan gagal meskipun aplikasi Anda dikonfigurasi untuk menggunakan identitas terkelola.

Gejala

  • Kode aplikasi menerima 401 (Tidak Sah) atau 403 (Terlarang) saat memanggil layanan Azure.
  • Akuisisi token identitas terkelola gagal.

Tempat untuk melihat: diagnostik identitas dan otorisasi

Di portal Azure, buka Container App>Pengaturan>Identitas (verifikasi bahwa identitas yang ditetapkan sistem On atau identitas yang ditetapkan pengguna tercantum). Kemudian, periksa panel IAM / Access control pada sumber daya target untuk penetapan peran.

# Verify identity configuration
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>

# Check role assignments for the identity's principal ID
az role assignment list --assignee <PRINCIPAL_ID> --all -o table

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Tidak ada identitas yang ditetapkan SDK melemparkan ManagedIdentityCredential kesalahan Tetapkan identitas: az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned.
Identitas yang salah digunakan (sistem vs ditetapkan pengguna) 403 pada sumber daya yang dituju Jika menggunakan identitas yang ditetapkan pengguna, tentukan ID klien dalam kode Anda: DefaultAzureCredential(managed_identity_client_id="<CLIENT_ID>").
Penugasan peran tidak ada pada sumber daya target 403 Tetapkan peran yang diperlukan pada sumber daya target (misalnya, Kontributor Data Blob Penyimpanan pada akun penyimpanan).
Kontainer inisialisasi memerlukan identitas, tetapi identitas tersebut tidak tersedia Kontainer init gagal dengan kesalahan autentikasi Di lingkungan khusus konsumsi dan lingkungan profil beban kerja khusus, kontainer init tidak dapat menggunakan identitas terkelola. Pindahkan logika yang bergantung pada identitas ke kontainer utama, atau gunakan lingkungan konsumsi dengan profil beban kerja dan tetapkan lifecycle: Init pada identitas.
Cache token basi setelah perubahan peran 403 bertahan selama beberapa menit setelah perbaikan Cache token identitas dapat bertahan hingga 24 jam. Terapkan revisi baru untuk memaksa penyegaran token.

Tip

Container Apps mengekspos titik akhir REST yang dapat diakses secara internal untuk memperoleh token identitas terkelola. Daripada memanggil titik akhir ini secara langsung, gunakan Azure Identity SDK (DefaultAzureCredential) untuk pengalaman yang konsisten di seluruh lingkungan.

Masalah waktu inisialisasi

Gunakan bagian ini saat kontainer init memblokir startup atau gagal sebelum kontainer utama dapat mulai melayani lalu lintas.

Gejala

  • Aplikasi tidak pernah mencapai status berjalan.
  • Kontainer init tampak macet atau gagal.
  • Log sistem menunjukkan kontainer init berjalan tetapi tidak pernah selesai.

Tempat untuk melihat: diagnostik kontainer init

Di portal Azure, buka Revisi Container App >, pilih revisi, lalu buka tab Peristiwa. Cari peristiwa init container.

# Check revision running state
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "{running:properties.runningState, details:properties.runningStateDetails}" -o json

# Check init container logs
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --container <INIT_CONTAINER_NAME> --tail 100

# System logs for platform events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Init container bergantung pada layanan yang belum tersedia Koneksi ditolak atau waktu tunggu habis dalam log kontainer inisialisasi Tambahkan logika percobaan ulang atau pemeriksaan kesiapan di kontainer init. Jangan berasumsi bahwa layanan dependensi tersedia saat inisialisasi.
Kontainer init tidak pernah keluar Revisi tetap ada di Provisioning Pastikan kontainer init menjalankan perintah terbatas dan keluar dengan kode 0. Kontainer init yang berjalan tanpa batas waktu memblokir kontainer utama agar tidak dimulai.
Kontainer init membutuhkan identitas terkelola 401 atau 403 dari kontainer init Di lingkungan khusus konsumsi dan lingkungan profil beban kerja khusus, identitas terkelola tidak tersedia untuk kontainer init. Gunakan lingkungan konsumsi profil beban kerja, atau pindahkan pekerjaan yang bergantung pada identitas ke kontainer utama.
Penarikan gambar kontainer init gagal Gejala yang sama dengan kegagalan penarikan gambar Terapkan autentikasi registri dan pemeriksaan tag gambar yang sama.
Urutan operasi: rahasia belum disinkronkan Kontainer init membaca rahasia kosong Sinkronisasi rahasia Key Vault terjadi secara asinkron. Jika kontainer init bergantung pada rahasia yang direferensikan Key Vault, nilainya mungkin belum tersedia. Gunakan secret secara langsung untuk dependensi saat inisialisasi atau tambahkan logika percobaan ulang.

Kegagalan sensor kesehatan

Gunakan bagian ini saat revisi berhasil diterapkan tetapi ditandai sebagai tidak sehat atau mengalami penurunan oleh pemeriksaan probe.

Gejala

  • Revisi disediakan tetapi status berjalan adalah Degraded.
  • Log sistem menunjukkan Unhealthy kejadian dengan detail kegagalan probe.
  • Aplikasi ini berfungsi secara lokal tetapi gagal pemeriksaan kesehatan di ACA.

Di mana melihat: diagnostik kesehatan probe

Di portal Azure, buka Container App>Aplikasi>Kontainer>Probe kesehatan (verifikasi konfigurasi probe). Lalu buka Aplikasi Kontainer>Revisi, pilih revisi, dan buka Peristiwa.

# Check the revision's probe configuration
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "properties.template.containers[].probes" -o json

# System logs for probe failure events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Port probe tidak cocok dengan port aplikasi Pemeriksaan mengembalikan koneksi yang ditolak Atur port probe agar sesuai dengan port yang digunakan aplikasi Anda untuk mendengarkan koneksi dan ingress targetPort.
Aplikasi membutuhkan waktu terlalu lama untuk memulai Pemeriksaan gagal sebelum aplikasi siap, revisi berjalan Degraded Tingkatkan initialDelaySeconds pemeriksaan keaktifan dan kesiapan. Umum dengan aplikasi Java.
Jalur probe mengembalikan status non-200 Pemeriksaan gagal dengan kesalahan HTTP Pastikan titik akhir kesehatan mengembalikan 200. Untuk probe HTTP, pastikan path tersedia dan merespons dengan benar.
Pemeriksaan TCP saat aplikasi hanya mengikat setelah init Probe tersambung sebelum aplikasi mendengarkan Gunakan probe startup dengan failureThreshold yang lebih tinggi untuk memberi aplikasi waktu melakukan bind ke portnya.

Nilai pemeriksaan default

Saat Anda mengaktifkan ingress dan tidak mengonfigurasi probe, ACA menerapkan default ini:

Property Startup Keaktivaan Kesiapan
Protocol PKT PKT PKT
Port Port tujuan Ingress Port tujuan Ingress Port tujuan Ingress
Penundaan awal 1s 1s 3s
Periode 1s 1s 5s
Ambang kegagalan 240 48 N/A

Masalah perutean masuk dan lalu lintas

Gunakan bagian ini saat aplikasi berjalan tetapi permintaan gagal karena pengaturan lalu lintas masuk atau revisi salah.

Gejala

  • Aplikasi berjalan dan sehat, tetapi permintaan HTTP mengembalikan kesalahan (404, 502) atau tanpa respons.
  • Aplikasi ini berfungsi melalui az containerapp exec tetapi tidak melalui URL publik.

Di mana melihat: ingress dan diagnostik trafik

Di portal Azure, buka Aplikasi Kontainer>Pengaturan>Ingress. Kemudian buka Container App>Aplikasi>Revisi (periksa pembagian lalu lintas).

# Check ingress configuration and traffic split
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "{ingress:properties.configuration.ingress, latestReady:properties.latestReadyRevisionName}" -o json

# Verify the FQDN
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --query "properties.configuration.ingress.fqdn" -o tsv

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Ingress tidak diaktifkan Tidak ada FQDN yang ditetapkan, tidak dapat menjangkau aplikasi Aktifkan ingress: az containerapp ingress enable -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type external --target-port 8080 --transport auto.
Ketidakcocokan port target Kesalahan 502: Bad Gateway Atur targetPort agar sesuai dengan port yang digunakan aplikasi Anda untuk mendengarkan.
Bobot lalu lintas adalah 0% pada revisi terbaru Revisi lama melayani lalu lintas Perbarui pemisahan lalu lintas: az containerapp ingress traffic set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision-weight latest=100.
Pembatasan IP memblokir klien 403 Periksa pembatasan keamanan IP di bawah pengaturan Ingress.
Transportasi yang salah (HTTP vs TCP) Kesalahan koneksi Pastikan jenis ingress sesuai dengan protokol aplikasi Anda.

Autentikasi registri kontainer

Gunakan bagian ini saat penarikan gambar gagal karena aplikasi tidak dapat mengautentikasi ke registri kontainer Anda.

Gejala

  • Penerapan gagal dengan UNAUTHORIZED: authentication required.
  • Kesalahan ini sering menutupi masalah lain (seperti tag gambar yang buruk) karena registri menolak permintaan sebelum dapat memeriksa tag.

Tempat untuk melihat: diagnostik autentikasi registri

Di portal Azure, bukaKontainer> Aplikasi >Kontainer(periksa pengaturan registri). Kemudian buka Container App>Diagnosis dan pemecahan masalah dan cari "registri".

# Check configured registries
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "properties.configuration.registries" -o json

# Verify ACR credentials work
az acr login --name <AZURE_CONTAINER_REGISTRY_NAME>
docker pull <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io/<REPOSITORY_NAME>:<TAG>

Penyebab dan resolusi umum

Cause Sinyal kesalahan Resolution
Tidak ada kredensial registri yang dikonfigurasi UNAUTHORIZED Tambahkan kredensial registri: az containerapp registry set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --server <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io --identity system.
Kredensial admin dinonaktifkan pada ACR UNAUTHORIZED dengan pengguna admin Aktifkan pengguna admin: az acr update -n <AZURE_CONTAINER_REGISTRY_NAME> --admin-enabled true. Pilihan: Gunakan identitas terkelola untuk penarikan ACR sebagai gantinya.
Identitas terkelola tidak memiliki peran AcrPull UNAUTHORIZED Tetapkan peran AcrPull : az role assignment create --role AcrPull --assignee <PRINCIPAL_ID> --scope <ACR_RESOURCE_ID>.
Nama host server salah name unknown Verifikasi bahwa server registri cocok dengan ACR Anda: <your-acr>.azurecr.io.

Ringkasan alur kerja diagnostik

Gunakan urutan ini saat Anda tidak yakin apa yang gagal:

  1. Jalankan az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json. Periksa provisioningState, provisioningError, dan latestRevisionName.

  2. Jalankan az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table. Jika daftar kosong, kegagalannya adalah masalah penarikan gambar atau validasi templat (Kegagalan penarikan gambar dan autentikasi registri kontainer). Jika ada revisi, lanjutkan ke langkah 3.

  3. Jalankan az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json. Periksa healthState, runningState, runningStateDetails, dan provisioningError.

  4. Jalankan az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 untuk melihat peristiwa tingkat platform seperti kegagalan pemeriksaan, kesalahan identitas, dan masalah sinkronisasi rahasia.

  5. Jalankan az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 untuk melihat stdout/stderr aplikasi termasuk jejak tumpukan, kesalahan konfigurasi, dan kegagalan koneksi.

  6. Jalankan az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> untuk memverifikasi konfigurasi identitas jika kesalahan terkait autentikasi muncul di langkah-langkah sebelumnya.

Menggunakan Diagnosis dan selesaikan masalah di portal

Portal Container Apps mencakup bilah Diagnosis dan selesaikan masalah dengan diagnostik otomatis:

  1. Buka aplikasi kontainer Anda di portal Azure.
  2. Pilih Diagnosis dan selesaikan masalah dari navigasi kiri.
  3. Gunakan kotak pencarian untuk menemukan diagnostik tertentu (misalnya, "penarikan gambar", "pemeriksaan kesehatan", atau "ingress").
  4. Pilih petak kategori pemecahan masalah untuk analisis terpandu.

Bilah ini adalah titik awal yang direkomendasikan untuk diagnostik terpandu. Ini mungkin tidak mencakup setiap skenario dalam artikel ini, tetapi menyediakan pemeriksaan otomatis untuk masalah umum.

Kueri Log Analytics untuk investigasi lebih mendalam

Jika output CLI dan diagnostik portal tidak cukup, lakukan kueri langsung pada log dasarnya di Log Analytics. Dua kueri berikut mencakup titik awal yang paling umum untuk kegagalan tingkat platform dan kesalahan HTTP tingkat ingress.

Menemukan kegagalan tingkat sistem

ContainerAppSystemLogs_CL
| where RevisionName_s == "<REV>"
| where Log_s contains "BackOff" or Log_s contains "Failed" or Log_s contains "Error"
  or Reason_s == "Unhealthy"
| project TimeGenerated, Reason_s, Log_s
| order by TimeGenerated desc
| take 50

Kueri ini menampilkan kesalahan penarikan image, kegagalan probe, kesalahan provisioning, dan peristiwa platform lainnya.

Menemukan kesalahan HTTP (memerlukan log HTTP diaktifkan)

Lapisan ingress menghasilkan log HTTP, dan Anda memilih untuk mengaktifkannya. Aktifkan log ini melalui pengaturan diagnostik Azure Monitor di lingkungan terkelola Container Apps. Setelah Anda mengaktifkannya, tabel ContainerAppHTTPLogs akan muncul di Log Analytics. Mungkin perlu waktu beberapa menit agar tabel muncul.

ContainerAppHTTPLogs
| where TimeGenerated > ago(1h)
| where StatusCode >= 400
| project TimeGenerated, ContainerAppName, RevisionName, Method, Path,
  StatusCode, ResponseCodeDetails, RequestDuration, RequestId
| order by TimeGenerated desc
| take 100

Kueri ini memfilter log HTTP lapisan ingress untuk memperlihatkan hanya permintaan yang gagal (kode status 400 atau lebih tinggi) dari satu jam terakhir. Ini mengembalikan tanda waktu, nama aplikasi dan revisi, metode dan jalur HTTP, kode status kesalahan, ResponseCodeDetails bidang yang menunjukkan apakah kesalahan berasal dari kontainer Anda (via_upstream) atau platform (route_not_found, connection_timeout), durasi permintaan, dan ID permintaan unik yang dapat Anda gunakan untuk berkorelasi dengan log aplikasi.

Untuk kueri lainnya, termasuk analisis permintaan yang lambat, tingkat kesalahan berdasarkan revisi, pelacakan permintaan individual, dan endpoint yang paling sering gagal, lihat Memantau log di Azure Container Apps menggunakan Log Analytics.