Résoudre les échecs de déploiement courants dans Azure Container Apps

Cet article vous aide à identifier et à résoudre les scénarios d’échec de déploiement qui nécessitent le plus fréquemment une escalade de prise en charge dans Azure Container Apps. Chaque scénario comprend des symptômes, des étapes de diagnostic du portail et de l’interface CLI et des résolutions.

Recherchez votre symptôme dans la table de référence rapide et suivez le lien vers le scénario correspondant.

Informations de référence rapides sur les symptômes

Symptôme Scénario
Le déploiement échoue avec l’erreur d’approvisionnement, aucune révision n’a été créée Échecs d’extraction d’images
Révision créée, mais le statut est Failed ou Degraded Plantages de conteneur et échecs au démarrage
Secret ou variable d’environnement est vide ou manquant au moment de l’exécution Problèmes d’accès aux secrets
La référence à Key Vault échoue pendant le déploiement ou lors de l’exécution Échecs des références Key Vault
Les appels d’identité managée retournent 401 ou 403 Mauvaise configuration de l’identité managée
Le conteneur Init se bloque ou échoue, l’application ne démarre jamais Problèmes de minutage d’initialisation
La révision est provisionnée mais marquée Degraded Échecs de sonde d’intégrité
L’application est saine, mais les demandes retournent des erreurs ou aucune réponse Problèmes d’entrée et de routage du trafic
Échec de l’authentification du Registre (401 ou NON AUTORISÉ) Authentification du registre de conteneurs

Où chercher : surfaces de diagnostic

Utilisez les surfaces de diagnostic suivantes pour examiner les échecs de déploiement.

Surface Ce qu’il montre Procédure accès
Diagnostiquer et résoudre les problèmes Détecteurs automatisés pour les problèmes courants, la résolution des problèmes et l’analyse guidée. Dans le portail Azure, accédez à votre application conteneur, puis sélectionnez Diagnostiquer et résoudre les problèmes.
Journaux système Événements au niveau de la plateforme : état d’extraction d’image, résultats de la sonde, erreurs d’identité, résultats de synchronisation des secrets. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 ou table Log Analytics ContainerAppSystemLogs_CL.
Journaux de la console Application stdout/stderr : traces de pile, messages de démarrage, erreurs d’exécution. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 ou le volet Flux de journaux du portail.
Journaux HTTP Journaux des demandes de couche d’entrée : codes d’état, latence, chemins d’accès, nouvelles tentatives, détails de la réponse. Activez cette option via les paramètres de diagnostic d’Azure Monitor pour l’environnement. Table ContainerAppHTTPLogs Log Analytics.
Propriétés du détail de révision provisioningState, , provisioningError, healthStaterunningState, , runningStateDetails. az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json ou volet Révisions du portail.
Erreurs au moment du déploiement Niveau provisioningState de l’application et provisioningError quand aucune révision n’est créée. az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json

Échecs de téléchargement d’images

Les échecs d’extraction d’images sont l’une des causes les plus courantes des erreurs de déploiement. Ils se produisent généralement avant qu’Azure Container Apps ne puisse créer une révision utilisable.

Symptoms

  • Aucune révision n’a été créée.
  • provisioningState a la valeur Failed.
  • Le message d’erreur mentionne ImagePullBackOff, UNAUTHORIZEDou manifest unknown.

Où rechercher : diagnostics d’extraction d’images

Dans le portail Azure, accédez à Container App>Revisions (la liste est vide ou affiche une entrée ayant échoué) >Diagnostiquer et résoudre les problèmes, puis recherchez « image ».

