Vous consultez la documentation d'Apigee Edge.
Consultez la
documentation Apigee X. en savoir plus
Vidéos
Regardez les vidéos suivantes pour en savoir plus sur les erreurs 503:
Vidéo | Description |
---|---|
Résoudre le problème 503 Service indisponible – NoActiveCibles | Pour en savoir plus, consultez les informations suivantes :
|
Problème constaté
L'application cliente reçoit le code d'état de réponse HTTP 503 avec le message Service non disponible et le code d'erreur NoActiveCibles pour les requêtes de proxy API.
Message d'erreur
Le message d'erreur suivant s'affiche:
HTTP/1.1 503 Service Unavailable
Le message d'erreur suivant s'affiche dans la réponse HTTP:
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.NoActiveTargets" } } }
Causes possibles
La réponse HTTP 503 Service Non disponible avec le code d'erreur NoActiveCibles est généralement observée lorsque vous utilisez un ou plusieurs serveurs cibles dans la configuration du point de terminaison cible de votre proxy d'API.
Le tableau suivant répertorie les causes possibles de la réponse 503 Service indisponible avec le code d'erreur NoActiveCibles:
Cause | Description | Qui peut effectuer les étapes de dépannage |
---|---|---|
Le serveur cible est désactivé | Le serveur cible spécifié dans la configuration du point de terminaison cible est désactivé. | Utilisateurs Edge Public and Private Cloud |
Erreurs de connexion dues à une résolution DNS incorrecte | La résolution DNS du serveur cible entraînait des adresses IP incorrectes, ce qui a entraîné des erreurs de connexion. | Utilisateurs de cloud privé périphérique |
Erreurs de connexion | Des problèmes de réseau ou de connectivité empêchent le client de se connecter au serveur. | Utilisateurs de cloud privé périphérique |
Alias d'hôte cible incorrect | L'hôte du serveur cible spécifié est incorrect ou comporte des caractères indésirables (un espace, par exemple). | Utilisateurs Edge Public and Private Cloud |
Échecs de handshake SSL | Le handshake TLS/SSL a échoué entre le client et le serveur. | Utilisateurs Edge Public and Private Cloud |
Échecs de vérification de l'état | Pour une raison quelconque, les vérifications de l'état configurées pour vérifier l'état du serveur cible peuvent échouer. | Utilisateurs de cloud privé périphérique |
Cause: le serveur cible est désactivé
Si tous les serveurs cibles spécifiés dans la configuration du point de terminaison cible sont désactivés, vous obtenez la réponse 503 Service non disponible avec le code d'erreur NoActiveCibles.
Diagnostic
- Déterminez le nom du serveur cible utilisé dans la configuration spécifique du point de terminaison cible du proxy d'API défaillant de l'une des manières suivantes:
- S'il n'y a qu'un seul point de terminaison cible, vérifiez-le.
- S'il existe plusieurs points de terminaison cibles et si vous ne savez pas lequel a désactivé le serveur cible, procédez comme suit:
- Activez la session de trace, effectuez l'appel d'API, puis reproduisez le problème : 503 Service non disponible.
- Dans la trace, accédez à Target Request Flow démarré (Flux de requête cible démarré) et déterminez le nom du point de terminaison cible, comme indiqué ci-dessous:
- Une fois que vous avez identifié le point de terminaison cible, récupérez le nom du serveur cible utilisé à partir de la configuration du point de terminaison cible, comme indiqué dans l'exemple ci-dessous :
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
Dans l'exemple ci-dessus, il existe un seul serveur cible nommé demo-target.
- Obtenez la définition de chacun des serveurs cibles utilisés dans le point de terminaison cible à l'aide de l'interface utilisateur Edge ou d'un appel d'API Edge.
Interface utilisateur périphérique
Pour obtenir la définition à l'aide de l'interface utilisateur Edge:
- Accédez à Admin > Environnements > Serveurs cibles.
- Sélectionnez l'environnement spécifique dans lequel vous observez l'échec.
- Recherchez le nom du serveur cible spécifique pour obtenir la définition du serveur cible.
Par exemple, saisissez le nom de serveur cible
demo-target
. Vous verrez sa définition comme indiqué ci-dessous:Notez que le serveur cible demo-target possède un alias d'hôte et un numéro de port, et que le protocole SSL est activé. Cependant, le serveur cible lui-même est désactivé , ce qui indique que l'élément ACTIVÉ est grisé.
API Edge
Pour obtenir la définition à l'aide de l'API Edge:
Utilisez l'option Obtenir l'API TargetServer pour obtenir la définition du serveur cible.
Sortie de la définition du serveur cible
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>false</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
Le résultat de l'API Apigee indique que le serveur cible demo-target est désactivé, car l'élément IsEnabled est défini sur "false".
Étant donné que le serveur cible est désactivé, le processeur de messages envoie immédiatement l'erreur 503 Service AVAILABLE (Service non disponible) avec le code d'erreur NoActiveCibles en tant que réponse au client.
Résolution
Assurez-vous que les serveurs cibles spécifiques utilisés dans la configuration du point de terminaison cible de votre proxy d'API sont toujours activés.
Interface utilisateur périphérique
- Accédez à Admin > Environnements > Serveurs cibles.
- Sélectionnez l'environnement spécifique dans lequel vous observez l'échec.
- Recherchez le nom du serveur cible spécifique pour obtenir sa définition.
- Sélectionnez le serveur cible spécifique, puis cliquez sur Modifier.
- Cochez la case Activé.
- Cliquez sur Update (Mettre à jour).
API Edge
Utilisez l'option Mettre à jour une API de serveur cible pour mettre à jour la définition du serveur cible et assurez-vous que IsEnabled est défini sur true dans la charge utile de la requête de l'API, comme indiqué ci-dessous:
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
Si le problème persiste, consultez Obtention des informations de diagnostic requis.
Diagnostiquer les problèmes à l'aide de la surveillance des API
La surveillance des API vous permet d'isoler rapidement les problèmes afin de diagnostiquer les problèmes d'erreur, de performances et de latence, ainsi que leur source. C'est par exemple le cas des applications pour développeurs, des proxys d'API, des cibles backend ou de la plate-forme d'API.
Suivez un exemple de scénario qui montre comment résoudre les problèmes de 5xx avec vos API à l'aide de la surveillance des API. Par exemple, vous pouvez configurer une alerte pour être averti lorsque le nombre d'erreurs messaging.adaptors.http.flow.NoActiveTargets
dépasse un seuil particulier.
Vous devez collecter des informations de diagnostic
Si le problème persiste même après avoir suivi les instructions ci-dessus, veuillez rassembler les informations de diagnostic suivantes. Contactez-les et partagez-les avec l'assistance Apigee:
- Si vous êtes un utilisateur de cloud public, fournissez les informations suivantes:
- Nom de l'organisation
- Nom de l'environnement
- Nom du proxy d'API
- Exécuter la commande curl pour reproduire l'erreur
- Fichier de suivi contenant les requêtes indiquant une erreur 503 "Service non disponible" avec le code d'erreur NoActiveCibles
- Si vous êtes un utilisateur de cloud privé, fournissez les informations suivantes :
- Message d'erreur complet observé
- Nom de l'environnement
- Groupe de proxys d'API
- Fichier de suivi contenant les requêtes indiquant une erreur 503 "Service non disponible" avec le code d'erreur NoActiveCibles
- Journaux d'accès NGINX
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
) - Journaux du processeur de messages
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
)