查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
問題
叫用以下程式碼時,Envoy Proxy 發生 HTTP 403 Forbidden
錯誤失敗
Apigee Adapter for Envoy。
錯誤訊息
系統會顯示下列錯誤訊息:
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 產品。 | 邊緣公有雲和私有雲使用者 |
API 產品中缺少目標服務 URI 路徑 | 目標服務的 URI 路徑缺少或未新增至 API 的 API 產品 再複習一下,機構節點 是所有 Google Cloud Platform 資源的根節點 | 邊緣公有雲和私有雲使用者 |
API 產品中缺少主機名稱 | Apigee 中的 API 產品缺少用戶端 API 要求中指定的主機名稱 遠端服務目標 | 邊緣公有雲和私有雲使用者 |
要求標頭中缺少 API 金鑰 | API 金鑰不會透過 x-api-key HTTP 標頭傳遞。 |
邊緣公有雲和私有雲使用者 |
API 金鑰無效 | 從要求中傳遞的 API 金鑰無效。 | 邊緣公有雲和私有雲使用者 |
Apigee Adapter for Envoy 無法 與遠端服務 API Proxy 通訊 | Apigee Adapter for Envoy 無法與遠端服務 API Proxy 通訊。 | 邊緣公有雲和私有雲使用者 |
Envoy Proxy 無法通訊 搭配使用 Apigee Adapter for Envoy | Envoy Proxy 無法與 Envoy 適用的 Apigee Adapter 通訊 | 邊緣公有雲和私有雲使用者 |
事前準備
- 驗證是否收到
403 Forbidden
Envoy Proxy。例如: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
上例顯示,找不到 API 產品
ENVOY-PRODUCT-1
Envoy 專用 Apigee Adapter。如要進一步瞭解 Apigee Adapter for Envoy 記錄功能,請參閱 記錄。
- 如果您在授權 API 要求時看到這則訊息, 您無法在您所在的特定環境中啟用該 API 產品 發出 API 呼叫
- 請按照下列步驟確認無誤:
- 登入 Edge UI。
- 在 [發布] > [API 產品頁面,按一下您 用於設定 Envoy 的 Apigee Adapter
- 驗證您提出 API 要求的特定環境為 在 API 產品中啟用
- 如果 API 產品未啟用特定環境,就表示 。
- 如果特定環境已啟用,請前往 原因:API 產品中缺少目標服務 URI 路徑。
解析度
如未在 API 產品中啟用特定環境,請執行下列步驟, 解決問題:
- 登入 Edge UI。
- 在 [發布] > [API 產品頁面,按一下您目前使用的特定 API 產品。 來設定 Envoy 適用的 Apigee Adapter
- 在「API 產品」中 > 產品名稱,按一下編輯。
- 若要啟用要提出 API 要求的特定環境,請選取 選取相關的環境核取方塊
- 按一下 [儲存]。
原因:API 產品中缺少目標服務 URI 路徑
如未在所用特定 API 產品中指定目標的 URI 路徑,就會發生這個錯誤 透過 Envoy Proxy 執行
診斷
請按照下列步驟診斷問題:
- 按照上方步驟 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
。 - 如果
no path: REQUEST_URI_PATH
中 Apigee Adapter for Envoy 偵錯記錄檔,這就是造成這個問題的原因。如果沒有,請前往 原因:API 產品中缺少主機名稱。
解析度
如果沒有為特定要求 URI 加入特定目標的 API 產品, 請按照下列步驟解決問題:
- 登入 Edge UI。
- 在 [發布] > [API 產品頁面,按一下您 用於設定 Envoy 的 Apigee Adapter
- 在「API 產品」中 > 產品名稱,按一下編輯。
- 在「API 資源」窗格中,將 API 要求 URI 新增至 API 產品。
- 監控 Apigee Adapter for Envoy 記錄檔,並等待 Envoy 適用的 Apigee Adapter 擷取更新後的 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)
上述範例顯示主機名稱和通訊埠的組合
httpbin1:8080
在 API 產品ENVOY-PRODUCT-1
中找不到。- 如果 Apigee Adapter for Envoy 記錄包含在授權要求時含有
no targets: HOSTNAME:PORT
訊息的項目,則以下情形為 可能的原因。如果沒有,請前往 原因:要求標頭中缺少 API 金鑰。
解析度
如果目標主機名稱和通訊埠的組合未新增至 API 產品,請執行 請按照下列步驟解決問題:
- 登入 Edge UI。
- 在 [發布] > [API 產品頁面,按一下您 用於設定 Envoy 的 Apigee Adapter
- 在「API 產品」中 > 產品名稱,按一下編輯。
在「Apigee 遠端服務目標」窗格中,新增目標主機名稱並 通訊埠,然後按一下「儲存」。
如果 UI 中未顯示「Apigee 遠端服務目標」部分, 使用 將名稱設為
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 金鑰無效。
解析度
如果 [missing authentication]
錯誤顯示在
Apigee Adapter for Envoy 記錄檔,執行下列步驟以解決問題:
- 檢查用戶端是否已使用 HTTP 標頭
x-api-key
傳送 API 金鑰: 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 記錄檔,並確認您看到訊息
[permission denied]
就在Authenticate error
部分底下。 這個 ID 通常在轉接器擷取 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 金鑰無效,因此造成問題。 如果沒有,請前往 原因:Envoy 適用的 Apigee Adapter 無法與 Remote-服務 API Proxy 通訊。
解析度
如果在 Apigee Adapter for Envoy 記錄中的 Authenticate
error
部分偵測到 [permission denied]
訊息,請執行下列步驟,
以解決問題:
- 檢查 API 要求中傳送的 API 金鑰,並與 連結至 API 產品的應用程式。
- 如果用戶端使用的 API 金鑰無效,請要求用戶端傳送有效的 API 金鑰。
- 如果用戶端使用的 API 金鑰有效,且您仍看到
發生「
403
」錯誤,請與 Apigee Edge 支援團隊聯絡,進一步調查這個問題。
原因:Envoy 的 Apigee Adapter 無法與遠端服務 API Proxy 通訊
如果 Apigee Adapter for Envoy 無法與遠端通訊,就會發生這個錯誤 service 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,因為遠端伺服器 API Proxy 中提供的主機名稱 根據錯誤
no such host
的說明,網址無效。 - 如果 Apigee Adapter for Envoy 記錄檔包含的記錄項目含有
no such host
訊息,這就是問題的原因。如果沒有,請前往 原因:Envoy Proxy 無法與 Envoy 專用 Apigee Adapter 通訊。。
解析度
如果上述錯誤顯示在 Apigee Adapter for Envoy 記錄檔中,請執行下列步驟: 解決問題的步驟:
檢查 Apigee Adapter for Envoy 設定檔,並確認為 Remote-service API Proxy 網址有效。
如果不支援,請停止 Apigee Adapter for Envoy,請修正 設定檔、啟動 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-service
API Proxy 是否已部署至相關 Edge 中 環境。如果不支援,請在相關 Edge 中部署remote-service
API Proxy 然後再試一次。 - 驗證 Envoy 專用 Apigee Adapter 與
remote-service
API Proxy 端點。如果有網路連線 發現問題,請聯絡網路團隊並嘗試解決問題。
原因:Envoy Proxy 無法與 Envoy 專用 Apigee Adapter 通訊
診斷
請按照下列步驟診斷問題:
確認已在 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'
上述範例顯示 Envoy 無法與 原因為
connection failure
,因此 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 程序未執行,請啟動 Envoy 專用 Apigee Adapter。
- 再次發出 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 可以建立 TCP 連線至 Envoy 適用的 Apigee Adapter 系統會顯示類似以下的輸出內容:
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
使用以下指令,在
remote-service
API Proxy 中啟動追蹤記錄工作階段: Apigee Edge UI。重現這個問題,並提供追蹤工作階段 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