您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
問題
透過 Apigee Adapter for Envoy 叫用時,Envoy Proxy 會失敗並顯示 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 Proxy 會引發 HTTP 403 錯誤:
| 原因 | 說明 | 適用於以下裝置的疑難排解說明 |
|---|---|---|
| 未啟用 API 產品 | 特定環境未啟用 API 產品。 | Edge 公有和私有雲使用者 |
| API 產品缺少目標服務 URI 路徑 | 目標服務的 URI 路徑遺失,或未新增至 API 資源下的 API 產品。 | Edge 公有和私有雲使用者 |
| API 產品缺少主機名稱 | Apigee 遠端服務目標下的 API 產品缺少用戶端 API 要求中提供的主機名稱。 | Edge 公有和私有雲使用者 |
| 要求標頭中缺少 API 金鑰 | API 金鑰未在 x-api-key HTTP 標頭中傳遞。 |
Edge 公有和私有雲使用者 |
| API 金鑰無效 | 要求中傳送的 API 金鑰無效。 | Edge 公有和私有雲使用者 |
| Apigee Adapter for Envoy 無法與遠端服務 API Proxy 通訊 | Apigee Adapter for Envoy 無法與遠端服務 API Proxy 通訊。 | Edge 公有和私有雲使用者 |
| Envoy Proxy 無法與 Apigee Adapter for Envoy 通訊 | Envoy Proxy 無法與 Apigee Adapter for Envoy 通訊 | Edge 公有和私有雲使用者 |
事前準備
- 確認您從 Envoy Proxy 收到
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 產品未啟用
如果 Envoy Proxy 使用的特定 API 產品,在叫用 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
上述範例顯示 Apigee Adapter for Envoy 中找不到 API 產品
ENVOY-PRODUCT-1。如要進一步瞭解 Apigee Adapter for Envoy 記錄功能,請參閱「記錄」。
- 如果在授權 API 要求時看到這則訊息,表示您很可能未在進行 API 呼叫的特定環境中啟用特定 API 產品。
- 請按照下列步驟確認:
- 登入 Edge 使用者介面。
- 在「發布」>「API 產品」頁面中,點選用於設定 Apigee Adapter for Envoy 的特定 API 產品。
- 確認您發出 API 要求的特定環境已在 API 產品中啟用。
- 如果 API 產品未啟用特定環境,就是造成這個問題的原因。
- 如果已啟用特定環境,請參閱「 原因:API 產品中缺少目標服務 URI 路徑」。
解析度
如果 API 產品未啟用特定環境,請按照下列步驟解決問題:
- 登入 Edge UI。
- 在「發布」>「API 產品」頁面中,點選您用於設定 Apigee Adapter for Envoy 的特定 API 產品。
- 在「API 產品」>「產品名稱」頁面上,按一下「編輯」。
- 選取相關環境的核取方塊,啟用要發出 API 要求的特定環境。
- 按一下 [儲存]。
原因:API 產品缺少目標服務 URI 路徑
如果 Envoy Proxy 使用的特定 API 產品未指定目標的 URI 路徑,就會發生這個錯誤。
診斷
請按照下列步驟診斷問題:
- 按照上述步驟 2 的說明啟用偵錯記錄。
-
檢查 Apigee Adapter for Envoy 記錄,確認特定 API 產品的下列訊息顯示在
Authorizing request區段下方: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
這表示 API 產品中找不到路徑
/echo1。ENVOY-PRODUCT-1 - 如果在 Apigee Adapter for Envoy 偵錯記錄中看到
no path: REQUEST_URI_PATH訊息,表示這是造成問題的原因。如果不是,請參閱「原因:API 產品中缺少主機名稱」。
解析度
如果特定要求 URI 未新增至特定目標的 API 產品,請按照下列步驟解決問題:
- 登入 Edge UI。
- 在「發布」>「API 產品」頁面中,點選用於設定 Apigee Adapter for Envoy 的特定 API 產品。
- 在「API 產品」>「產品名稱」頁面上,按一下「編輯」。
- 在「API 資源」窗格中,將 API 要求 URI 新增至 API 產品。
- 監控 Apigee Adapter for Envoy 記錄,並等待 Apigee Adapter for Envoy 擷取更新後的 API 產品。然後傳送另一項 API 要求,確認修正內容。
原因:API 產品中缺少主機名稱
如果目標主機名稱和通訊埠組合未新增至 Envoy Proxy 使用的特定 API 產品,就會發生這個錯誤。
診斷
請按照下列步驟診斷問題:
- 按照上述步驟 2 的說明啟用偵錯記錄。
檢查 Apigee Adapter for Envoy 記錄,並確認特定 API 產品的下列訊息顯示在
Authorizing request區段下方: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)
上述範例顯示,API 產品
ENVOY-PRODUCT-1中找不到主機名稱和連接埠組合httpbin1:8080。- 如果 Apigee Adapter for Envoy 記錄在授權要求時,包含訊息為
no targets: HOSTNAME:PORT的項目,這就是問題的原因。如果不是,請參閱「原因:要求標頭中缺少 API 金鑰」。
解析度
如果目標主機名稱和通訊埠組合未新增至 API 產品,請按照下列步驟解決問題:
- 登入 Edge UI。
- 在「發布」>「API 產品」頁面中,點選用於設定 Apigee Adapter for Envoy 的特定 API 產品。
- 在「API 產品」>「產品名稱」頁面上,按一下「編輯」。
在「Apigee remote service targets」(Apigee 遠端服務目標) 窗格中,新增目標主機名稱和通訊埠,然後按一下「Save」(儲存)。
如果 UI 中未顯示「Apigee 遠端服務目標」部分,請使用 Edge API,為 API 產品新增名稱為
apigee-remote-service-targets的自訂屬性,並加入 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 記錄包含訊息為
[missing authentication]的記錄項目 (位於Authenticate error區段下方),這就是問題的原因。如果不是,請參閱「原因:API 金鑰無效」。
解析度
如果 Apigee Adapter for Envoy 記錄中顯示 [missing authentication] 錯誤,請按照下列步驟解決問題:
- 檢查用戶端是否在 API 要求中使用 HTTP 標頭
x-api-key傳送 API 金鑰。如果沒有,請要求用戶端在 HTTP 標頭中傳送 API 金鑰x-api-key。 - 檢查 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 金鑰做為標頭api-key的一部分傳遞。 - 如果預設 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 無法與 remote-service API Proxy 通訊」。
解析度
如果在 Apigee Adapter for Envoy 記錄的「Authenticate
error 」部分看到 [permission denied] 訊息,請按照下列步驟解決問題:
- 比對 API 要求中傳送的 API 金鑰,以及連結至 API 產品的應用程式中找到的 API 金鑰值。
- 如果用戶端使用的 API 金鑰無效,請要求用戶端傳送有效的 API 金鑰。
- 如果用戶端使用的 API 金鑰有效,但您仍看到 HTTP
403錯誤,請與 Apigee Edge 支援團隊聯絡,以便進一步調查。
原因:Apigee Adapter for Envoy 無法與遠端服務 API Proxy 通訊
如果設定的遠端服務主機無效,Apigee Adapter for Envoy 無法與遠端服務 API Proxy 通訊,就會發生這項錯誤。
診斷
請按照下列步驟診斷問題:
- 按照上述步驟 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
在本例中,Apigee Adapter for Envoy 無法與 remote-service API Proxy 通訊,因為 remote server API Proxy URL 中提供的主機名稱無效 (如
no such host錯誤所示)。 - 如果 Apigee Adapter for Envoy 記錄檔含有訊息為
no such host的記錄項目,則表示這是問題的原因。如果不是,請參閱「 原因:Envoy Proxy 無法與 Apigee Adapter for Envoy 通訊」。
解析度
如果 Apigee Adapter for Envoy 記錄中顯示上述錯誤,請按照下列步驟解決問題:
檢查 Apigee Adapter for Envoy 設定檔,確認指定的 remote-service API Proxy 網址有效。
如果沒有,請停止 Apigee Adapter for Envoy,修正設定檔中的遠端服務 API Proxy 網址,啟動 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- 確認
remote-serviceAPI Proxy 已部署在相關的 Edge 環境中。如果沒有,請在相關 Edge 環境中部署remote-serviceAPI Proxy,然後再試一次。 - 確認 Apigee Adapter for Envoy 與
remote-serviceAPI Proxy 端點之間的網路連線。如果發現任何網路連線問題,請與網路團隊聯絡,嘗試解決問題。
原因:Envoy Proxy 無法與 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 Hybrid、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-serviceAPI Proxy 中啟動追蹤工作階段。重現這個問題,並分享追蹤工作階段 XML 檔案。參考資料: 使用追蹤工具 | 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 Proxy 的 API 要求 (curl指令的完整輸出內容):curl -v ENVOY_PROXY_ENDPOINT
- 使用
curl指令傳送至目標服務的 API 要求 (curl指令的完整輸出內容):curl -v TARGET_SERVICE_ENDPOINT