Détails relatifs à API Gateway
Détails de journalisation pour les journaux API Gateway.
Ressources
- Déploiement d'API
Catégories de journal
Valeur d'API (ID) : | Console (nom d'affichage) | Description |
---|---|---|
Accès | Journaux d'accès | Journaux d'accès pour un déploiement d'API. |
Exécution | Journaux d'exécution | Journaux d'exécution pour un déploiement d'API. |
Disponibilité
La journalisation des accès/d'exécution d'API Gateway est disponible dans toutes les régions des domaines commerciaux.
Journal d'accès de déploiement d'API
Les journaux d'accès de déploiement d'API enregistrent un récapitulatif de chaque demande et de chaque réponse qui passent par la passerelle d'API, correspondant à un routage sur le déploiement d'API. Chaque entrée du journal d'accès contient des informations sur la demande et la réponse (heure de réception de la demande, protocole du serveur, statut de la réponse, etc.). Pour obtenir la liste complète des champs, reportez-vous à 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 de journal. Cette valeur est une donnée au format JSON comportant 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 qui traite 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 de la part du client. |
opcRequestId | FF7F0B8A32246FC7526AE45A2FA8D5CE/ A408784281BF81B0EE23596CE57CA93C/ C06F7DDDFC7C505FAA0566D8F2FE0BB2 |
Valeur de l'en-tête HTTP opc-request-id ou ID de demande généré en interne si aucun ID n'a été précisé dans la demande. |
remoteAddr | 138.1.55.172 | Adresse IP du client à l'origine de la demande. |
httpReferrer | https://www.example.com | URL de renvoi, le cas échéant. |
requestDuration | 0.016 | Temps total (en secondes, avec une précision à la milliseconde) entre le moment où la passerelle commence à recevoir une demande du client et 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 un routage individuel, 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 de journalisation, code de message, etc.). Pour obtenir la liste complète des champs, reportez-vous à Contenu d'un journal d'exécution.
Contenu d'un journal d'exécution
Par défaut, les informations sur le niveau de journalisation sont activées. Cette valeur est une donnée au format JSON comportant 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 obtenir la liste complète des codes de message, reportez-vous au tableau Codes de journal. |
gatewayId | ocid1.apigateway.oc1.iad.<unique_ID> | OCID de la passerelle d'API pour le déploiement d'API qui traite la demande. |
functionId | ocid1.fnfunc.oc1.iad.<unique_ID> | OCID de la fonction appelée par la passerelle d'API. Ce champ est uniquement présent pour les back-ends de fonction. |
level | WARN | Niveau de journalisation de l'entrée du journal d'exécution : INFO, WARN ou ERROR. |
message | Une boucle de demande a été détectée : les demandes pour cette passerelle sont redirigées vers cette passerelle. | 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 ID de demande généré en interne si aucun ID n'a été précisé dans la demande. |
functionCode | FunctionInvokeSyslogUnavailable | Code fourni par OCI Functions pour définir de manière unique l'erreur de la fonction. Ce champ est uniquement présent pour les back-ends de fonction. |
functionMessage | Adresse Syslog indisponible | Message fourni par OCI Functions pour décrire l'erreur de la fonction. Ce champ est uniquement présent pour les back-ends de fonction. |
functionStatusCode | 502 | Code de statut HTTP renvoyé par OCI Functions. Ce champ est uniquement présent pour les back-ends de fonction. |
configuredLimit | 5 | Nombre de demandes à autoriser par configuredUnit. Limite de taux ou quota. |
configuredUnit | MINUTES | Période pendant laquelle autoriser le nombre de demandes indiqué par configuredLimit. Pour les limites de taux, "SECOND". Pour le quota, "MINUTE", "DAY", "HOUR", "WEEK" ou "MONTH". |
entitlementName | Entitlement1 | Nom de l'habilitation utilisée 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 | Fonctionnalité associée |
---|---|---|
httpBackend.timeout | La demande au back-end HTTP a expiré. | Back-end HTTP |
httpBackend.dnsResolutionFailed | Echec de la résolution de l'URL de back-end HTTP. | |
httpBackend.sslHandshakeFailed | Echec de l'établissement de liaison SSL avec le back-end HTTP. | |
httpBackend.successfulRequest | Demande transmise au back-end HTTP. | |
httpBackend.responseReceived | Réponse reçue de la part du back-end HTTP. | |
httpBackend.requestSent | Demande envoyée au back-end HTTP. | |
functionBackend.successfulRequest | Appel de fonction réussi dans OCI Functions. | Back-end des fonctions OCI |
functionBackend.notFoundOrNotAuthorized | Echec de l'appel de la fonction dans OCI Functions. Cause : 404 à partir du service OCI Functions. | |
functionBackend.rateLimited | Taux limité lors de l'appel de la fonction dans OCI Functions. | |
functionBackend.serviceUnavailable | Service OCI Functions non disponible. | |
functionBackend.badGateway | "Bad Gateway" reçu lors de l'appel de la fonction dans OCI Functions. | |
functionBackend.timeout | L'appel de la fonction dans OCI Functions a expiré. | |
functionBackend.internalServiceError | Erreur de service interne lors de l'appel de la fonction dans OCI Functions. | |
specification.badVariableReference | La variable de contexte n'a pas pu être résolue. | Spécification incorrecte lors de l'exécution |
specification.invalidAuthenticationPolicy | Stratégie d'authentification non valide. | |
specification.badTransformationPolicy | Stratégie de transformation incorrecte. | |
specification.badHeaderTransformationPolicy | Stratégie de transformation d'en-tête incorrecte. | |
specification.badQueryParameterTransformationPolicy | Stratégie de transformation de paramètre de requête incorrecte. | |
request.internalServiceError | Erreur interne du service. | Traitement de la demande |
request.loopDetected | Une condition de boucle de demande a été détectée. Les demandes de la passerelle sont alors redirigées vers celle-ci, créant ainsi un cycle. | |
request.possibleLoopDetected | Une condition possible de boucle de demande a été détectée. Les demandes de la passerelle sont alors redirigées vers celle-ci, créant ainsi un cycle. | |
request.headersTruncated | Les en-têtes de demande ont été tronqués. | |
request.queryParametersTruncated | Les paramètres de requête de demande ont été tronqués. | |
authorization.unauthorizedRequest | Echec de l'autorisation pour la demande. | Autorisation de la demande |
authorization.scopeCheckFailed | Echec de la vérification de la portée de la demande. | |
customAuthentication.successfulFunctionInvocation | Appel réussi d'Oracle Functions. | Authentification personnalisée |
customAuthentication.failedFunctionInvocation | Echec de l'appel d'Oracle Functions. | |
customAuthentication.successfulAuthentication | L'authentification personnalisée a été effectuée. | |
customAuthentication.authenticationFailed | L'authentification personnalisée a échoué. | |
customAuthentication.unexpectedResponse | Réponse inattendue de la part d'Oracle Functions. | |
jwtAuthentication.successfulAuthentication | L'authentification JWT a été effectuée. | Authentification JWT |
jwtAuthentication.authenticationFailed | L'authentification JWT a échoué. | |
jwtAuthentication.badJsonWebKeySet | L'ensemble de clés Web JSON n'est pas valide. | |
jwtAuthentication.loadingJsonWebKeySet | Chargement de l'ensemble de clés Web JSON. | |
headerTransformation.badHeaderValue | Valeur incorrecte pour l'en-tête de demande. | Transformations d'en-tête |
headerTransformation.protectedHeaderTransformed | La stratégie a tenté de transformer un en-tête protégé. | |
headerTransformation.protectedElementTransformed | La stratégie a tenté de transformer un élément protégé. | |
headerTransformation.missingSetValues | Valeur manquante pour la stratégie de transformation définie. | |
queryParameterTransformation.badParameterValue | Valeur incorrecte pour le paramètre de requête de demande. | Transformation de paramètre de requête |
queryParameterTransformation.protectedElementTransformed | La stratégie a tenté de transformer un élément protégé. | |
queryParameterTransformation.missingSetValues | Valeur manquante pour la stratégie de transformation définie. | |
requestValidation.validationError | La validation de la demande a échoué. | Validation de la demande |
usagePlans.requestPermitted | 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 une habilitation de plan d'utilisation a été dépassé. | |
usagePlans.eligibleNotEntitled | Le déploiement d'API n'est pas la cible d'une habilitation dans un plan d'utilisation, même si la spécification de déploiement d'API inclut une stratégie de demande de plan d'utilisation qui spécifie un jeton client. | |
dynamicRouting.backendMatched | La demande correspondait à une règle back-end et a été acheminée vers le back-end associé. | Routage back-end dynamique |
dynamicRouting.backendRejected | La demande a échoué car la demande ne correspondait pas à une règle back-end et aucune règle par défaut n'a été définie. | |
dynamicRouting.defaultBackendMatched | La demande ne correspondait pas à une règle back-end. Elle a donc été acheminée vers le back-end associé à la règle par défaut. | |
dynamicAuthentication.defaultAuthenticationServerMatched | La valeur de 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é afin d'être utilisé pour l'authentification. | Sélection du serveur d'authentification dynamique |
dynamicAuthentication.authenticationServerMatched | La valeur de variable de contexte sélectionnée correspond à l'une des règles du serveur d'authentification. | |
dynamicAuthentication.noAuthenticationServerMatched | La valeur de 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 | La variable de contexte sélectionnée était request.auth[claimName], mais aucun jeton JWT n'a été envoyé avec la demande. | |
dynamicAuthentication.jwtTokenInvalid | 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 | La stratégie d'échec de validation n'est pas un type défini. | Authentification basée sur les demandes |
Exemples de journaux d'exécution
- Type : Demande
- Scénario : détection de boucle de demande
- Description : une condition de boucle de demande a été détectée. Les demandes de la passerelle sont alors redirigées vers celle-ci, créant ainsi 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", }