APIゲートウェイの詳細

APIゲートウェイ・ログのロギング詳細。

リソース

  • APIデプロイメント

ログ・カテゴリ

API値(ID): コンソール(表示名) 説明
Access アクセス・ログ APIデプロイメントのアクセス・ログ。
Execution 実行ログ APIデプロイメントの実行ログ。

可用性

APIゲートウェイのアクセス/実行ロギングは、商用レルムのすべてのリージョンで使用できます。

APIデプロイメントのアクセス・ログ

APIデプロイメントのアクセス・ログには、APIゲートウェイを通過するすべてのリクエストおよびレスポンスのサマリーが記録され、APIデプロイメント上のルートと一致します。各アクセス・ログ・エントリには、リクエストおよびレスポンスに関する情報(リクエストの受信時間、サーバー・プロトコル、レスポンス・ステータスなど)が含まれます。フィールドの完全なリストは、アクセス・ログの内容を参照してください。

アクセス・ログの内容

アクセス・ログは、「ログ・データ」フィールドに値として表示されます。この値は、次のフィールドを含むJSON形式のデータです:

フィールド 説明
httpMethod GET リクエスト行から導出されたHTTPメソッド。
requestUri /example/ リクエスト行から導出されたリクエストURI。
serverProtocol HTTP/1.1 リクエスト行から導出されたHTTPプロトコル。
bodyBytesSent 45 クライアントに送信されたレスポンスの合計サイズ(バイト単位)。
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> リクエストを処理するAPIデプロイメントのAPIゲートウェイのOCID。
httpUserAgent Apache-HttpClient/4.5.9 (Java/1.8.0_252) リクエストのHTTPユーザー・エージェント。
message GET /example/ HTTP/1.1 クライアントから受信されたリクエスト行。
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

opc-request-id HTTPヘッダーの値、または内部生成されたリクエストID (リクエストで何も指定されていない場合)。
remoteAddr 138.1.55.172 リクエストしているクライアントのIPアドレス。
httpReferrer https://www.example.com 参照元のURL (存在する場合)。
requestDuration 0.016 ゲートウェイがクライアントからのリクエストの受信を開始したときから、クライアントへのレスポンスの送信を完了するまでにかかった合計時間(ミリ秒精度の秒単位)。
status 404 ゲートウェイからのレスポンスのステータス・コード。

サンプル・アクセス・ログ

{
    "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
  }

APIデプロイメントの実行ログ

APIデプロイメントの実行ログには、個々のルートのAPIゲートウェイ内での処理に関する情報が記録され、トラブルシューティングおよびモニタリングに役立ちます。各実行ログ・エントリには、リクエストの受信時間、ログ・メッセージの重大度を示すレベル、メッセージ・コードなどの情報が含まれます。フィールドの完全なリストは、実行ログの内容を参照してください。

実行ログの内容

デフォルトでは、ログ・レベルの情報が有効になっています。この値は、次のフィールドを含むJSON形式のデータです:

フィールド 説明
code request.loopDetected リクエストの実行中に発生したロギング・イベントの短縮コード。メッセージ・コードの完全なリストは、「ログ・コード」表のログ・コードを参照してください。
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> リクエストを処理するAPIデプロイメントのAPIゲートウェイのOCID。
functionId ocid1.fnfunc.oc1.iad.<unique_ID> APIゲートウェイが呼び出したファンクションのOCID。このフィールドは、ファンクション・バックエンド専用です。
level WARN 実行ログ・エントリのログ・レベル(INFO、WARNまたはERROR)。
message A request loop has been detected - requests for this gateway are being directed back to this gateway. リクエストの処理中に発行された実行メッセージ。
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

opc-request-id HTTPヘッダーの値、または内部生成されたリクエストID (リクエストで何も指定されていない場合)。
configuredLimit 5 configuredUnitごとに許可するリクエストの数。レート制限または割当て制限のいずれか。
configuredUnit configuredLimitで指定されたリクエスト数を許可する期間。レート制限の場合は、"SECOND"。割当ての場合は、"MINUTE"、"DAY"、"HOUR"、"WEEK"または"MONTH"です。
entitlementName Entitlement1 APIデプロイメントへのアクセスにリクエストが使用している資格の名前。
limitingKey <timestamp>/ocid1.apigatewayusageplan.oc1.iad.<unique_ID>/<entitlement-name>/ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> レート制限および割当て制限の使用量を計算するには、同じキーを持つリクエストがまとめてカウントされます。
limitingResourceId ocid1.apigatewayusageplan.oc1.iad.<unique_ID> APIデプロイメントへのアクセスに使用される使用計画のOCID。
limitingResourceName ゴールド-使用-計画 APIデプロイメントへのアクセスに使用される使用計画の名前。
secretId ocid1.secret.oc1.iad.<unique_ID> APIゲートウェイが取得しようとしているボールト・シークレットのOCID。
secretVersion 1 APIゲートウェイが取得しようとしているボールト・シークレットのバージョン番号。
subscriberId ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> サブスクライバのOCID。
subscriberName プレミアム購読者 サブスクライバの表示名。

