您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
在 Apigee 中,根據預設,路由器只會將錯誤訊息記錄在錯誤記錄檔中。不過,在許多情況下,您可能需要收集更多資訊,才能判斷特定錯誤的發生原因。其中一種做法是將 Router 設為以偵錯模式運作,這樣就能取得偵錯記錄,進一步瞭解錯誤並加速解決問題。
本文說明如何針對特定虛擬主機上的要求,在 Apigee Edge 的路由器上啟用偵錯記錄。如果發生要求格式錯誤、 400 Bad Request - SSL Certificate Error 等問題,可以啟用偵錯記錄功能,擷取更多資訊。這些問題發生在Northbound (用戶端應用程式和路由器之間)。
事前準備
- 如果您不熟悉 NGINX 錯誤記錄和記錄層級,請參閱 NGINX 錯誤記錄說明文件。
- 收集您需要收集偵錯資訊的 API 要求的機構、環境和虛擬主機名稱。
在路由器上啟用 NGINX 偵錯記錄
本節說明如何在 Edge 路由器上啟用偵錯記錄。
找出相關的虛擬主機設定檔
下列步驟說明如何在路由器上找出相關的虛擬主機設定檔:
- 如果您知道要偵錯的特定 API 要求所屬的機構名稱、環境名稱和虛擬主機,請按照下列步驟判斷虛擬主機設定檔:
- 前往
/opt/nginx/conf.d/目錄。 - 使用下列指令,在
conf.d目錄中搜尋 ORG_NAME_ENV_NAME_VIRTUALHOST.conf檔案:ls -ltrh | grep "ORG_NAME_ENV_NAME_VIRTUALHOST_NAME"
- 前往
-
如果您不知道機構名稱,可以使用 API 要求中使用的主機別名,找出虛擬主機設定檔,如下所示:
前往
/opt/nginx/conf.d/目錄,然後使用下列指令搜尋提出要求的hostalias:ls -ltrh | grep -r 'HOST_ALIAS_NAME'
輸出內容範例:
假設主機別名為
opdk.cert-test.com,執行ls -ltrh指令後,您會看到如下所示的輸出內容:
在路由器上為特定虛擬主機啟用偵錯記錄功能
下列步驟說明如何針對特定虛擬主機,在 Apigee Router 上啟用偵錯記錄。
- 在編輯器中開啟路由器電腦上的下列檔案:
/opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf。 例如:vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
- 變更下列行:
error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log error;
到
error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log info;
- 儲存變更。
- 執行 NGINX 重新載入指令。例如:
sudo /opt/nginx/scripts/apigee-nginx reload
- 下列檔案現在會擷取 debug 記錄:
/opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
- 如要在多部路由器上擷取偵錯記錄,請在每部路由器上重複上述步驟。
確認偵錯資訊已記錄在 NGINX 錯誤記錄檔中
-
用戶端在與虛擬主機設定相關聯的主機別名和連接埠上發出 API 要求後,系統會將偵錯記錄檔擷取到下列檔案中:
/opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log -
確認您看到 API 要求的偵錯資訊,如下列範例所示:
偵錯資訊範例:
2021/01/27 02:48:40 [warn] 27624#27624: *3777 a client request body is buffered to a temporary file /opt/apigee/var/log/edge-router/nginx/client_temp/0000000001, client: XX.XX.XX.XX, server: XX.XX.XX.XX, request: "POST /post-no-target HTTP/1.1", host: "XX.XX.XX.XX:443"
當用戶端傳送含有大型酬載的
POST要求時,系統會擷取上述資訊。只有在啟用偵錯記錄時,系統才會顯示這項記錄。 - 如果沒有看到其他偵錯資訊,請確認您已按照「 在路由器上為特定虛擬主機啟用偵錯記錄」一文中的所有步驟操作。如果遺漏任何步驟,請再次正確重複所有步驟。
- 如果仍無法取得偵錯資訊,請與 Apigee Edge 支援團隊聯絡。
在路由器上停用特定虛擬主機的偵錯記錄
本節說明如何為特定虛擬主機停用 Router 的偵錯記錄。
- 在編輯器中開啟路由器電腦上的下列檔案:
/opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf例如:vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
-
變更下列行:
error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log info;
到
error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log error;
- 儲存變更。
- 執行 NGINX 重新載入指令。例如:
/opt/nginx/scripts/apigee-nginx reload
- 現在,下列檔案只會擷取 error 記錄:
/opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
- 如要停止多部 Router 的偵錯記錄,請在每部 Router 上重複上述步驟。
確認 NGINX 錯誤記錄檔中只記錄錯誤資訊
- 在與特定虛擬主機設定相關聯的主機別名和連接埠上提出一些 API 要求,或等待用戶端提出要求。
- 檢查下列檔案:
/opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log - 確認您只看到錯誤資訊,且系統不再記錄要求的偵錯資訊。
- 如果系統仍記錄額外的偵錯資訊,請確認您已正確按照「 在路由器上為特定虛擬主機停用偵錯記錄」一文中的所有步驟操作。如果遺漏任何步驟,請再次正確重複所有步驟。
- 如果仍無法取得偵錯資訊,請與 Apigee Edge 支援團隊聯絡。