# 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
La balise d’image n’existe pas manifest unknown, tag not found Vérifiez que la balise exacte existe dans votre registre : az acr repository show-tags --name <AZURE_CONTAINER_REGISTRY_NAME> --repository <REPOSITORY_NAME>
Le Registre nécessite l’authentification UNAUTHORIZED: authentication required Configurez les informations d’identification du Registre sur l’application conteneur. Utilisez les informations d’identification d’administrateur ou l’identité managée pour l’extraction ACR. Consultez l’authentification du registre de conteneurs.
Nom d’hôte de Registre incorrect name unknown, échec de résolution DNS Vérifiez que la --image valeur utilise le nom d’hôte correct <REGISTRY>.azurecr.io .
Le pare-feu ou le NSG bloque le registre Délai d’expiration de la connexion Si vous utilisez un réseau virtuel personnalisé, vérifiez l’accès sortant au Registre. Ajoutez la AzureContainerRegistry balise de service ou les règles de nom de domaine complet.

Plantage du conteneur et échecs de démarrage

Utilisez cette section lorsqu’une révision est créée, mais que la charge de travail ne parvient pas à démarrer ou à rester en cours d’exécution.

Symptoms

  • La révision est créée, mais healthState est Unhealthy.
  • runningState a la valeur Failed.
  • Les journaux de la console peuvent être vides (le conteneur s’arrête avant d’écrire une sortie).

Où rechercher : incidents et diagnostics de démarrage

Dans le portail Azure, accédez à Application conteneur>Révisions, sélectionnez la révision ayant échoué, puis ouvrez l’onglet Événements. Recherchez les événements BackOff ou 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
L’application plante au démarrage Trace de la pile dans les journaux d'activité de la console Corrigez l’erreur de l’application. Si les journaux sont vides, le blocage se produit avant que stdout ne soit vidé. Ajoutez la journalisation anticipée ou définissez votre runtime pour désactiver la mise en mémoire tampon de sortie (par exemple). PYTHONUNBUFFERED=1
Commande ou point d’entrée non valide exec format error, executable file not found Vérifiez que les command et args du conteneur correspondent à ce qu’attend l’image. Consultez az containerapp revision show pour properties.template.containers[].command.
Variable d’environnement manquante KeyError, undefined, référence null Vérifiez que toutes les vars env requises sont définies. Consultez les problèmes d’accès aux secrets.
Ressources insuffisantes OOMKilled Augmentez les limites de mémoire et d’UC sur le conteneur : az containerapp update -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --cpu 1.0 --memory 2.0Gi.

Problèmes d’accès aux secrets

Utilisez cette section pour résoudre les valeurs secrètes manquantes ou vides qui interrompent la configuration de l’application au moment de l’exécution.

Symptoms

  • Le conteneur démarre mais l’application échoue, car une valeur de configuration attendue est vide ou manquante.
  • Les variables d’environnement qui référencent des secrets n’ont aucune valeur.

Où rechercher : diagnostics des références secrètes

Dans le portail Azure, accédez à Application conteneur>Paramètres>Secrets pour vérifier que le secret existe. Accédez ensuite à Application conteneur>Révisions, sélectionnez la révision, puis vérifiez Détails du conteneur>Variables d’environnement pour vérifier que la référence est correcte.

# 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Incompatibilité de nom de secret La valeur var env est vide La variable d’environnement secretRef doit correspondre exactement au nom du secret (sensible à la casse).
Secret non défini Erreur de déploiement référençant un secret inconnu Définissez le secret avant de déployer : az containerapp secret set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --secrets mysecret=myvalue.
Secret mis à jour mais la révision n'a pas redémarrée L’ancienne valeur persiste Déployez une nouvelle révision ou redémarrez l’existant : az containerapp revision restart -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV>. La mise à jour d’un secret seul ne déclenche pas de nouvelle révision.
Secret supprimé alors qu’une révision y fait référence Le conteneur ne parvient pas à démarrer Déployez une nouvelle révision qui supprime la référence au secret supprimé, puis désactivez les anciennes révisions.

Important

Dans Container Apps, les secrets sont définis au niveau de l’application, mais les références de variables d’environnement sont définies au niveau de la révision. La modification d’une valeur secrète ne se propage pas automatiquement aux révisions en cours d’exécution. Vous devez créer une nouvelle révision ou redémarrer celle existante pour que la valeur mise à jour prenne effet.

