為路由器啟用 NGINX 偵錯記錄

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

根據預設,Apigee 的路由器會設定為僅記錄錯誤記錄檔中的錯誤訊息。不過在許多情況下,您可能需要收集更多資訊,才能判斷特定錯誤發生的原因。其中一個方法是將路由器設為在偵錯模式下運作,以便取得偵錯記錄檔,讓您進一步瞭解錯誤並更快解決問題。

本文說明如何在特定虛擬主機上的要求,在 Apigee Edge 的路由器上啟用偵錯記錄檔。啟用偵錯記錄功能後,就能在「北行」(用戶端應用程式和路由器之間) 有任何問題時擷取更多資訊,例如要求格式錯誤、 400 錯誤要求 - SSL 憑證錯誤

事前準備

  • 如果您不熟悉 NGINX 錯誤記錄檔和記錄層級,請參閱 NGINX 錯誤記錄檔說明文件
  • 針對您要收集偵錯資訊的 API 要求,收集機構、環境和虛擬主機名稱。

在路由器上啟用 NGINX 偵錯記錄檔

本節說明如何在邊緣路由器上啟用偵錯記錄檔。

識別相關的虛擬主機設定檔

下列步驟說明如何在路由器上找到相關的虛擬主機設定檔:

  1. 如果您知道要偵錯的特定 API 要求的機構名稱、環境名稱和虛擬主機,請按下列步驟判斷虛擬主機 conf 檔案:
    1. 前往 /opt/nginx/conf.d/ 目錄。
    2. conf.d 目錄中使用下列指令來搜尋檔案 ORG_NAME_ENV_NAME_VIRTUALHOST.conf
      ls -ltrh | grep "ORG_NAME_ENV_NAME_VIRTUALHOST_NAME"
      
  2. 如果您不知道機構名稱,可以使用 API 要求中使用的主機名稱名稱來識別虛擬主機設定檔,如下所示:

    前往 /opt/nginx/conf.d/ 目錄,然後搜尋使用下列指令發出要求的 hostalias

    ls -ltrh | grep -r 'HOST_ALIAS_NAME'
    

    輸出內容範例:

    假設主機別名的名稱是 opdk.cert-test.com。執行 ls -ltrh 指令時,您會看到如下所示的輸出內容:

為路由器上的特定虛擬主機啟用偵錯記錄功能

下列步驟說明如何為特定虛擬主機的 Apigee 路由器啟用偵錯記錄檔。

  1. 在編輯器中,開啟路由器機器上的下列檔案:/opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf。例如:
    vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
    
  2. 變更下列程式碼:
    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;
    
  3. 儲存變更。
  4. 執行 NGINX 重新載入指令。例如:
    sudo /opt/nginx/scripts/apigee-nginx reload
    
  5. 下列檔案現在會擷取偵錯記錄檔:
    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
    
  6. 如果您想在多個路由器上擷取偵錯記錄,請在每個路由器上重複執行上述步驟。

驗證偵錯資訊會記錄在 NGINX 錯誤記錄檔中

  1. 當用戶端在與虛擬主機設定相關聯的主機別名和通訊埠提出 API 要求後,系統就會從下列檔案擷取偵錯記錄:

    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log

  2. 確認您看到了 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 要求時,系統會擷取上述資訊。只有在啟用偵錯記錄功能時,系統才會顯示這個記錄。

  3. 如未顯示其他偵錯資訊,請確認您已按照「 為路由器上的特定虛擬主機啟用偵錯記錄功能」一文所述的所有步驟正確執行。如果錯過任何步驟,請再次正確重複所有步驟。
  4. 如果仍無法取得偵錯資訊,請與 Apigee Edge 支援團隊聯絡。

停用路由器上特定虛擬主機的偵錯記錄檔

本節說明如何停用特定虛擬主機的 Router 偵錯記錄檔。

  1. 在編輯器中開啟路由器機器上的下列檔案:/opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf 例如:
    vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
    
  2. 變更下列程式碼:

    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;
    
  3. 儲存變更。
  4. 執行 NGINX 重新載入指令。例如:
    /opt/nginx/scripts/apigee-nginx reload
    
  5. 下列檔案現在只會擷取 error 記錄:
    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
    
  6. 如要停止多個路由器的偵錯記錄,請在每個路由器上重複執行這些步驟。

僅驗證錯誤資訊會記錄在 NGINX 錯誤記錄檔

  1. 在與特定虛擬主機設定相關聯的主機別名和通訊埠上提出 API 要求,或等待用戶端發出要求。
  2. 檢查下列檔案: /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
  3. 請確定您只看到錯誤資訊,且系統不會再記錄要求的偵錯資訊。
  4. 如果系統仍記錄到其他偵錯資訊,請確認您已正確執行 停用路由器上特定虛擬主機的偵錯記錄中所述的所有步驟。如果錯過任何步驟,請再次正確重複所有步驟。
  5. 如果仍無法取得偵錯資訊,請與 Apigee Edge 支援團隊聯絡。