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 (リクエストで何も指定されていない場合)。
functionCode FunctionInvokeSyslogUnavailable ファンクションのエラーを一意に定義するためにOCIファンクションによって提供されるコード。このフィールドは、ファンクション・バックエンド専用です。
functionMessage Syslog endpoint unavailable ファンクションのエラーを説明するためにOCIファンクションによって提供されたメッセージ。このフィールドは、ファンクション・バックエンド専用です。
functionStatusCode 502 OCI Functionsから返されたHTTPステータス・コード。このフィールドは、ファンクション・バックエンド専用です。
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デプロイメントへのアクセスに使用される使用計画の名前。

ログ・コード

ログ・コード 説明 関連機能
httpBackend.timeout HTTPバックエンドへのリクエストがタイムアウトしました。 HTTPバックエンド
httpBackend.dnsResolutionFailed HTTPバックエンドURLの解決に失敗しました。
httpBackend.sslHandshakeFailed HTTPバックエンドでSSLハンドシェイクに失敗しました。
httpBackend.successfulRequest HTTPバックエンドへのリクエストに成功しました。
httpBackend.responseReceived HTTPバックエンドから受信されたレスポンス。
httpBackend.requestSent HTTPバックエンドに送信されたリクエスト。
functionBackend.successfulRequest OCI Functionsでのファンクションの呼出しに成功しました。 OCI関数バックエンド
functionBackend.notFoundOrNotAuthorized OCI Functionsサービスからの404のため、OCI Functionsでのファンクションの呼出しに失敗しました。
functionBackend.rateLimited OCI Functionsでファンクションを呼び出す際のレート制限。
functionBackend.serviceUnavailable OCI Functionsサービスは使用できません。
functionBackend.badGateway OCI Functionsでファンクションを呼び出すときに「不正なゲートウェイ」を受信しました。
functionBackend.timeout OCIでの関数の呼出しが機能停止しました。
functionBackend.internalServiceError OCI Functionsでファンクションを呼び出すときに内部サービス・エラーが発生しました。
specification.badVariableReference コンテキスト変数を解決できませんでした。 実行時の不正な指定
specification.invalidAuthenticationPolicy 無効な認証ポリシー。
specification.badTransformationPolicy 不正な変換ポリシー。
specification.badHeaderTransformationPolicy 不正なヘッダー変換ポリシー。
specification.badQueryParameterTransformationPolicy 不正な問合せパラメータ変換ポリシー。
request.internalServiceError 内部サービス・エラー。 リクエスト処理
request.loopDetected リクエスト・ループ条件が検出されました。ゲートウェイのリクエストはそれ自体にリダイレクトされ、循環が発生しています。
request.possibleLoopDetected リクエスト・ループ条件の可能性が検出されました。ゲートウェイのリクエストはそれ自体にリダイレクトされ、循環が発生しています。
request.headersTruncated リクエスト・ヘッダーが切り捨てられました。
request.queryParametersTruncated リクエスト問合せパラメータが切り捨てられました。
authorization.unauthorizedRequest リクエストの認可に失敗しました。 リクエスト認可
authorization.scopeCheckFailed リクエストの範囲のチェックに失敗しました。
customAuthentication.successfulFunctionInvocation Oracle Functionの呼出しに成功しました。 カスタム認証
customAuthentication.failedFunctionInvocation Oracle Functionの呼出しに失敗しました。
customAuthentication.successfulAuthentication カスタム認証に成功しました。
customAuthentication.authenticationFailed カスタム認証に失敗しました。
customAuthentication.unexpectedResponse Oracle Functionからの予期しないレスポンス。
jwtAuthentication.successfulAuthentication JWT認証に成功しました。 JWT認証
jwtAuthentication.authenticationFailed JWT認証に失敗しました。
jwtAuthentication.badJsonWebKeySet JSON Webキー・セットが無効です。
jwtAuthentication.loadingJsonWebKeySet JSON Webキー・セットをロードしています。
headerTransformation.badHeaderValue リクエスト・ヘッダーの不正な値。 ヘッダー変換
headerTransformation.protectedHeaderTransformed ポリシーは保護されたヘッダーを変換しようとしました。
headerTransformation.protectedElementTransformed ポリシーは保護された要素を変換しようとしました。
headerTransformation.missingSetValues セット変換ポリシーの値がありません。
queryParameterTransformation.badParameterValue リクエスト問合せパラメータの不正な値。 問合せパラメータ変換
queryParameterTransformation.protectedElementTransformed ポリシーは保護された要素を変換しようとしました。
queryParameterTransformation.missingSetValues セット変換ポリシーの値がありません。
requestValidation.validationError リクエストは検証ポリシーに失敗しました。 リクエスト検証
UsagePlans.requestPermitted 使用計画サブスクライバからのリクエストが許可されました。 使用計画
UsagePlans.request拒否済 使用計画サブスクライバからのリクエストが拒否されました。
UsagePlans.requestBreachedが許可されました 使用計画資格で指定された最大リクエスト数を超えた場合でも、リクエストが許可されました。
UsagePlans.eligibleNotEntitle APIデプロイメント仕様には、クライアント・トークンを指定する使用状況プラン・リクエスト・ポリシーが含まれていても、APIデプロイメントはどの使用プランの資格のターゲットでもありません。
dynamicRouting.backendMatched リクエストはバックエンド・ルールに一致し、関連付けられたバックエンドにルーティングされました。 動的バックエンド・ルーティング
dynamicRouting.backendRejected リクエストがバックエンド・ルールと一致せず、デフォルト・ルールが定義されていないため、リクエストは失敗しました。
dynamicRouting.defaultBackendMatched リクエストがバックエンド・ルールと一致しなかったため、デフォルト・ルールに関連付けられたバックエンドにルーティングされました。
dynamicAuthentication.defaultAuthenticationServerMatched 選択したコンテキスト変数値はどの認証サーバー・ルールとも一致しませんでしたが、認証に使用されたデフォルトの認証サーバーが指定されています。 動的認証サーバーの選択
dynamicAuthentication.authenticationServerMatched 選択したコンテキスト変数値が認証サーバー・ルールの1つと一致しました。
dynamicAuthentication.noAuthenticationServerMatched 選択したコンテキスト変数の値が認証サーバー・ルールのいずれにも一致せず、デフォルトの認証サーバーが指定されていません。
dynamicAuthentication.jwtTokenNotFound 選択したコンテキスト変数はrequest.auth[claimName]でしたが、JWTトークンがリクエストとともに送信されませんでした。
dynamicAuthentication.jwtTokenInvalid 選択したコンテキスト変数はrequest.auth[claimName]でしたが、リクエストとともに無効なJWTトークンが送信されました。
authentication.validationFailurePolicyInvalid 検証失敗ポリシーが定義されたタイプではありません。 リクエストベース認証

サンプル実行ログ

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