Échecs des références Key Vault

Utilisez cette section lorsque les secrets adossés à Key Vault ne peuvent pas être résolus lors du déploiement ou lorsque l’application est en cours d’exécution.

Symptoms

  • Le déploiement échoue ou la valeur secrète n’est pas disponible.
  • Les journaux système font référence à des erreurs d’accès à Key Vault.
  • provisioningError mentionne un échec d’authentification ou d’autorisation avec Key Vault.

Où chercher : diagnostics d’accès à Key Vault

Dans le portail Azure, accédez à Application conteneur>Paramètres>Secrets (repérez une icône d’avertissement sur la référence Key Vault). Accédez ensuite à Container App>Diagnostic et résolvez les problèmes et recherchez « 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>

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Identité gérée non activée Managed identity not configured Activer l’identité managée attribuée par le système ou attribuée par l’utilisateur : az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned.
Rôle RBAC manquant Authorization failed, Access denied Accordez le rôle d’utilisateur Key Vault Secrets à l’identité managée sur l’Key Vault : az role assignment create --role "Key Vault Secrets User" --assignee <IDENTITY_PRINCIPAL_ID> --scope <KEYVAULT_RESOURCE_ID>.
Key Vault pare-feu bloque l’accès Délai d’expiration de la connexion, ForbiddenByFirewall Ajoutez les adresses IP sortantes de l'environnement Container Apps au pare-feu Key Vault ou configurez un point de terminaison privé. Ajoutez également la balise de service AzureKeyVault et le nom de domaine complet (FQDN) login.microsoft.com si vous utilisez l’UDR avec Pare-feu Azure.
Le secret est désactivé dans Key Vault SecretDisabled Activez le secret dans Key Vault : portail Azure > Key Vault > Secrets > sélectionnez le secret > Activer.
URI Key Vault mal formé SecretNotFound, InvalidUri Vérifiez le format d’URI : https://<vault>.vault.azure.net/secrets/<secret-name> ou https://<vault>.vault.azure.net/secrets/<secret-name>/<version>.
Délai de propagation des rôles RBAC Fonctionne après environ 5 minutes Les modifications RBAC peuvent prendre jusqu’à 10 minutes pour se propager. Le cache des jetons d’identité peut persister jusqu’à 24 heures. Attendez et réessayez ou déployez une nouvelle révision.

Configuration incorrecte de l’identité managée

Utilisez cette section lorsque l’authentification pour Azure services échoue même si votre application est configurée pour utiliser l’identité managée.

Symptoms

  • Le code d’application reçoit 401 (non autorisé) ou 403 (Interdit) lors de l’appel de services Azure.
  • Échec de l’acquisition de jetons d’identité gérée.

Où rechercher : diagnostics d’identité et d’autorisation

Dans le portail Azure, accédez à Application conteneur>Paramètres>Identité (vérifiez que l’identité affectée par le système est activée On ou que les identités affectées par l’utilisateur sont répertoriées). Vérifiez ensuite le panneau IAM/Contrôle d’accès de la ressource cible pour connaître les attributions de rôles.

# 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Aucune identité affectée Le Kit de développement logiciel (SDK) génère une ManagedIdentityCredential erreur Attribuer une identité : az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned.
Identité incorrecte utilisée (attribuée par le système ou par l’utilisateur) 403 pour la ressource cible Si vous utilisez l’identité affectée par l’utilisateur, spécifiez l’ID client dans votre code : DefaultAzureCredential(managed_identity_client_id="<CLIENT_ID>").
Attribution de rôle manquante sur la ressource cible 403 Attribuez le rôle requis sur la ressource cible (par exemple, Contributeur aux données Blob de stockage sur un compte de stockage).
Le conteneur d’initialisation nécessite une identité, mais n’est pas disponible Échec du conteneur Init avec l’erreur d’authentification Dans les environnements de consommation uniquement et à profil de charge de travail dédié, les conteneurs d’initialisation ne peuvent pas utiliser l’identité managée. Déplacez la logique dépendante de l’identité vers le conteneur principal, ou utilisez un environnement de consommation avec profil de charge de travail et définissez lifecycle: Init sur l’identité.
Cache de jeton obsolète après la modification du rôle 403 persiste pendant quelques minutes après le correctif Le cache des jetons d’identité peut persister jusqu’à 24 heures. Déployez une nouvelle révision pour forcer l’actualisation du jeton.

