Informations détaillées sur le service de passerelle d'API
Détails de journalisation pour les journaux du service de passerelle d'API.
Ressources
- Déploiement d'API
Catégories de journaux
Valeur d'API (ID) : | Console (Nom d'affichage) | Description |
---|---|---|
Access | Access Logs | Journaux d'accès pour un déploiement d'API. |
Execution | Execution Logs | Journaux d'exécution pour un déploiement d'API. |
Disponibilité
La journalisation d'accès/exécution du service de passerelle d'API est disponible dans toutes les régions des domaines commerciaux.
Journaux d'accès de déploiement d'API
Les journaux d'accès de déploiement d'API enregistrent un sommaire de chaque demande et réponse qui passent par la passerelle d'API, correspondant à une route du déploiement d'API. Chaque entrée d'un journal d'accès contient des informations sur la demande et la réponse (heure de réception de la demande, protocole de serveur, statut de la réponse, etc.). Pour la liste complète des champs, voir Contenu d'un journal d'accès.
Contenu d'un journal d'accès
Les journaux d'accès apparaissent sous forme de valeur dans le champ Données du journal. Cette valeur est constituée de données au format JSON avec les champs suivants :
Champ | Exemple | Description |
---|---|---|
httpMethod | GET | Méthode HTTP dérivée de la ligne de demande. |
requestUri | /example/ | URI de demande dérivé de la ligne de demande. |
serverProtocol | HTTP/1.1 | Protocole HTTP dérivé de la ligne de demande. |
bodyBytesSent | 45 | Taille totale de la réponse (en octets) envoyée au client. |
gatewayId | ocid1.apigateway.oc1.iad.<unique_ID> | OCID de la passerelle d'API pour le déploiement d'API traitant la demande. |
httpUserAgent | Apache-HttpClient/4.5.9 (Java/1.8.0_252) | Agent utilisateur HTTP pour la demande. |
message | GET /example/ HTTP/1.1 | Ligne de demande reçue du client. |
opcRequestId | FF7F0B8A32246FC7526AE45A2FA8D5CE/ A408784281BF81B0EE23596CE57CA93C/ C06F7DDDFC7C505FAA0566D8F2FE0BB2 |
Valeur de l'en-tête HTTP opc-request-id ou d'un ID demande généré en interne si aucun n'a été spécifié dans la demande. |
remoteAddr | 138.1.55.172 | Adresse IP du client demandeur. |
httpReferrer | https://www.example.com | URL de la recommandation, le cas échéant. |
requestDuration | 0.016 | Temps total écoulé (en secondes, avec une précision de milliseconde), entre le moment où la passerelle commence à recevoir une demande du client et termine l'envoi d'une réponse au client. |
status | 404 | Code de statut de la réponse de la passerelle. |
Exemple de journal d'accès
{
"httpMethod": "GET",
"requestUri": "/example/",
"serverProtocol": "HTTP/1.1",
"bodyBytesSent": 45,
"gatewayId": "ocid1.apigateway.oc1.iad.<unique_ID>",
"httpUserAgent": "Apache-HttpClient/4.5.9 (Java/1.8.0_252)",
"message": "GET /example/ HTTP/1.1",
"opcRequestId": "FF7F0B8A32246FC7526AE45A2FA8D5CE/A408784281BF81B0EE23596CE57CA93C/C06F7DDDFC7C505FAA0566D8F2FE0BB2",
"remoteAddr": "138.2.05.172",
"requestDuration": 0.016,
"status": 404
}
Journal d'exécution de déploiement d'API
Les journaux d'exécution de déploiement d'API enregistrent des informations sur le traitement au sein de la passerelle d'API pour une route individuelle, afin d'aider au dépannage et à la surveillance. Chaque entrée du journal d'exécution contient des informations (heure de réception de la demande, niveau de gravité du message du journal, code de message, etc.). Pour la liste complète des champs, voir Contenu d'un journal d'exécution.
Contenu d'un journal d'exécution
Par défaut, les informations de niveau de journalisation sont activées. Cette valeur est constituée de données au format JSON avec les champs suivants :
Champ | Exemple | Description |
---|---|---|
code | request.loopDetected | Code abrégé de l'événement de journalisation rencontré lors de l'exécution de la demande. Pour la liste complète des codes de message, voir le tableau Codes de journal. |
gatewayId | ocid1.apigateway.oc1.iad.<unique_ID> | OCID de la passerelle d'API pour le déploiement d'API traitant la demande. |
functionId | ocid1.fnfunc.oc1.iad.<unique_ID> | OCID de la fonction appelée par la passerelle d'API. Ce champ est présent uniquement pour les fonctions du serveur dorsal. |
level | WARN | Niveau de journal de l'entrée du journal d'exécution : INFO, WARN ou ERROR. |
message | A request loop has been detected - requests for this gateway are being directed back to this gateway. | Message d'exécution émis lors du traitement de la demande. |
opcRequestId | FF7F0B8A32246FC7526AE45A2FA8D5CE/ A408784281BF81B0EE23596CE57CA93C/ C06F7DDDFC7C505FAA0566D8F2FE0BB2 |
Valeur de l'en-tête HTTP opc-request-id ou d'un ID demande généré en interne si aucun n'a été spécifié dans la demande. |
functionCode | FunctionInvokeSyslogUnavailable | Code fourni par le service des fonctions pour OCI pour définir de manière unique l'erreur de la fonction. Ce champ est présent uniquement pour les fonctions du serveur dorsal. |
functionMessage | Syslog endpoint unavailable | Message fourni par le service des fonctions pour OCI pour décrire l'erreur de la fonction. Ce champ est présent uniquement pour les fonctions du serveur dorsal. |
functionStatusCode | 502 | Code de statut HTTP retourné par le service des fonctions pour OCI. Ce champ est présent uniquement pour les fonctions du serveur dorsal. |
configuredLimit | 5 | Nombre de demandes à autoriser par configuredUnit. Limite de taux ou quota. |
configuredUnit | MINUTE | Période pour laquelle autoriser le nombre de demandes spécifié par configuredLimit. Pour les limites de taux, "SECOND". Pour les quotas, "MINUTE", "DAY", "HOUR", "WEEK" ou "MONTH". |
entitlementName | Entitlement1 | Nom du droit utilisé par la demande pour accéder au déploiement d'API. |
limitingKey | <timestamp>/ocid1.apigatewayusageplan.oc1.iad.<unique_ID>/<entitlement-name>/ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> | Pour calculer l'utilisation à des fins de limite de taux et de quota, les demandes ayant la même clé sont comptées ensemble. |
limitingResourceId | ocid1.apigatewayusageplan.oc1.iad.<unique_ID> | OCID du plan d'utilisation utilisé pour accéder au déploiement d'API. |
limitingResourceName | Gold-Usage-Plan | Nom du plan d'utilisation utilisé pour accéder au déploiement d'API. |
Codes de journal
Code de journal | Description | Fonction connexe |
---|---|---|
httpBackend.timeout | La demande au serveur dorsal HTTP a expiré. | Serveur dorsal HTTP |
httpBackend.dnsResolutionFailed | Échec de la résolution de l'URL du serveur dorsal HTTP. | |
httpBackend.sslHandshakeFailed | Échec de l'établissement d'une liaison SSL avec le serveur dorsal HTTP. | |
httpBackend.successfulRequest | Demande réussie au serveur dorsal HTTP. | |
httpBackend.responseReceived | Réponse reçue du serveur dorsal HTTP. | |
httpBackend.requestSent | Demande envoyée au serveur dorsal HTTP. | |
functionBackend.successfulRequest | Appel de fonction réussi dans le service des fonctions pour OCI. | Service dorsal du service des fonctions pour OCI |
functionBackend.notFoundOrNotAuthorized | Échec de l'appel de la fonction dans le service des fonctions pour OCI. Cause : 404 à partir du service des fonctions pour OCI. | |
functionBackend.rateLimited | Taux limité lors de l'appel de la fonction dans le service des fonctions pour OCI. | |
functionBackend.serviceUnavailable | Service du service des fonctions pour OCI non disponible. | |
functionBackend.badGateway | Réception d'une "passerelle incorrecte" lors de l'appel de la fonction dans le service des fonctions pour OCI. | |
functionBackend.timeout | Appel de fonction dans OCI Functionstimed out. | |
functionBackend.internalServiceError | Erreur de service interne lors de l'appel de la fonction dans le service des fonctions pour OCI. | |
specification.badVariableReference | Impossible de résoudre la variable de contexte. | Spécification incorrecte à l'exécution |
specification.invalidAuthenticationPolicy | Politique d'authentification non valide. | |
specification.badTransformationPolicy | Politique de transformation incorrecte. | |
specification.badHeaderTransformationPolicy | Politique de transformation d'en-tête incorrecte. | |
specification.badQueryParameterTransformationPolicy | Politique de transformation de paramètre d'interrogation incorrecte. | |
request.internalServiceError | Erreur de service interne. | Traitement de demande |
request.loopDetected | Une condition de boucle de demande a été détectée, entraînant le réacheminement des demandes de la passerelle vers elle-même en créant un cycle. | |
request.possibleLoopDetected | Une condition possible de boucle de demande a été détectée, entraînant le réacheminement des demandes de la passerelle vers elle-même en créant un cycle. | |
request.headersTruncated | Les en-têtes de demande ont été tronqués. | |
request.queryParametersTruncated | Les paramètres d'interrogation de demande ont été tronqués. | |
authorization.unauthorizedRequest | Échec de l'autorisation pour la demande. | Autorisation de demande |
authorization.scopeCheckFailed | Échec de la vérification de la portée de la demande. | |
customAuthentication.successfulFunctionInvocation | Appel réussi de la fonction d'Oracle Functions. | Authentification personnalisée |
customAuthentication.failedFunctionInvocation | Échec de l'appel de la fonction d'Oracle Functions. | |
customAuthentication.successfulAuthentication | Authentification personnalisée réussie. | |
customAuthentication.authenticationFailed | Échec de l'authentification personnalisée. | |
customAuthentication.unexpectedResponse | Réponse inattendue de la fonction d'Oracle Functions. | |
jwtAuthentication.successfulAuthentication | Authentification JWT réussie. | Authentification JWT |
jwtAuthentication.authenticationFailed | Échec de l'authentification JWT. | |
jwtAuthentication.badJsonWebKeySet | Jeu de clés Web JSON non valide. | |
jwtAuthentication.loadingJsonWebKeySet | Chargement du jeu de clés Web JSON. | |
headerTransformation.badHeaderValue | Valeur incorrecte pour l'en-tête de demande. | Transformation d'en-tête |
headerTransformation.protectedHeaderTransformed | La politique a tenté de transformer un en-tête protégé. | |
headerTransformation.protectedElementTransformed | La politique a tenté de transformer un élément protégé. | |
headerTransformation.missingSetValues | Valeur manquante pour la politique de transformation de jeu. | |
queryParameterTransformation.badParameterValue | Valeur incorrecte pour le paramètre d'interrogation de demande. | Transformations de paramètre d'interrogation |
queryParameterTransformation.protectedElementTransformed | La politique a tenté de transformer un élément protégé. | |
queryParameterTransformation.missingSetValues | Valeur manquante pour la politique de transformation de jeu. | |
requestValidation.validationError | La demande a échoué à une politique de validation. | Validation de demande |
usagePlans.requestPermis | La demande d'un abonné au plan d'utilisation a été autorisée. | Plans d'utilisation |
usagePlans.requestRejeté | La demande d'un abonné au plan d'utilisation a été rejetée. | |
usagePlans.requestBreachedButAllowed | La demande a été autorisée, même si le nombre maximal de demandes spécifié par un droit de plan d'utilisation a été dépassé. | |
usagePlans.eligibleNotEntitled | Le déploiement d'API n'est pas la cible d'un droit dans aucun plan d'utilisation, même si la spécification de déploiement d'API inclut une politique de demande de plan d'utilisation qui spécifie un jeton client. | |
dynamicRouting.backendMatched<! [CDATA[ ]]> | La demande correspondait à une règle dorsale et a été acheminée vers l'élément dorsal associé. | Acheminement dorsal dynamique |
dynamicRouting.backendRejected<! [CDATA[ ]]> | La demande a échoué, car elle ne correspondait pas à une règle dorsale et aucune règle par défaut n'a été définie. | |
dynamicRouting.defaultBackendMatched<! [CDATA[ ]]> | La demande ne correspondait pas à une règle dorsale. Elle a donc été acheminée vers l'élément dorsal associé à la règle par défaut. | |
dynamicAuthentication.defaultAuthenticationServerMatched<! [CDATA[ ]]> | La valeur de la variable de contexte sélectionnée ne correspond à aucune des règles du serveur d'authentification, mais un serveur d'authentification par défaut a été spécifié pour être utilisé pour l'authentification. | Sélection du serveur d'authentification dynamique |
dynamicAuthentication.authenticationServerMatched<! [CDATA[ ]]> | La valeur de la variable de contexte sélectionnée correspond à l'une des règles du serveur d'authentification. | |
dynamicAuthentication.noAuthenticationServerMatched<! [CDATA[ ]]> | La valeur de la variable de contexte sélectionnée ne correspond à aucune des règles du serveur d'authentification et aucun serveur d'authentification par défaut n'a été spécifié. | |
dynamicAuthentication.jwtTokenNotFound<! [CDATA[ ]]> | La variable de contexte sélectionnée était request.auth[claimName] mais aucun jeton JWT n'a été envoyé avec la demande. | |
dynamicAuthentication.jwtTokenInvalid<! [CDATA[ ]]> | La variable de contexte sélectionnée était request.auth[claimName] mais un jeton JWT non valide a été envoyé avec la demande. | |
authentication.validationFailurePolicyInvalid<! [CDATA[ ]]> | Le type de la politique d'échec de validation n'est pas défini. | Authentification basée sur une demande |
Exemple de journal d'exécution
- Type : Demande
- Scénario : Boucle de demande détectée
- Description : Une condition de boucle de demande a été détectée, entraînant le réacheminement des demandes de la passerelle vers elle-même en créant un cycle.
- Exemple :
{ "code": "request.loopDetected", "gatewayId": "ocid1.apigateway.oc1.iad.<unique_ID>", "level": "WARN", "message": "A request loop has been detected - requests for this gateway are being directed back to this gateway.", "opcRequestId": "FF7F0B8A32246FC7526AE45A2FA8D5CE/A408784281BF81B0EE23596CE57CA93C/C06F7DDDFC7C505FAA0566D8F2FE0BB2", }