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