Tip

Container Apps expose un point de terminaison REST accessible en interne pour acquérir des jetons d’identité managée. Au lieu d’appeler ce point de terminaison directement, utilisez le Kit de développement logiciel (SDK) Azure Identity (DefaultAzureCredential) pour une expérience cohérente entre les environnements.

Problèmes de synchronisation lors de l’initialisation

Utilisez cette section lorsque les conteneurs init bloquent le démarrage ou échouent avant que le conteneur principal puisse commencer à traiter le trafic.

Symptoms

  • L’application n’atteint jamais un état de fonctionnement.
  • Les conteneurs Init apparaissent bloqués ou échouent.
  • Les journaux système affichent le conteneur init en cours d’exécution, mais jamais terminé.

Où chercher : diagnostics du conteneur d’initialisation

Dans le portail Azure, accédez à Révisions d’application > conteneur, sélectionnez la révision et ouvrez l’onglet Événements. Recherchez les événements de conteneur init.

# 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Le conteneur Init dépend d’un service qui n’est pas encore disponible Connexion refusée ou délai d’expiration dans les journaux du conteneur d’initialisation Ajoutez une logique de nouvelle tentative ou une vérification de préparation dans le conteneur init. Ne supposez pas que les services dépendants sont disponibles au moment de l’init.
Le conteneur Init ne se ferme jamais La révision reste à l’état Provisioning Vérifiez que le conteneur init exécute une commande finie et quitte avec le code 0. Les conteneurs d’initialisation qui s’exécutent sans fin empêchent le conteneur principal de démarrer.
Le conteneur Init a besoin d’une identité managée 401 ou 403 à partir du conteneur init Dans les environnements de consommation uniquement et avec profil de charge de travail dédié, l’identité gérée n’est pas disponible pour les conteneurs d’initialisation. Utilisez un environnement de consommation avec profil de charge de travail, ou déplacez la charge de travail dépendante de l’identité vers le conteneur principal.
Le téléchargement de l’image du conteneur d’initialisation échoue Mêmes symptômes que les échecs de récupération d’image Appliquez les mêmes vérifications de l’authentification du registre et des balises d’image.
Ordre des opérations : secret non encore synchronisé Le conteneur d’initialisation lit un secret vide La synchronisation des secrets de Key Vault s’effectue de manière asynchrone. Si le conteneur d’init dépend d’un secret référencé Key Vault, la valeur n’est peut-être pas encore disponible. Utilisez des secrets directs pour les dépendances init-time ou ajoutez une logique de nouvelle tentative.

Échecs de sonde de santé

Utilisez cette section lorsque les révisions sont déployées avec succès, mais sont marquées comme non saines ou détériorées par les vérifications de sonde.

Symptoms

  • La révision est provisionnée, mais l’état d’exécution est Degraded.
  • Les journaux système affichent les événements Unhealthy avec les détails de l’échec de la sonde.
  • L’application fonctionne localement, mais ne passe pas les vérifications d’état dans ACA.

Où chercher : diagnostics d'intégrité de la sonde

Dans le portail Azure, accédez à Application conteneur>Application>Conteneurs>Sondes d’intégrité (vérifiez la configuration des sondes). Accédez ensuite à Application conteneur>Révisions, sélectionnez la révision et ouvrez Événements.

