現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください。 情報
内容
Apigee Adapter for Envoy を介して Envoy プロキシを呼び出すと、HTTP 403 Forbidden
エラーで失敗する。
エラー メッセージ
次のエラー メッセージが表示されます。
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
考えられる原因
次のいずれかの条件が発生すると、Envoy プロキシは HTTP 403
エラーを発行します。
原因 | 説明 | トラブルシューティングの実施対象 |
---|---|---|
API プロダクトが有効になっていない | 特定の環境で API プロダクトが有効になっていません。 | Edge Public Cloud ユーザーと Private Cloud ユーザー |
API プロダクトにターゲット サービスの URI パスがありません | ターゲット サービスの URI パスがないか、API リソースの下の API プロダクトに追加されていません。 | Edge Public Cloud ユーザーと Private Cloud ユーザー |
API プロダクトにホスト名がありません | クライアント API リクエストで指定されたホスト名が、Apigee リモート サービス ターゲットの API プロダクトにありません。 | Edge Public Cloud ユーザーと Private Cloud ユーザー |
リクエスト ヘッダーに API キーがない | API キーは x-api-key HTTP ヘッダーで渡されません。 |
Edge Public Cloud ユーザーと Private Cloud ユーザー |
無効な API キー | リクエストで渡された API キーが無効です。 | Edge Public Cloud ユーザーと Private Cloud ユーザー |
Apigee Adapter for Envoy がリモート サービスの API プロキシと通信できない | Apigee Adapter for Envoy がリモート サービス API プロキシと通信できません。 | Edge Public Cloud ユーザーと Private Cloud ユーザー |
Envoy プロキシが Apigee Adapter for Envoy と通信できない | Envoy プロキシが Apigee Adapter for Envoy と通信できない | Edge Public Cloud ユーザーと Private Cloud ユーザー |
始める前に
- Envoy プロキシから
403 Forbidden
レスポンス メッセージを取得していることを確認します。次に例を示します。curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
デバッグログを有効にします。
エラーの詳細をキャプチャするために、Apigee Adapter for Envoy でデバッグログが有効になっていることを確認してください。まだの場合は、次のコマンドを使用して Apigee Adapter for Envoy を停止してから再起動し、デバッグログを有効にします。
apigee-remote-service-envoy -c config.yaml -l debug
原因: API プロダクトが有効になっていない
このエラーは、API 呼び出しが呼び出される特定の環境で、Envoy プロキシで使用される特定の API プロダクトが有効になっていない場合に発生します。
診断
次の手順で問題を診断します。
- 上記の手順 2 の説明に沿って、デバッグログを有効にします。
- Apigee Adapter for Envoy のログを調べて、
Authorizing request
セクションに次のメッセージが表示されていることを確認します。product: API_PRODUCT_NAME not found
デバッグログ出力の例:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
上記の例は、API プロダクト
ENVOY-PRODUCT-1
が Apigee Adapter for Envoy で見つからないことを示しています。Apigee Adapter for Envoy ロギングの詳細については、ロギングをご覧ください。
- API リクエストの承認中にこのメッセージが表示される場合は、API 呼び出しを行っている特定の環境で、その API プロダクトが有効になっていない可能性があります。
- これを確認するには、次の手順を行います。
- Edge UI にログインします。
- [Publish] > [API Products] ページで、Apigee Adapter for Envoy の構成に使用した API プロダクトをクリックします。
- API リクエストを行っている特定の環境が API プロダクトで有効になっていることを確認します。
- 特定の環境が API プロダクトで有効になっていない場合、それがこの問題の原因です。
- 特定の環境がすでに有効になっている場合は、 原因: API プロダクトにターゲット サービス URI パスがありませんに進みます。
解像度
API プロダクトで特定の環境が有効になっていない場合は、次の手順で問題を解決します。
- Edge UI にログインします。
- [Publish] > [API product] ページで、Apigee Adapter for Envoy の構成に使用した API プロダクトをクリックします。
- [API プロダクト] > [プロダクト名] ページで、[編集] をクリックします。
- 関連する環境のチェックボックスをオンにして、API リクエストを行う特定の環境を有効にします。
- [保存] をクリックします。
原因: API プロダクトにターゲット サービスの URI パスがありません
このエラーは、Envoy プロキシで使用される特定の API プロダクトでターゲットの URI パスが指定されていない場合に発生します。
診断
次の手順で問題を診断します。
- 上記の手順 2 の説明に沿って、デバッグログを有効にします。
-
Apigee Adapter for Envoy ログをチェックし、
Authorizing request
セクションの特定のターゲットに関連付けられている特定の API プロダクトについて、次のメッセージが表示されていることを確認します。no path: REQUEST_URI_PATH
デバッグログ出力の例:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
出力例に次のメッセージが表示されます。
no path: /echo1
これは、パス
/echo1
が API プロダクトENVOY-PRODUCT-1
で見つからなかったことを示します。 - Apigee Adapter for Envoy デバッグログに「
no path: REQUEST_URI_PATH
」というメッセージが表示された場合は、それがこの問題の原因です。ない場合は、原因: API プロダクトにホスト名がないをご覧ください。
解像度
特定のリクエスト URI が特定のターゲットの API プロダクトに追加されていない場合は、次の手順で問題を解決します。
- Edge UI にログインします。
- [Publish] > [API Products] ページで、Apigee Adapter for Envoy の構成に使用した API プロダクトをクリックします。
- [API プロダクト] > [プロダクト名] ページで、[編集] をクリックします。
- [API resources] ペインで、API リクエスト URI を API プロダクトに追加します。
- Apigee Adapter for Envoy ログをモニタリングし、Apigee Adapter for Envoy が更新された API プロダクトを取得するまで待ちます。その後、別の API リクエストを送信して修正を確認します。
原因: API プロダクトにホスト名がありません
このエラーは、Envoy プロキシで使用される特定の API プロダクトに、ターゲット ホスト名とポートの組み合わせが追加されていない場合に発生します。
診断
次の手順で問題を診断します。
- 上記の手順 2 の説明に沿って、デバッグログを有効にします。
Apigee Adapter for Envoy ログをチェックし、
Authorizing request
セクションの特定のターゲットに関連付けられている特定の API プロダクトについて、次のメッセージが表示されていることを確認します。no targets: HOSTNAME:PORT
デバッグログ出力の例:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
上記の例は、ホスト名とポートの組み合わせ
httpbin1:8080
が API プロダクトENVOY-PRODUCT-1
で見つからなかったことを示しています。- リクエストの承認中に「
no targets: HOSTNAME:PORT
」というメッセージを含むエントリが Apigee Adapter for Envoy ログに含まれている場合は、これが問題の原因です。ない場合は、原因: リクエスト ヘッダーに API キーがないをご覧ください。
解像度
ターゲット ホスト名とポートの組み合わせが API プロダクトに追加されていない場合は、次の手順で問題を解決します。
- Edge UI にログインします。
- [Publish] > [API Products] ページで、Apigee Adapter for Envoy の構成に使用した API プロダクトをクリックします。
- [API プロダクト] > [プロダクト名] ページで、[編集] をクリックします。
[Apigee リモート サービス ターゲット] ペインで、ターゲットのホスト名とポートを追加し、[Save] をクリックします。
UI に [Apigee リモート サービス ターゲット] セクションが表示されない場合は、Edge API を使用して、
apigee-remote-service-targets
という名前のカスタム属性を API プロダクトに追加し、HOSTNAME:PORT 値を追加します。例:curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }
- 上記のタスクが完了したら、Apigee Adapter for Envoy ログをモニタリングし、Apigee Adapter for Envoy が更新された API プロダクトを取得するまで待ちます。その後、別の API リクエストを送信して修正を検証します。
原因: リクエスト ヘッダーに API キーがありません
このエラーは、API キーがリクエスト ヘッダーの一部として渡されていない場合に発生します。
診断
次の手順で問題を診断します。
- 上記の手順 2 の説明に沿って、デバッグログを有効にします。
- Apigee Adapter for Envoy ログで、
Authenticate error
セクションに[missing authentication]
メッセージが表示されていることを確認します。デバッグログ出力の例:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
上記のサンプル出力にはメッセージ
[missing authentication]
が含まれています。このメッセージは、API キーがリクエスト ヘッダーの一部として渡されていないことを示します。 - Apigee Adapter for Envoy ログの
Authenticate error
セクションに「[missing authentication]
」というログエントリが含まれている場合、これが問題の原因です。そうでない場合は、原因: 無効な API キーに進みます。
解像度
Apigee Adapter for Envoy ログにエラー [missing authentication]
が表示されている場合は、次の手順で問題を解決します。
- クライアントが API リクエストの HTTP ヘッダー
x-api-key
を使用して API キーを送信したかどうかを確認します。そうでない場合、HTTP ヘッダーx-api-key
で API キーを送信するようクライアントにリクエストします。 - Apigee Adapter for Envoy 構成ファイルを確認し、デフォルトの API キーヘッダー名
x-api-key
が変更されていることを確認します。次に例を示します。apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
上記の例では、デフォルトの API キーヘッダー名が
api-key
に変更されています。この場合は、ヘッダーapi-key
の一部として API キーを渡す必要があります。 - デフォルトの API キーヘッダー名が変更された場合は、更新された API キーヘッダー名を使用してクライアントにリクエストし、別の API リクエストを送信して問題が解決するかどうかを確認します。
原因: API キーが無効です
このエラーは、リクエスト ヘッダーの一部として無効な API キーが渡された場合に発生します。
診断
次の手順で問題を診断します。
- 上記の手順 2 の説明に沿って、デバッグログを有効にします。
- Apigee Adapter for Envoy ログを調べて、
Authenticate error
セクションに[permission denied]
というメッセージが表示されていることを確認します。これは通常、アダプターが API キーを取得した後に表示されます。メッセージfetchToken fetching: API_KEY
で示されます。デバッグログ出力の例:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
この例では、API リクエストで送信された API キーは有効ではありませんでした。
- Apigee Adapter for Envoy ログの
Authenticate error
セクションに[permission denied]
を含むログエントリが含まれている場合、リクエストの一部として渡された API キーが無効であり、これが問題の原因であることを示しています。できない場合は、原因: Apigee Adapter for Envoy がリモート サービスの API プロキシと通信できないをご覧ください。
解像度
Apigee Adapter for Envoy ログの Authenticate
error
セクションに「[permission denied]
」というメッセージが表示される場合は、次の手順で問題を解決します。
- API リクエストで送信された API キーと、API プロダクトに接続されているアプリケーション内の API キー値を確認します。
- クライアントで使用されている API キーが有効でない場合は、有効な API キーを送信するようクライアントに依頼します。
- クライアントで使用されている API キーが有効であるにもかかわらず、HTTP
403
エラーが表示される場合は、Apigee Edge サポートに連絡して調査を依頼してください。
原因: Apigee Adapter for Envoy がリモート サービス API プロキシと通信できない
このエラーは、構成されたリモート サービス ホストが無効な場合に、Apigee Adapter for Envoy がリモート サービス API プロキシと通信できない場合に発生します。
診断
次の手順で問題を診断します。
- 上記の手順 2 の説明に沿って、デバッグログを有効にします。
-
Apigee Adapter for Envoy のログを調べて、次のメッセージが表示されていることを確認します。
Error retrieving products: REQUEST_URI: no such host
デバッグログ出力の例:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
この例では、リモート サーバーの API プロキシ URL で指定されたホスト名が有効でないため、Apigee Adapter for Envoy がリモート サービス API プロキシと通信できませんでした(エラー
no such host
で示されています)。 - Apigee Adapter for Envoy ログに
no such host
というメッセージを含むログエントリが含まれている場合、これが問題の原因です。できない場合は、 原因: Envoy プロキシが Apigee Adapter for Envoy と通信できないをご覧ください。
解像度
上記のエラーが Apigee Adapter for Envoy ログに表示された場合は、次の手順で問題を解決します。
Apigee Adapter for Envoy 構成ファイルを確認し、指定したリモート サービスの API プロキシ URL が有効であることを確認します。
有効になっていない場合は、Apigee Adapter for Envoy を停止し、構成ファイルでリモート サービスの API プロキシ URL を修正します。Apigee Adapter for Envoy を起動して別の API リクエストを送信し、修正を確認します。
構成の例:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET
- 関連する Edge 環境に
remote-service
API プロキシがデプロイされていることを確認します。存在しない場合は、関連する Edge 環境にremote-service
API プロキシをデプロイしてから、もう一度お試しください。 - Apigee Adapter for Envoy と
remote-service
API プロキシ エンドポイント間のネットワーク接続を確認します。ネットワーク接続の問題が見つかった場合は、ネットワーク チームに連絡して問題の解決を試みてください。
原因: Envoy プロキシが Apigee Adapter for Envoy と通信できない
診断
次の手順で問題を診断します。
Envoy でデバッグログが有効になっていることを確認します。まだの場合は、Envoy を停止して再起動し、デバッグログを有効にします。その後、別の API リクエストを送信します。
スタンドアロン デプロイ:
envoy -c envoy-config.yaml -l debug
Kubernetes/Istio ベースのデプロイ:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Apigee Adapter for Envoy ログを調べて、次のメッセージを含むログエントリがあることを確認します。
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
その後に、次のようになります。
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
デバッグログ出力の例:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
上記の例は、
connection failure
が原因で Envoy が Apigee Adapter for Envoy と通信できなかったことを示しています。 connection failure
の原因はいくつか考えられます。それぞれのシナリオを見ていきましょう。
シナリオ 1: アダプタ プロセスが実行されていない
Apigee Adapter for Envoy プロセスが実行されていない場合、このエラーが発生する可能性があります。
- 次のコマンドを実行して、Apigee Adapter for Envoy プロセスが実行されていることを確認します。Apigee Adapter for Envoy プロセスが実行されている場合は、次のコマンドの結果にそのプロセスが表示されます。
ps -ef | grep apigee-remote-service-envoy
- 実行されていない場合は、これが問題の原因です。
解像度
- Apigee Adapter for Envoy プロセスが実行されていない場合は、Apigee Adapter for Envoy を起動します。
- もう一度 API リクエストを行い、問題が解決したかどうかを確認します。
シナリオ 2: アダプタ プロセスが特定のポートでリッスンしない
Apigee Adapter for Envoy プロセスが特定のポートでリッスンしていない場合、このエラーが発生する可能性があります。
Apigee Adapter for Envoy プロセスが実行されている場合は、ポート 5000 でリッスンするソケット APIGEE_ENVOY_ADAPTER_HOST:5000
があることを確認します。これを確認するには、netstat
コマンドを実行します。
sudo netstat -lnp | grep 5000
出力例:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
ポート 5000 でリッスンしているソケットがない場合、これが問題の原因である可能性があります。
解像度
- Apigee Adapter for Envoy を停止して再起動します。
- もう一度 API リクエストを行い、問題が解決したかどうかを確認します。
シナリオ 3: Envoy と Apigee Adapter for Envoy の間のネットワーク接続
- Envoy と Apigee Adapter for Envoy の間のネットワーク接続を確認します。
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
telnet から Apigee Adapter for Envoy への TCP 接続が確立されている場合は、次のような出力が表示されます。
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- telnet で
Connection timed out
エラーが表示された場合は、Envoy と Apigee Adapter for Envoy の間にネットワーク接続の問題があることを示します。
解像度
Envoy と Apigee Adapter for Envoy の間にネットワーク接続の問題が発生した場合は、ネットワーク チームにお問い合わせのうえ、問題の解決をお試しください。
問題が解決しない場合は、診断情報の収集が必要な場合に進みます。
診断情報の収集が必要な場合
上記の手順を行っても問題が解決しない場合は、次の診断情報を収集して Apigee Edge サポートに連絡してください。
-
使用する Apigee プロダクト:
例: Apigee Edge Cloud、Apigee OPDK、Apigee ハイブリッド、Apigee X
- Apigee の組織と環境
Edge API を使用した API プロダクト定義の読み取り:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
リファレンス: Apigee Edge API
Apigee Edge UI を使用して、
remote-service
API プロキシでトレース セッションを開始します。この問題を再現し、トレース セッションの XML ファイルを共有してください。リファレンス: Trace ツールの使用 | Apigee Edge
Apigee Adapter for Envoy ログ(特定の期間に関連する完全なログ)
スタンドアロン デプロイ:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Kubernetes/Istio ベースのデプロイ:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
curl
コマンドを使用して Envoy プロキシに送信された API リクエスト(curl
コマンドの完全な出力):curl -v ENVOY_PROXY_ENDPOINT
curl
コマンドを使用してターゲット サービスに送信された API リクエスト(curl
コマンドの完全な出力):curl -v TARGET_SERVICE_ENDPOINT