ログ・コード

ログ・コード 説明
authentication.idpCallFailed OAuth2アイデンティティ・プロバイダのコール中にエラーが発生しました。
authentication.idpCallSuccess OAuth2アイデンティティ・プロバイダを正常にコールしました。
authentication.idpTokenExpiryNonNumeric OAuth2アイデンティティ・プロバイダが有効な有効期限を返しませんでした。
authentication.validationFailurePolicyOAuth OAuth2検証失敗ポリシーがトリガーされました。
authentication.validationFailurePolicyOAuthStepFailed OAuth2検証失敗ポリシー・ステップの実行中にエラーが発生しました。
authorization.unauthorizedRequest リクエストの認可に失敗しました。
customAuthentication.authenticationFailed カスタム認証に失敗しました。
customAuthentication.cacheMiss カスタム認可プロバイダ・レスポンスがキャッシュに見つかりませんでした。
customAuthentication.failedFunctionInvocation Oracle Functionの呼出しに失敗しました。
customAuthentication.successfulAuthentication カスタム認証に成功しました。
customAuthentication.successfulFunctionInvocation Oracle Functionの呼出しに成功しました。
customAuthentication.unexpectedResponse Oracle Functionからの予期しないレスポンス。
dynamicAuthentication.authenticationServerMatched 選択したコンテキスト変数値が認証サーバー・ルールの1つと一致しました。
dynamicAuthentication.defaultAuthenticationServerMatched 選択したコンテキスト変数値はどの認証サーバー・ルールとも一致しませんでしたが、認証に使用されたデフォルトの認証サーバーが指定されています。
dynamicAuthentication.jwtTokenInvalid 選択したコンテキスト変数はrequest.auth[claimName]でしたが、リクエストとともに無効なJWTトークンが送信されました。
dynamicAuthentication.jwtTokenNotFound 選択したコンテキスト変数はrequest.auth[claimName]でしたが、JWTトークンがリクエストとともに送信されませんでした。
dynamicAuthentication.noAuthenticationServerMatched 選択したコンテキスト変数の値が認証サーバー・ルールのいずれにも一致せず、デフォルトの認証サーバーが指定されていません。
dynamicRouting.backendMatched リクエストはバックエンド・ルールに一致し、関連付けられたバックエンドにルーティングされました。
dynamicRouting.backendRejected リクエストがバックエンド・ルールと一致せず、デフォルト・ルールが定義されていないため、リクエストは失敗しました。
dynamicRouting.defaultBackendMatched リクエストがバックエンド・ルールと一致しなかったため、デフォルト・ルールに関連付けられたバックエンドにルーティングされました。
functionBackend.badGateway OCI Functionsでファンクションを呼び出すときに「不正なゲートウェイ」を受信しました
functionBackend.badRequestHeaderValue リクエスト・ヘッダーの不正な値。
functionBackend.badRequestHeaders 不正なリクエスト・ヘッダーです。
functionBackend.badResponse 関数が障害のある応答を返しました。これは、関数からの不適切な形式の応答を示します。
functionBackend.internalServiceError OCI関数で関数を呼び出すときに内部サービス・エラーが発生しました
functionBackend.notFoundOrNotAuthorized OCI Functionsサービスからの404のため、OCI Functionsでのファンクションの呼出しに失敗しました。
functionBackend.rateLimited OCI関数で関数を呼び出すときに制限されるレート
functionBackend.serviceUnavailable OCI Functionsサービスは使用できません。
functionBackend.successfulRequest OCI関数での関数の正常な起動
functionBackend.timeout OCI関数での関数の起動がタイムアウトしました。
headerTransformation.badHeaderValue リクエスト・ヘッダーの不正な値。
headerTransformation.missingSetValues セット変換ポリシーの値がありません。
headerTransformation.protectedHeaderTransformed ポリシーは保護されたヘッダーを変換しようとしました。
httpBackend.formedBackendUrl HTTPバックエンドURLは、コンテキスト変数を使用して動的に形成されました。
httpBackend.requestError HTTPバックエンドへのリクエスト中にエラーが発生しました。
httpBackend.requestSent HTTPバックエンドに送信されたリクエスト。
httpBackend.responseBodyError HTTPバックエンドからのレスポンス本文の読取り中にエラーが発生しました。
httpBackend.responseReceived HTTPバックエンドから受信されたレスポンス。
httpBackend.urlInvalid HTTPバックエンドURLが無効です。
jwtAuthentication.authenticationFailed JWT認証に失敗しました。
jwtAuthentication.badJsonWebKeySet JSON Webキー・セットが無効です。
jwtAuthentication.loadingJsonWebKeySet JSON Webキー・セットをロードしています。
jwtAuthentication.successfulAuthentication JWT認証に成功しました。
logoutBackend.invalidAuthentication ログアウト・パスが一致しません。
logoutBackend.logoutError OAuth2ログアウト・バックエンドでエラーが発生しました。
logoutBackend.redirectError ログアウト後のリダイレクトURLは許可されませんでした。
mutualTls.clientCertificateInvalid クライアント証明書がないか、無効です。
mutualTls.clientCertificateSanInvalid クライアント証明書に含まれるSANの検証に失敗しました。
queryParameterTransformation.badParameterValue リクエスト問合せパラメータの不正な値。
rateLimiting.requestDenied リクエストはレート制限ポリシーによって拒否されました。
rateLimiting.requestPermitted リクエストはレート制限ポリシーによって許可されました。
request.bodyTooLarge リクエスト本文が大きすぎます。
request.clientCertConversionFailed クライアント証明書を文字列値に変換できませんでした。
request.clientEof クライアント・エラーのため、リクエストを読み取れませんでした。
request.clientTimeout クライアントのタイムアウトのため、リクエストを読み取れませんでした。
request.internalServiceError 内部サービス・エラー。
request.loopDetected リクエスト・ループ条件が検出されました。ゲートウェイのリクエストはそれ自体にリダイレクトされ、循環が発生しています。
request.possibleLoopDetected リクエスト・ループ条件の可能性が検出されました。ゲートウェイのリクエストはそれ自体にリダイレクトされ、循環が発生しています。
request.serviceUnavailable ゲートウェイは現在リクエストを処理できません。
requestValidation.validationError リクエストは検証ポリシーに失敗しました。
requestValidation.validationPermitted リクエストは検証ポリシーに合格しました。
responseCache.backendResponseStorageAborted バックエンド・レスポンスがキャッシュに格納されませんでした。
responseCache.backendResponseStoredInCache バックエンド・レスポンスがキャッシュに格納されました。
responseCache.lookupAborted レスポンス・キャッシュは使用されませんでした。
responseCache.lookupResultNotFound キャッシュにレスポンスが見つかりませんでした。
responseCache.lookupResultSuccess キャッシュからレスポンスが読み取られました。
secretsClient.fetchFailure シークレット・サービスからのクライアント・シークレットのフェッチに失敗しました。
secretsClient.fetchSuccess シークレット・サービスからクライアント・シークレットを正常にフェッチしました。
secretsClient.unexpectedResponse クライアント・シークレットのフェッチ中にシークレット・サービスから予期しないレスポンスが発生しました。
tokenAuthentication.authenticationFailed トークン認証に失敗しました。
tokenAuthentication.badDiscoveryEndpointResponse リモート検出エンドポイント・レスポンスが無効です。
tokenAuthentication.badIntrospectionResponse トークン・イントロスペクション・レスポンスが無効です。
tokenAuthentication.badJsonWebKeySet JSON Webキー・セットが無効です。
tokenAuthentication.loadingDiscoveryEndpointResponse リモート検出ドキュメントをロードしています。
tokenAuthentication.loadingJsonWebKeySet JSON Webキー・セットをロードしています。
tokenAuthentication.successfulAuthentication トークン認証に成功しました。
UsagePlans.eligibleNotEntitle APIデプロイメント仕様には、クライアント・トークンを指定する使用状況プラン・リクエスト・ポリシーが含まれていても、APIデプロイメントはどの使用プランの資格のターゲットでもありません。
UsagePlans.requestBreachedが許可されました 使用計画資格で指定された最大リクエスト数を超えた場合でも、リクエストが許可されました。
UsagePlans.requestPermitted 使用計画サブスクライバからのリクエストが許可されました。
UsagePlans.request拒否済 使用計画サブスクライバからのリクエストが拒否されました。

サンプル実行ログ

  • タイプ: リクエスト
  • シナリオ: リクエスト・ループの検出
  • 説明: リクエスト・ループ条件が検出されました。ゲートウェイのリクエストはそれ自体にリダイレクトされ、循環が発生しています。
  • 例:
    {
        "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",
     }