# 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Le port de sonde ne correspond pas au port d’application La sonde retourne la connexion refusée Définissez le port de sonde pour qu’il corresponde au port d’écoute de votre application et à l’entrée targetPort.
L’application prend trop de temps pour démarrer La sonde échoue avant que l’application soit prête, la révision passe à Degraded Augmentez la valeur de initialDelaySeconds sur les sondes de liveness et de readiness. Commun avec les applications Java.
Le chemin de sonde renvoie un code différent de 200 La sonde échoue avec une erreur HTTP Vérifiez que le point de terminaison de vérification d’état renvoie le code 200. Pour les sondes HTTP, vérifiez que le chemin existe et répond correctement.
Sonde TCP lorsque l’application se lie uniquement après l’init La sonde se connecte avant l’écoute de l’application Utilisez une sonde de démarrage avec une valeur supérieure failureThreshold pour donner au temps de l’application de lier son port.

Valeurs de sonde par défaut

Lorsque vous activez l’entrée et que vous ne configurez pas les sondes, ACA applique ces valeurs par défaut :

Propriété Jeune entreprise Activité Préparation
Protocole TCP TCP TCP
Port Port cible d’entrée Port cible d’entrée Port cible d’entrée
Délai initial 1s 1s 3s
Période 1s 1s 5 s
Seuil d’échec 240 48 N/A

Problèmes d’entrée et de routage du trafic

Utilisez cette section lorsque l’application est en cours d’exécution, mais que les requêtes échouent, car les paramètres de trafic d’entrée ou de révision sont incorrects.

Symptoms

  • L’application est en cours d’exécution et intègre, mais les requêtes HTTP retournent des erreurs (404, 502) ou aucune réponse.
  • L’application fonctionne via az containerapp exec, mais pas via l’URL publique.

Où chercher : trafic entrant et diagnostics du trafic

Dans le portail Azure, accédez à Application conteneur>Paramètres>Entrée. Accédez ensuite à Container App>Application>Revisions (vérifiez la répartition du trafic).

# 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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Ingress non activé Aucun nom de domaine pleinement qualifié attribué, impossible d’accéder à l’application Activez l’entrée : az containerapp ingress enable -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type external --target-port 8080 --transport auto.
Incompatibilité de port cible 502 Mauvaise passerelle Définissez targetPort pour qu’il corresponde au port sur lequel votre application écoute.
Le poids du trafic est de 0% lors de la dernière révision L’ancienne révision sert le trafic Mettre à jour le fractionnement du trafic : az containerapp ingress traffic set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision-weight latest=100.
La restriction IP bloque le client 403 Vérifiez les restrictions de sécurité IP dans les paramètres d’entrée.
Transport incorrect (HTTP et TCP) Erreurs de connexion Vérifiez que le type d’entrée correspond au protocole de votre application.

Authentification du registre de conteneurs

Utilisez cette section lorsque les extractions d’images échouent, car l’application ne peut pas s’authentifier auprès de votre registre de conteneurs.

Symptoms

  • Le déploiement échoue avec UNAUTHORIZED: authentication required.
  • Cette erreur masque souvent d’autres problèmes (comme une balise d’image incorrecte) car le Registre rejette la demande avant de pouvoir vérifier la balise.

Où rechercher : diagnostics d’authentification du Registre

Dans le portail Azure, accédez à Application conteneur>Paramètres>Conteneur (vérifiez les paramètres du registre). Accédez ensuite à Container App>Diagnostiquer et résoudre les problèmes et recherchez « registre ».

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

Causes et résolutions courantes

Cause Signal d’erreur Résolution
Aucune information d’identification du registre n’est configurée UNAUTHORIZED Ajouter des identifiants de registre : az containerapp registry set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --server <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io --identity system.
Informations d’identification d’administrateur désactivées sur ACR UNAUTHORIZED avec le compte administrateur Activer l’utilisateur administrateur : az acr update -n <AZURE_CONTAINER_REGISTRY_NAME> --admin-enabled true. Préféré : utilisez plutôt l’identité managée pour l’extraction ACR.
L’identité managée n’a pas de rôle AcrPull UNAUTHORIZED Attribuez le rôle AcrPull : az role assignment create --role AcrPull --assignee <PRINCIPAL_ID> --scope <ACR_RESOURCE_ID>.
Nom d’hôte du serveur incorrect name unknown Vérifiez que le serveur de Registre correspond à votre ACR : <your-acr>.azurecr.io.

