Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk segít azonosítani és elhárítani azokat az üzembehelyezési hibákat, amelyekhez leggyakrabban támogatási eszkalációra van szükség Azure Container Apps. Minden forgatókönyv tartalmazza a tüneteket, a portál és a parancssori felület diagnosztikai lépéseit és a megoldásokat.
Keresse meg a tünetet a gyorshivatkozási táblázatban, és kövesse az egyező forgatókönyvre mutató hivatkozást.
Tünetek gyors áttekintése
| Hibajelenség | Scenario |
|---|---|
| Az üzembe helyezés kiépítési hibával meghiúsul, nincs létrehozva korrektúra | Kép lekérési hibái |
A verzió létrejött, de az állapot Failed vagy Degraded |
Tároló-összeomlási és -indítási hibák |
| A titkos kód vagy a környezeti változó futásidőben üres vagy hiányzik | Titkos kulcsok elérésének problémái |
| A Key Vault-hivatkozás sikertelen az üzembe helyezés során vagy futásidőben | Key Vault-hivatkozási hibák |
| A felügyelt identitáshívások a 401-et vagy a 403-at adják vissza | A felügyelt identitás helytelen konfigurációja |
| Az Init-tároló lefagy vagy meghibásodik, az alkalmazás soha nem indul el | Inicializálás időzítési problémái |
A revízió ki van osztva, de meg van jelölve Degraded |
Az állapotellenőrzések hibái |
| Az alkalmazás rendben van, de a kérések hibát adnak vissza, vagy nem érkezik válasz | Bejövő és forgalomirányítási problémák |
| A beállításjegyzék-hitelesítés sikertelen (401 vagy NEM ENGEDÉLYEZETT) | Tárolóregisztrációs adatbázis hitelesítése |
Hol érdemes keresni: diagnosztikai felületek
Az üzembehelyezési hibák kivizsgálásához használja az alábbi diagnosztikai felületeket.
| Felület | Mit mutat ez | Hozzáférés |
|---|---|---|
| Problémák diagnosztizálása és megoldása | Automatizált detektorok a gyakori problémákhoz, a hibaelhárítási kategóriákhoz és az irányított elemzéshez. | A Azure portálon nyissa meg a tárolóalkalmazást, és válassza a Problémák diagnosztizálása és megoldása lehetőséget. |
| Rendszernaplók | Platformszintű események: kép lekérési állapota, mintavételi eredmények, identitáshibák, titkos szinkronizálási eredmények. |
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 vagy a Log Analytics ContainerAppSystemLogs_CL táblát. |
| Konzolnaplók | Az alkalmazás stdout/stderr kimenete: veremnyomkövetések, indítási üzenetek, futásidejű hibák. |
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 vagy a portál Log stream paneljén. |
| HTTP-naplók | Bejövő rétegbeli kérelemnaplók: állapotkódok, késés, útvonalak, újrapróbálkozások, válasz részletei. Bejelentkezés Azure Monitor környezeti diagnosztikai beállításokon keresztül. | Log Analytics ContainerAppHTTPLogs táblázat. |
| Revízió részletes tulajdonságai |
provisioningState, provisioningError, healthState, runningStaterunningStateDetails. |
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json vagy a portál Verziók panelje. |
| Üzembe helyezési idő hibái | Alkalmazásszintű provisioningState , és provisioningError ha nem jön létre korrektúra. |
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json |
Kép lekérési hibái
A rendszerkép-lekéréses hibák az üzembe helyezési hibák egyik leggyakoribb okai. Ezek általában azelőtt fordulnak elő, hogy Azure Container Apps használható változatot hozhatnának létre.
Symptoms
- Nincs korrektúra létrehozva.
-
provisioningStateazFailed. - A hibaüzenet megemlíti a(z)
ImagePullBackOff,UNAUTHORIZEDvagymanifest unknownelemet.
Hol érdemes keresni: kép lekéréses diagnosztikái
Az Azure Portalon lépjen a Container App>Revisions oldalra (a lista üres, vagy sikertelen elemet jelenít meg) >Diagnose and solve problems, majd keressen rá az "image" kifejezésre.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| A képcímke nem létezik |
manifest unknown, tag not found |
Ellenőrizze, hogy a pontos címke létezik-e a beállításjegyzékben: az acr repository show-tags --name <AZURE_CONTAINER_REGISTRY_NAME> --repository <REPOSITORY_NAME> |
| A beállításjegyzék hitelesítést igényel | UNAUTHORIZED: authentication required |
Konfigurálja a regisztrációs adatbázis hitelesítő adatait a konténeralkalmazásban. Használjon rendszergazdai hitelesítő adatokat vagy felügyelt identitást az ACR lekéréséhez. Lásd a tárolóregisztrációs adatbázis hitelesítését. |
| Helytelen beállításjegyzék-állomásnév |
name unknown, DNS-feloldási hiba |
Ellenőrizze, hogy az --image érték a megfelelő <REGISTRY>.azurecr.io gazdagépnevet használja-e. |
| A tűzfal vagy az NSG blokkolja a tárolóregisztert | Kapcsolati időkorlát | Ha egyéni virtuális hálózatot használ, győződjön meg arról, hogy kimenő hozzáférés van a beállításjegyzékhez. Adja hozzá a AzureContainerRegistry szolgáltatáscímkét vagy az FQDN-szabályokat. |
Konténer-összeomlási és indítási hibák
Ezt a szakaszt akkor használja, ha egy változat létrejön, de a számítási feladat nem indul el vagy nem fut.
Symptoms
- A korrektúra létrejön, de
healthStateaz .Unhealthy -
runningStateazFailed. - Előfordulhat, hogy a konzolnaplók üresek (a tároló kilép a kimenet írása előtt).
Hol érdemes keresni: összeomlási és indítási diagnosztika
Az Azure portálon lépjen a Container App>Verziók lapra, válassza ki a sikertelen verziót, és nyissa meg az Események lapot. Ellenőrizze a BackOff vagy CrashLoopBackOff eseményeket.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| Az alkalmazás összeomlik indításkor | Veremnapló a konzolnaplókban | Javítsa ki az alkalmazáshibát. Ha a naplók üresek, az összeomlás az stdout kiürítése előtt történik. Adjon hozzá korai naplózást, vagy állítsa be a futtatókörnyezetet a kimeneti pufferelés letiltására (például PYTHONUNBUFFERED=1). |
| Érvénytelen parancs vagy belépési pont |
exec format error, executable file not found |
Ellenőrizze, hogy a tároló command és args megfelel-e annak, amit a rendszerkép elvár. Ellenőrizze a(z) properties.template.containers[].command elemet itt: az containerapp revision show. |
| Hiányzó környezeti változó |
KeyError, undefined, null hivatkozás |
Ellenőrizze, hogy az összes szükséges env var be van-e állítva. Lásd a titkos kód elérésének problémáit. |
| Nincs elegendő erőforrás | OOMKilled |
Memória- és PROCESSZORkorlátok növelése a tárolón: az containerapp update -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --cpu 1.0 --memory 2.0Gi. |
Titkos kulcsok elérésének problémái
Ebben a szakaszban elháríthatja azokat a hiányzó vagy üres titkos kódértékeket, amelyek megszakítják az alkalmazáskonfigurációt futásidőben.
Symptoms
- A tároló elindul, de az alkalmazás meghiúsul, mert a várt konfigurációs érték üres vagy hiányzik.
- A titkos kulcsokra hivatkozó környezeti változóknak nincs értékük.
Hol érdemes keresni: titkos referenciák diagnosztikái
A Azure portálon lépjen a Tárolóalkalmazás>beállításai>titkos kulcsok elemre a titkos kód meglétének ellenőrzéséhez. Ezután lépjen a Container AppRevisions (>) lapra, válassza ki a változatot, és ellenőrizze a Tároló részletei>környezeti változókat, hogy a hivatkozás helyes-e.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| Titkos kódnév eltérése | Az env var értéke üres | A secretRef környezeti változónak pontosan meg kell egyeznie a titkos névvel (kis- és nagybetűk megkülönböztetése). |
| A titkos kód nincs definiálva | Ismeretlen titkos kódra hivatkozó üzembehelyezési hiba | Adja meg a titkos kulcsot a telepítés előtt: az containerapp secret set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --secrets mysecret=myvalue. |
| Titkos kód frissítve, de a változat nem újraindult | A régi érték megmarad | Helyezzen üzembe egy új változatot, vagy indítsa újra a meglévőt: az containerapp revision restart -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV>. A titkos kódok frissítése önmagában nem indít el új változatot. |
| A titok törölve lett, miközben egy revízió még hivatkozik rá | A tároló nem indul el | Helyezzen üzembe egy új változatot, amely eltávolítja a törölt titkos kódra mutató hivatkozást, majd inaktiválja a régi változatokat. |
Important
A Container Appsben a titkos kódok hatóköre az alkalmazásra terjed ki, a környezeti változók hivatkozásai azonban a változatra terjednek ki. A titkos kulcs értékének módosítása nem terjed át automatikusan a futó revíziókra. A frissített érték érvénybe lépéséhez létre kell hoznia egy új változatot, vagy újra kell indítania a meglévőt.
Key Vault referenciahibák
Ezt a szakaszt akkor használja, ha Key Vault által támogatott titkos kulcsok nem oldhatók fel az üzembe helyezés során vagy az alkalmazás futtatása közben.
Symptoms
- Az üzembe helyezés meghiúsul, vagy a titkos kód értéke nem érhető el.
- A rendszernaplók Key Vault hozzáférési hibákra hivatkoznak.
-
provisioningErrora Key Vault hitelesítési vagy engedélyezési hibáját említi.
Hol érdemes keresni: Key Vault hozzáférés-diagnosztika
Az Azure Portalon nyissa meg a Tárolóalkalmazás>Beállítások>Titkos kódok elemet (keresse a Key Vault-hivatkozásnál látható figyelmeztető ikont). Ezután lépjen a Container App>Diagnosztizálás és problémamegoldás lapra, és keressen rá a „Key Vault” kifejezésre.
# 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>
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| A felügyelt identitás nincs engedélyezve | Managed identity not configured |
A rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitás engedélyezése: az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned. |
| Hiányzó RBAC-szerepkör |
Authorization failed, Access denied |
Adja meg a Key Vault titkos kulcsfelhasználói szerepkört a Key Vault felügyelt identitásának: az role assignment create --role "Key Vault Secrets User" --assignee <IDENTITY_PRINCIPAL_ID> --scope <KEYVAULT_RESOURCE_ID>. |
| Key Vault tűzfal blokkolja a hozzáférést | Kapcsolati időtúllépés, ForbiddenByFirewall |
Adja hozzá a Container Apps-környezet kimenő IP-címeit a Key Vault tűzfalhoz, vagy konfiguráljon egy privát végpontot. Adja hozzá a AzureKeyVault szolgáltatáscímkét és a login.microsoft.com FQDN-t is, ha az Azure Firewalllal UDR-t használ. |
| A titkos kód le van tiltva a Key Vault | SecretDisabled |
Engedélyezze a titkos kulcsot a Key Vaultban: Azure Portal > Key Vault > Titkos kulcsok > válassza ki a titkos kulcsot > Engedélyezés. |
| Hibásan formázott Key Vault URI |
SecretNotFound, InvalidUri |
Ellenőrizze az URI formátumát: https://<vault>.vault.azure.net/secrets/<secret-name> vagy https://<vault>.vault.azure.net/secrets/<secret-name>/<version>. |
| Az RBAC-szerepkör terjedési késleltetése | ~5 perc után működik | Az RBAC-módosítások propagálása akár 10 percet is igénybe vehet. Az identitásjogkivonat gyorsítótára akár 24 óráig is megmaradhat. Várjon és próbálkozzon újra, vagy telepítsen egy új változatot. |
Felügyelt identitás helytelen konfigurálása
Ezt a szakaszt akkor használja, ha a szolgáltatások Azure hitelesítése akkor is meghiúsul, ha az alkalmazás felügyelt identitás használatára van konfigurálva.
Symptoms
- Az alkalmazáskód a 401-et (jogosulatlan) vagy a 403-at (Tiltott) kapja Azure-szolgáltatások hívásakor.
- A felügyelt identitás tokenjének lekérése sikertelen.
Hol érdemes keresni: identitás- és engedélyezési diagnosztikák
Az Azure Portalon lépjen a Container App>Beállítások>Identitás menüpontra (ellenőrizze, hogy a rendszer által hozzárendelt identitás On van-e, vagy hogy a felhasználó által hozzárendelt identitások szerepelnek-e a listában). Ezután ellenőrizze a célerőforrás IAM/Hozzáférés-vezérlés paneljén a szerepkör-hozzárendeléseket.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| Nincs hozzárendelt identitás | Az SDK hibát jelez ManagedIdentityCredential |
Identitás hozzárendelése: az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned. |
| Helytelen identitás használata (rendszer vagy felhasználó által hozzárendelt) | 403 a célként megadott erőforráson | Ha felhasználó által hozzárendelt identitást használ, adja meg az ügyfélazonosítót a kódban: DefaultAzureCredential(managed_identity_client_id="<CLIENT_ID>"). |
| Hiányzó szerepkör-hozzárendelés a célerőforráson | 403 hibakód | Rendelje hozzá a szükséges szerepkört a célerőforráson (például a Storage Blob Data Contributor szerepkört egy tárfiókon). |
| Az Init-tárolónak identitásra van szüksége, de nem érhető el | Az Init-tároló hitelesítési hibával meghiúsul | A csak használatalapú és dedikált számítási feladatprofil-környezetekben az Init-tárolók nem használhatják a felügyelt identitást. Helyezze át az identitásfüggő logikát a fő tárolóba, vagy használjon számítási feladatprofil-használati környezetet, és állítsa be lifecycle: Init az identitást. |
| A tokengyorsítótár elavult a szerepkör módosítása után | A 403 a javítás után percekig megmarad | Az identitásjogkivonat gyorsítótára akár 24 óráig is eltarthat. Helyezzen üzembe egy új revíziót a token frissítésének kikényszerítéséhez. |
Jótanács
A Container Apps egy belsőleg elérhető REST-végpontot tesz elérhetővé a felügyelt identitásjogkivonatok beszerzéséhez. A végpont közvetlen meghívása helyett használja a Azure Identity SDK-t (DefaultAzureCredential) a környezetek konzisztens élményéhez.
Inicializálás időzítési problémái
Ezt a szakaszt akkor használja, ha az init-tárolók blokkolják az indítást, vagy sikertelenek, mielőtt a fő tároló megkezdené a forgalom kiszolgálását.
Symptoms
- Az alkalmazás soha nem éri el a futó állapotot.
- Az Init-tárolók elakadtak vagy sikertelennek tűnnek.
- A rendszernaplók azt mutatják, hogy az init-tároló fut, de soha nem fejez be.
Hol keresse: az init tároló diagnosztikája
A Azure portálon lépjen a Container App Revisions (Tárolóalkalmazás-változatok>) lapra, válassza ki a változatot, és nyissa meg az Események lapot. Keresse meg az init tárolóeseményeket.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| Az Init-tároló egy még nem elérhető szolgáltatástól függ | A kapcsolat megtagadva vagy időtúllépés az init tárolónaplókban | Adjon hozzá újrapróbálkozési logikát vagy készenlét-ellenőrzést az init-tárolóban. Ne feltételezze, hogy a függő szolgáltatások inicializáláskor érhetők el. |
| Az Init-tároló soha nem lép ki | A korrektúra a következő helyen marad: Provisioning |
Győződjön meg arról, hogy az init-tároló véges parancsot futtat, és a 0-s kóddal lép ki. A határozatlan ideig futó Init-tárolók megakadályozzák a fő tároló elindítását. |
| Az Init-tárolónak felügyelt identitásra van szüksége | 401 vagy 403 az initkonténerből | A csak használatalapú és dedikált számítási feladatprofil-környezetekben a felügyelt identitás nem érhető el az init-tárolók számára. Használjon számítási feladatprofil-használati környezetet, vagy helyezze át az identitásfüggő munkát a fő tárolóba. |
| Az Init-tároló lemezképének lekérése meghiúsul | Ugyanazok a tünetek, mint a rendszerkép-letöltési hibák esetén | Alkalmazza ugyanazokat a registry-hitelesítési és lemezképcímke-ellenőrzéseket. |
| A műveletek sorrendje: a titkos kód még nincs szinkronizálva | Az Init-tároló üres titkos kódot olvas be | Key Vault titkos kulcs szinkronizálása aszinkron módon történik. Ha az init-tároló egy Key Vault hivatkozott titkos kódtól függ, lehetséges, hogy az érték még nem érhető el. Használjon közvetlen titkos kódokat init-time függőségekhez, vagy adjon hozzá újrapróbálkozásos logikát. |
Egészségi állapotellenőrzési hibák
Ezt a részt akkor használja, ha a módosítások sikeresen lettek üzembe helyezve, de az ellenőrző próbák nem kifogástalan vagy leromlott állapotúnak jelölik őket.
Symptoms
- A revízió üzembe van helyezve, de a futási állapota
Degraded. - A rendszernaplók az eseményeket a mintavételi hibák részleteivel jelenítik meg
Unhealthy. - Az alkalmazás helyileg működik, de sikertelen állapotellenőrzéseket hajt végre az ACA-ban.
Hol érdemes keresni: állapotdiagnosztika mintavétele
Az Azure Portalon nyissa meg a Container App>Application>Containers>Állapotmintavételek elemet (ellenőrizze az állapotmintavételek konfigurációját). Ezután lépjen a Container AppRevisions (Tárolóalkalmazás >változatai) lapra, válassza ki a változatot, és nyissa meg az Események elemet.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| A próbaport nem egyezik az alkalmazásporttal | A mintavétel elutasított kapcsolatot ad vissza | Állítsa be a mintavételi portot úgy, hogy megfeleljen az alkalmazás figyelési portjának és a bejövő forgalomnak targetPort. |
| Az alkalmazás indítása túl sokáig tart | A mintavétel sikertelen, mielőtt az alkalmazás készen áll, a változat elindul Degraded |
Növelje az élőségi és készenléti próbák initialDelaySeconds értékét. Gyakori az Java-alkalmazások esetében. |
| A mintavételi útvonal nem 200 értéket ad vissza | A mintavétel HTTP-hibával meghiúsul | Győződjön meg arról, hogy az állapotvégpont 200 értéket ad vissza. HTTP-mintavételek esetén ellenőrizze, hogy létezik-e az elérési út, és megfelelően válaszol-e. |
| TCP-mintavétel, ha az alkalmazás csak init után köt | A próbacsatlakozás azelőtt jön létre, hogy az alkalmazás figyelni kezdene. | Használjon nagyobb failureThreshold értékű indítási szondát, hogy az alkalmazásnak legyen ideje a port megnyitására. |
Alapértelmezett mintavételi értékek
Ha engedélyezi a bejövő forgalmat, és nem konfigurálja a mintavételeket, az ACA az alábbi alapértelmezett értékeket alkalmazza:
| Property | Startup | Élőség | Készenlét |
|---|---|---|---|
| Protocol | TCP | TCP | TCP |
| Port | Bejövő forgalom célportja | Bejövő forgalom célportja | Bejövő forgalom célportja |
| Kezdeti késés | 1s | 1s | 3s |
| Időszak | 1s | 1s | 5 s |
| Hibaküszöb | 240 | 48 | N/A |
Bejövő és forgalomirányítási problémák
Akkor használja ezt a részt, ha az alkalmazás fut, de a kérelmek meghiúsulnak, mert az ingress vagy a revízió forgalmi beállításai helytelenek.
Symptoms
- Az alkalmazás fut és kifogástalan állapotú, de a HTTP-kérések hibát (404, 502) adnak vissza, vagy nincs válasz.
- Az alkalmazás a
az containerapp exechasználatával működik, de a nyilvános URL-címen keresztül nem.
Hol keresse: bejövő forgalom és forgalmi diagnosztika
Az Azure Portalon lépjen a Container App>Beállítások>Bejövő forgalom lehetőségre. Ezután nyissa meg a Container App>Application>Revisions (forgalom felosztásának ellenőrzése) elemet.
# 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
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| Az Ingress nincs engedélyezve | Nincs FQDN hozzárendelve, az alkalmazás nem érhető el | Bejövő forgalom engedélyezése: az containerapp ingress enable -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type external --target-port 8080 --transport auto. |
| A célport eltérése | 502 Hibás átjáró | Állítsa be targetPort , hogy megfeleljen az alkalmazás által figyelt portnak. |
| A forgalom súlya 0% a legújabb változaton | A régi változat a forgalmat szolgálja ki | Forgalom felosztásának frissítése: az containerapp ingress traffic set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision-weight latest=100. |
| IP-korlátozás blokkolja az ügyfelet | 403 hibakód | Ellenőrizze az IP-biztonsági korlátozásokat a bejövő forgalom beállításai között. |
| Helytelen átvitel (HTTP és TCP) | Csatlakozási hibák | Ellenőrizze, hogy a bejövő forgalom típusa megegyezik-e az alkalmazás protokolljával. |
Tárolóregisztrációs adatbázis hitelesítése
Ezt a szakaszt akkor használja, ha a rendszerkép-lekérések sikertelenek, mert az alkalmazás nem tud hitelesítést végezni a tárolóregisztrációs adatbázisban.
Symptoms
- Az üzembe helyezés meghiúsul ezzel:
UNAUTHORIZED: authentication required. - Ez a hiba gyakran elfed más problémákat (például egy rossz képcímkét), mert a beállításjegyzék elutasítja a kérelmet, mielőtt ellenőrizni tudja a címkét.
Hol keresse: regisztrációs adatbázis hitelesítési diagnosztika
A Azure portálon nyissa meg a Tárolóalkalmazás>beállításai>tárolót (ellenőrizze a beállításjegyzék beállításait). Ezután lépjen a Container App>Diagnosztika és problémamegoldás lapra, és keressen rá a „registry” kifejezésre.
# 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>
Gyakori okok és megoldások
| A probléma oka | Hibajelzés | Megoldás |
|---|---|---|
| Nincsenek konfigurálva regisztrációs tárbeli hitelesítő adatok | UNAUTHORIZED |
Beállításjegyzékbeli hitelesítő adatok hozzáadása: az containerapp registry set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --server <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io --identity system. |
| Rendszergazdai hitelesítő adatok le vannak tiltva az ACR-ben |
UNAUTHORIZED rendszergazdai felhasználóval |
Rendszergazdai felhasználó engedélyezése: az acr update -n <AZURE_CONTAINER_REGISTRY_NAME> --admin-enabled true.
Javasolt: Inkább felügyelt identitást használjon az ACR-ből történő lekéréshez. |
| A felügyelt identitás nem rendelkezik AcrPull-szerepkörrel | UNAUTHORIZED |
Rendelje hozzá az AcrPull szerepkört: az role assignment create --role AcrPull --assignee <PRINCIPAL_ID> --scope <ACR_RESOURCE_ID>. |
| Helytelen kiszolgálónév | name unknown |
Ellenőrizze, hogy a regisztrációs kiszolgáló megegyezik-e az ACR-ével: <your-acr>.azurecr.io. |
Diagnosztikai munkafolyamat összefoglalása
Ezt a sorozatot akkor használja, ha nem biztos abban, hogy mi nem sikerült:
Futtassa
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json. EllenőrizzeprovisioningState,provisioningErroréslatestRevisionName.Futtassa
az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table. Ha a lista üres, akkor a sikertelenséget rendszerkép-lekérési vagy sablonérvényesítési probléma okozza (rendszerkép-lekérési hibák és tárolóregisztráció hitelesítése). Ha létezik egy módosítás, lépjen tovább a 3. lépésre.Futtassa
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json. Jelölje be a(z)healthState,runningState,runningStateDetailsésprovisioningErrorelemet.Futtassa a(z)
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50parancsot a platformszintű események, például a szondák meghibásodásai, az identitással kapcsolatos hibák és a titkok szinkronizálásával kapcsolatos problémák megtekintéséhez.Futtassa a(z)
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100elemet az alkalmazás stdout/stderr-kimenetének megtekintéséhez, beleértve a veremkivonatokat, a konfigurációs hibákat és a kapcsolódási hibákat.Futtassa
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>az identitáskonfiguráció ellenőrzéséhez, ha a hitelesítéssel kapcsolatos hibák megjelentek az előző lépésekben.
Problémák diagnosztizálása és megoldása a portálon
A Container Apps portál tartalmaz egy Diagnosztizálás és problémamegoldás panelt az automatizált diagnosztikával:
- Keresse meg a tárolóalkalmazást az Azure portálon.
- Válassza a Problémák diagnosztizálása és megoldása lehetőséget a bal oldali navigációs sávon.
- A keresőmező segítségével megkereshet bizonyos diagnosztikai elemeket (például „rendszerkép letöltése”, „állapotvizsgálat” vagy „ingress”).
- Válasszon ki egy hibaelhárítási kategória csempét az irányított elemzéshez.
Ez a panel az ajánlott kiindulópont az irányított diagnosztikához. Előfordulhat, hogy a cikk nem minden forgatókönyvét ismerteti, de automatikus ellenőrzéseket biztosít a gyakori problémákhoz.
Log Analytics lekérdezések a mélyebb vizsgálathoz
Ha a CLI kimenete és a portál diagnosztikai adatai nem elegendők, az alapul szolgáló naplókat közvetlenül a Log Analyticsben kérdezheti le. Az alábbi két lekérdezés a platformszintű hibák és a bejövő HTTP-hibák leggyakoribb kiindulópontjait fedi le.
Rendszerszintű hibák keresése
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
Ez a lekérdezés a rendszerkép lekérési hibáit, mintavételi hibáit, kiépítési hibáit és egyéb platformeseményeket jeleníti meg.
HTTP-hibák keresése (a HTTP-naplók engedélyezését igényli)
A bejövő réteg HTTP-naplókat generál, és Ön külön engedélyezi őket. Engedélyezze ezeket a naplókat Azure Monitor diagnosztikai beállításokon keresztül a Container Apps által felügyelt környezetben. Miután engedélyezte ezeket, a ContainerAppHTTPLogs tábla megjelenik a Log Analyticsben. Eltarthat néhány percig, amíg a táblázat megjelenik.
ContainerAppHTTPLogs
| where TimeGenerated > ago(1h)
| where StatusCode >= 400
| project TimeGenerated, ContainerAppName, RevisionName, Method, Path,
StatusCode, ResponseCodeDetails, RequestDuration, RequestId
| order by TimeGenerated desc
| take 100
Ez a lekérdezés szűri a bejövő réteg HTTP-naplóit, hogy csak a meghiúsult kérések jelenjenek meg (állapotkód: 400 vagy újabb) az elmúlt órában. Visszaadja az időbélyeget, az alkalmazás és a változat nevét, a HTTP-metódust és az elérési utat, a hibaállapot-kódot, egy ResponseCodeDetails mezőt, amely jelzi, hogy a hiba a tárolóból (via_upstream) vagy a platformról (route_not_found, ), a kérelem időtartamából származik-e, connection_timeoutvalamint egy egyedi kérésazonosítót, amellyel korrelálhat az alkalmazásnaplókkal.
További lekérdezésekért – beleértve a lassú kérelmek elemzését, a hibaarány revíziónkénti bontását, az egyes kérelmek nyomon követését és a legtöbb hibát okozó végpontokat – lásd: Naplók figyelése az Azure Container Appsben a Log Analytics használatával.