Résumé du flux de travail de diagnostic

Utilisez cette séquence lorsque vous ne savez pas ce qui a échoué :

  1. Exécutez az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json. Vérifiez provisioningState, provisioningErroret latestRevisionName.

  2. Exécutez az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table. Si la liste est vide, l’échec est un problème de validation d’image ou de validation de modèle (échecs d’extraction d’images et authentification de Registre de conteneurs). Si une révision existe, passez à l’étape 3.

  3. Exécutez az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json. Vérifier healthState, runningState, runningStateDetails, et provisioningError.

  4. Exécutez az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 pour afficher les événements au niveau de la plateforme, tels que les échecs de sonde, les erreurs d’identité et les problèmes de synchronisation des secrets.

  5. Exécutez az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 pour afficher l’application stdout/stderr, notamment les traces de pile, les erreurs de configuration et les échecs de connexion.

  6. Exécutez az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> pour vérifier la configuration de l’identité si des erreurs liées à l’authentification sont apparues dans les étapes précédentes.

Utilisez « Diagnostiquer et résoudre les problèmes » dans le portail

Le portail Container Apps inclut un panneau Diagnostiquer et résoudre les problèmes avec des diagnostics automatisés :

  1. Accédez à votre application conteneur dans le portail Azure.
  2. Sélectionnez Diagnostiquer et résoudre les problèmes dans le volet de navigation gauche.
  3. Utilisez la zone de recherche pour trouver des diagnostics précis (par exemple, « téléchargement d’image », « sonde de vérification d’état » ou « entrée »).
  4. Sélectionnez une vignette de catégorie de résolution des problèmes pour l’analyse guidée.

Ce volet est le point de départ recommandé pour les diagnostics guidés. Il peut ne pas couvrir tous les scénarios de cet article, mais il fournit des vérifications automatisées des problèmes courants.

Requêtes Log Analytics pour une analyse plus approfondie

Si la sortie de la CLI et les diagnostics du portail ne suffisent pas, interrogez directement les journaux sous-jacents dans Log Analytics. Les deux requêtes suivantes couvrent les points de départ les plus courants pour les échecs au niveau de la plateforme et les erreurs HTTP de niveau entrée.

Rechercher des échecs au niveau du système

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

Cette requête affiche des erreurs d’extraction d’images, des échecs de sonde, des erreurs d’approvisionnement et d’autres événements de plateforme.

Rechercher des erreurs HTTP (nécessite que les journaux HTTP soient activés)

La couche d’entrée génère des journaux HTTP, et vous choisissez de les activer. Activez ces journaux via les paramètres de diagnostic d’Azure Monitor sur l’environnement managé Container Apps. Une fois que vous les avez activés, la ContainerAppHTTPLogs table apparaît dans Log Analytics. L’affichage du tableau peut prendre plusieurs minutes.

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

Cette requête filtre les journaux HTTP de la couche d’entrée pour afficher uniquement les demandes ayant échoué (code d’état 400 ou supérieur) à partir de la dernière heure. Il retourne l’horodatage, l’application et le nom de révision, la méthode HTTP et le chemin, le code d’état d’erreur, un ResponseCodeDetails champ qui indique si l’erreur provient de votre conteneur (via_upstream) ou de la plateforme (, route_not_found),connection_timeout la durée de la requête et un ID de requête unique que vous pouvez utiliser pour mettre en corrélation les journaux d’application.

Pour en savoir plus, notamment sur l’analyse des requêtes lentes, le taux d’erreur par révision, le traçage d’une requête unique et les principaux points de terminaison en échec, consultez Surveiller les journaux dans Azure Container Apps avec Log Analytics.