使用偵錯功能

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本節說明如何使用 Apigee 使用者介面和 API 建立及管理偵錯工作階段,並查看要求和回應資料。

使用離線偵錯功能,查看及分析先前下載的偵錯工作階段。

建立偵錯工作階段

偵錯工具簡單易用。您會啟動偵錯工作階段,然後向 Apigee 發出 API 呼叫,並在使用者介面中查看要求和回應資料。

請按照下列各節所述,使用 Apigee 使用者介面或 API 建立偵錯工作階段。

Apigee UI

Debug v2 (最新)

如要建立偵錯工作階段,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Proxy 開發」>「API Proxy」頁面。

    前往「API Proxies」

  2. 選取要偵錯的 API Proxy。畫面上會顯示 Proxy Editor「Overview」窗格。
  3. 按一下「偵錯」分頁。
  4. 按一下「Start debug session」。畫面會顯示「啟動偵錯工作階段」窗格。
  5. 在「Start debug session」窗格中:

    1. 選取要執行偵錯工作階段的環境
    2. (選用) 從「篩選器」下拉式清單中,選取要套用至所建立偵錯工作階段中所有交易的篩選器。預設值為 None (All transactions),包含偵錯資料中的所有交易。

      如要瞭解如何使用篩選器,請參閱「在偵錯工作階段中使用篩選器」。如要瞭解內建篩選器,請參閱「使用預先定義的篩選器」。

    3. 按一下「啟動」

Apigee 使用者介面現在會顯示「Debug session in progress」窗格。

按一下即可放大圖片 新的偵錯工作階段

偵錯工作階段會記錄要求 10 分鐘,或直到擷取 15 項要求為止。如果使用 API 建立偵錯工作階段,可以調整 10 分鐘的限制。「在以下時間內結束」欄位會顯示工作階段的剩餘時間。

您必須在所選環境中,為偵錯工作階段向要偵錯的 Proxy 傳送要求,偵錯窗格才會顯示任何資訊。

傳送要求後,要求會顯示在「交易」清單窗格中。「交易」清單每五秒更新一次。

按一下即可放大圖片 交易清單中的要求

如要查看或複製交易輸出內容,請按照下列步驟操作:

  1. 在「交易」清單中,按一下「查看交易輸出內容」。系統會顯示「交易輸出內容」窗格。
  2. 按一下個別交易,或按一下「所有交易」
  3. 按一下「複製」 ,將交易輸出內容複製到剪貼簿。
  4. 按一下「關閉」

Debug v1

如要在新的 Proxy 編輯器中建立偵錯工作階段,請按照下列步驟操作:

  1. 登入Google Cloud 控制台
  2. 依序選取「Proxy 開發」>「API Proxy」

  3. 選取要偵錯的 API Proxy。系統會顯示 Proxy 編輯器的「總覽」檢視畫面。

  4. 按一下視窗左上方的「偵錯」分頁標籤。
  5. 按一下「Debug」窗格右上方的「Start Debug Session」。系統會隨即顯示「Start debug session」對話方塊。

    啟動「開始偵錯工作階段」對話方塊。

    在對話方塊中:

    1. 選取要執行偵錯工作階段的環境
    2. (選用) 從「篩選器」下拉式清單中選取篩選條件,套用至您建立的偵錯工作階段中的所有交易。預設值為 None (All transactions),包含偵錯資料中的所有交易。

      如要瞭解如何使用篩選器,請參閱「在偵錯工作階段中使用篩選器」。 如要瞭解內建篩選器,請參閱使用預先定義的篩選器

    3. 按一下「啟動」

Apigee 使用者介面現在會顯示「Debug session in progress」檢視畫面。

偵錯工作階段正在執行中

偵錯工作階段會記錄要求 10 分鐘,或直到擷取 15 項要求為止。如果使用 API 建立偵錯工作階段,可以調整 10 分鐘的限制。「Ends within」(在以下時間內結束) 欄位會顯示工作階段的剩餘時間。

您必須先在所選環境中,將要求傳送至要偵錯的 Proxy,偵錯窗格才會顯示任何資訊。偵錯工作階段的環境。

傳送要求後,要求會顯示在左側窗格底部。

啟動「開始偵錯工作階段」對話方塊。

注意:在偵錯工作階段進行期間,您可以在 Apigee 使用者介面中啟動另一個工作階段。如要這麼做,請再次按一下「Start Debug Session」

API

如要使用 API 建立偵錯工作階段,請對下列資源發出 POST 要求:

https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/revisions/$REV/debugsessions

您也可以採取下列做法:

  • 設定偵錯工作階段的長度 (以秒為單位),方法是將 timeout 屬性做為查詢參數傳遞,或在要求主體中傳遞。如果兩者皆指定,系統會優先採用要求內文中指定的 timeout 值。
  • 在偵錯工作階段中,將 filter 屬性傳遞至要求主體,即可篩選資料

以下範例說明如何使用 API 建立偵錯工作階段。

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions" \
      -X POST \
      -H "Authorization: Bearer $TOKEN"
    

其中 $TOKEN 設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數

以下是回應範例:

{
      "name":"56382416-c4ed-4242-6381-591bbf2788cf",
      "validity":300,
      "count":10,
      "tracesize":5120,
      "timeout":"600"
    }

後續對 API 代理伺服器的要求 (直到達到工作階段時間或要求數量上限為止) 都會經過評估,並可能儲存在偵錯工作階段資料中。

詳情請參閱「建立偵錯工作階段 API」。

使用 API 設定偵錯工作階段長度

如要使用 API 設定偵錯工作階段的長度,請在偵錯工作階段建立要求中加入下列內容做為酬載:

{
      "timeout":"debug_session_length_in_seconds"
    }

以下範例會建立 42 秒的偵錯工作階段:

curl https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions"
      -X "POST" \
      -H "Authorization: Bearer $TOKEN" \
      -d ' {
        "timeout":"42"
      } '

您只能在偵錯工作階段建立要求中設定工作階段的 timeout,工作階段建立後就無法變更時長。

timeout 的預設值為 300 (5 分鐘)。最長為 600 秒 (10 分鐘)。

複製 Proxy 網址

這個網址可用來將要求傳送至 API Proxy。

Debug v2 (最新)

如何找出及複製 Proxy 網址:

  1. 在「Debug session」窗格的「URL」欄位中,按一下「Copy」圖示
  2. 如果沒有開啟偵錯工作階段
    1. 在 Google Cloud 控制台中,依序前往「管理」>「環境」>「環境群組」頁面。

      前往環境群組

    2. 這個網址是您要用來執行偵錯工作階段的相應環境「主機名稱」。選取並複製。

如要選取其他 Proxy 網址:

  1. 在「Debug session」窗格的「URL」欄位中,按一下「Edit」圖示
  2. 視需要進行變更,然後按一下「更新」
  3. 如果沒有開啟偵錯工作階段
    1. 找出 Proxy 網址。
    2. 依序點選「更多」圖示 和「編輯」圖示
    3. 視需要進行變更,然後按一下「更新」

Debug v1

如何找出及複製 Proxy 網址:

  1. 在 Google Cloud 控制台中,依序前往「管理」>「環境」>「環境群組」
  2. 網址是您要執行偵錯工作階段的相應環境「主機名稱」。選取並複製。

如要編輯 Proxy 網址,請按照下列步驟操作:

  1. 找出 Proxy 網址。
  2. 依序點選「更多」圖示 和「編輯」圖示
  3. 視需要進行變更,然後按一下「更新」

在 UI 中啟動另一個偵錯工作階段

您可以在 UI 中建立任意數量的偵錯工作階段。

在偵錯工作階段進行期間,您可以在 Apigee UI 中啟動另一個工作階段。如要這麼做,請在「Debug session」窗格中點選「Close」

按一下即可放大圖片 關閉並返回「Start a debug session」面板

使用者介面會返回「開始偵錯工作階段」面板,您可以在這裡開始新的偵錯工作階段。

偵錯工作階段何時結束?

您無法直接停止進行中的偵錯工作階段,不過,您可以刪除有效工作階段的資料,詳情請參閱「刪除偵錯工作階段資料」。

建立偵錯工作階段時,有兩個屬性會決定工作階段的結束時間:

  • timeout:在工作階段期間收集資料的時間長度。 預設長度取決於工作階段的啟動方式 (透過 UI 或 API)。最大值為 600 秒 (或 10 分鐘)。
  • count:單一工作階段每個訊息處理器記錄的要求數量上限。由於大多數叢集中的訊息處理器數量會變動,因此計數的影響可能難以預測。Apigee 不建議自訂這項設定。

達到逾時或計數值時,該訊息處理器的偵錯工作階段就會結束。

下列字詞用於說明偵錯工作階段的狀態:

  • 有效工作階段是指尚未逾時或超出次數的偵錯工作階段。有效的工作階段仍會記錄未經過濾的要求資料。
  • 已完成的工作階段是指已逾時或超出計數的偵錯工作階段。已完成的工作階段不會再記錄新要求的資料,且資料會在工作階段結束後 24 小時內刪除。

如何解讀偵錯工作階段

本節將概略介紹偵錯工作階段。

另請參閱:

Debug v2 (最新)

偵錯工具主要分為兩部分:交易窗格和階段詳細資料:

  • 交易窗格會使用圖示標示 API Proxy 交易期間發生的每個重要步驟,包括政策執行、條件步驟和轉換。將滑鼠游標懸停在任一圖示上,即可查看摘要資訊。要求流程步驟會顯示在交易地圖頂端,回應流程步驟則顯示在底部。
  • 「階段詳細資料」窗格會列出 Proxy 內部處理作業的相關資訊,包括已設定或讀取的變數、要求和回應標頭等。按一下任一圖示,即可查看該步驟的階段詳細資料

Debug v1

這個版本的偵錯工具會使用甘特圖,顯示要求和回應中的步驟。

交易窗格

交易窗格會顯示要求和回應中的步驟。

Debug v2 (最新)

以下是範例偵錯工具交易窗格,並標示主要 Proxy 處理區段:

按一下即可放大圖片 偵錯圖表:顯示「開始 Proxy 要求」到「開始目標要求」到「開始目標回應」到「開始 Proxy 回應」到「開始 Proxy 後端用戶端流程」

Debug v1

如要在「偵錯」檢視畫面中查看交易 (要求和回應) 的詳細資料,請按一下交易的資料列,在右側窗格中顯示 甘特圖,當中會顯示要求和回應的步驟。

右側窗格中的交易步驟甘特圖。

圖表的橫軸表示每個步驟發生的時間,以毫秒為單位。每個步驟都以矩形表示,從步驟的開始時間延伸至結束時間。

您可以使用偵錯窗格右下方的「Back」和「Next」按鈕,逐步執行偵錯工作階段。請點選下列值:

  • 返回:將所選資料列移至圖表中的上一個步驟。
  • 選取「下一步」,將所選列移至圖表的下一個步驟。

如上例所示,圖表會顯示在回應中執行的兩項政策:

  • ResponsePayload
  • 新增 CORS

按一下任一步驟即可查看詳細資料。 舉例來說,如果您點選「新增 CORS」政策,甘特圖旁就會顯示詳細資料,如下所示。

新增 CORS 政策詳細資料。

如果您決定變更政策設定,可以點選「開發」切換至「開發」檢視畫面,您會在「回應 PostFlow」中看到相同的兩項政策。

查看與偵錯工作階段相關的「開發」分頁。

交易窗格圖例

以下說明交易窗格中的圖示:

Debug v2 (最新)

本節說明交易窗格中的圖示:

政策圖示

每種政策都有專屬圖示。這些圖示可讓您查看政策是否依正確順序執行,以及是否成功。您可以點選政策圖示,查看政策的執行結果,以及結果是否符合預期。舉例來說,您可以查看訊息是否已正確轉換,或是否正在快取。

標準政策可強化 API,藉此控管流量、增進效能、強制執行安全措施及提高 API 的實用性,無須編寫程式碼或修改後端服務。

透過可擴充政策,您可以在 API 代理中加入自訂邏輯。 您可以使用這些政策新增標準政策未提供的功能。

如要進一步瞭解政策和類別,請參閱「 政策參考資料總覽」。

如要篩選表格:

  • 選取一項政策類型和/或一項政策類別。
  • 按一下「名稱」欄標題,即可依政策名稱排序表格。
  • 輸入關鍵字,搜尋政策名稱。

政策類型

政策類別

圖示 名稱 類型 類別
manage_search ParseDialogflowRequest 政策 可擴充 對話流程
chat_add_on SetDialogflowResponse 政策 可擴充 對話流程
stacked_line_chart 資料擷取政策 可擴充 擴充功能
display_external_input ExternalCallout 政策 標準 擴充功能
flowsheet FlowCallout 政策 可擴充 擴充功能
自動化 IntegrationCallout 政策 可擴充 擴充功能
JavaCallout 政策圖示 JavaCallout 政策 可擴充 擴充功能
JavaScript 政策圖示 JavaScript 政策 可擴充 擴充功能
add_notes MessageLogging 政策 可擴充 擴充功能
chat_paste_go PublishMessage 政策 標準 擴充功能
PythonScript 政策圖示 PythonScript 政策 可擴充 擴充功能
integration_instructions ServiceCallout 政策 可擴充 擴充功能
自動化 SetIntegrationRequest policy 可擴充 擴充功能
waterfall_chart TraceCapture 政策 可擴充 擴充功能
cloud_done AccessEntity 政策 可擴充 調節
account_tree AsseretCondition 政策 標準 調節
edit_square AssignMessage 政策 可擴充 調節
登入 ExtractVariables 政策 可擴充 調節
GraphQL 政策圖示 GraphQL 政策 標準 調節
sync_alt HTTPModifier 政策 標準 調節
sync_alt JSONtoXML 政策 標準 調節
account_tree KeyValueMapOperations 政策 可擴充 調節
sync_alt MonetizationLimitsCheck 政策 可擴充 調節
cloud_done OASValidation 政策 標準 調節
檢舉 RaiseFault 政策 標準 調節
sync_alt ReadPropertySet 政策 標準 調節
cloud_done SOAPMessageValidation 政策 標準 調節
sync_alt XMLtoJSON 政策 標準 調節
cloud_done XSLTransform 政策 可擴充 調節
鎖定 AccessControl 政策 標準 安全性
security BasicAuthentication 政策 可擴充 安全性
connect_without_contact CORS 政策 標準 安全性
鎖定 DecodeJWS 政策 可擴充 安全性
鎖定 DecodeJWT 政策 標準 安全性
密碼金鑰 DeleteOAuthV2Info 政策 可擴充 安全性
鎖定 GenerateSamlAssertion 政策 可擴充 安全性
鎖定 GenerateJWS 政策 可擴充 安全性
鎖定 GenerateJWT 政策 可擴充 安全性
密碼金鑰 GetOAuthV2Info 政策 可擴充 安全性
鎖定 HMAC 政策 標準 安全性
security JSONThreatProtection 政策 可擴充 安全性
密碼金鑰 OAuthV2 政策 可擴充 安全性
security RegularExpressionProtection 政策 可擴充 安全性
密碼金鑰 RevokeOAuthV2 政策 可擴充 安全性
密碼金鑰 SetOAuthV2Info 政策 可擴充 安全性
鎖定 ValidateSamlAssertion 政策 可擴充 安全性
key VerifyAPIKey 政策 可擴充 安全性
密碼金鑰 VerifyIAM policy 可擴充 安全性
鎖定 VerifyJWS 政策 可擴充 安全性
鎖定 VerifyJWT 政策 標準 安全性
security XMLThreatProtection 政策 可擴充 安全性
已快取 InvalidateCache 政策 可擴充 流量管理
已快取 LookupCache 政策 可擴充 流量管理
已快取 PopulateCache 政策 可擴充 流量管理
bar_chart_4_bars 配額政策 可擴充 流量管理
repartition ResetQuota 政策 可擴充 流量管理
已快取 ResponseCache 政策 可擴充 流量管理
emergency_home SpikeArrest 政策 標準 流量管理

其他圖示

下表說明交易窗格中顯示的其他圖示用途。這些圖示會標示整個 Proxy 流程中每個重要的處理步驟。

如要篩選表格:

  • 選取一種圖示類型。
  • 按一下「名稱」欄標題,即可依圖示名稱排序表格。
  • 輸入關鍵字來搜尋圖示名稱。

圖示類型

圖示 名稱 類型 說明
監控 用戶端應用程式 標準交易 向 API Proxy 的 ProxyEndpoint 傳送要求的用戶端應用程式。
圓形 轉換端點 標準交易 圓圈標示 Proxy 流程中的轉換端點。當要求從用戶端傳入、要求傳送至目標、回應從目標傳回,以及回應傳回用戶端時,這些攔截器都會在場。
stat_0 流程區隔 標準交易

菱形表示 API 代理流程中流程區隔的開頭。流程區隔包括:ProxyEndpoint 要求、TargetEndpoint 要求、TargetEndpoint 回應和 ProxyEndpoint 回應。區段包含 PreFlow、條件流程和 PostFlow。

詳情請參閱 條件流程

條件為 true 圖示 條件式流程為 true 標準交易

評估結果為 True 的條件式流程,例如評估結果為 trueif 陳述式。如要瞭解條件式流程,請參閱 條件式流程

請注意,部分條件是由 Apigee 產生。舉例來說,以下是 Apigee 用來檢查 ProxyEndpoint 是否發生錯誤的運算式:

((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))

條件為 false 的圖示 條件式流程為 false 標準交易

評估結果為 false 的條件式流程。如要瞭解條件式流程,請參閱 條件式流程

請注意,部分條件是由 Apigee 產生。舉例來說,以下是 Apigee 用來檢查 TargetEndpoint 是否發生錯誤的運算式:

(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))

流程資訊圖示 流程資訊 標準交易 代表 API Proxy 執行的背景資訊,會因流程中的時間點而異。包括 Proxy 設定的詳細資料、目前的執行狀態 (例如 PreFlow、PostFlow、流程掛鉤)、政策執行詳細資料,以及政策執行期間填入的變數,指出該時間點的 Proxy 特定狀態。
done_all 流程執行作業 標準交易 標記流程執行的開始或結束時間,指出不同流程區隔的時間範圍,以視覺化方式劃分流程界線,並指出流程執行順序。
commit 流程處理 標準交易 表示流程中正在進行的處理作業,代表政策和流程邏輯的執行期間。
bar_chart Apigee Analytics 擷取的資料 標準交易 表示 Analytics 動作已在背景中發生。
location_on 後端服務 標準交易 接收要求的後端服務。 API Proxy 呼叫的後端目標。
已停用圖示 已停用 步驟狀態 政策停用時,政策圖示上會顯示這個圖示。您可以使用公開 API 停用政策。請參閱 API Proxy 設定參考資料
錯誤圖示 錯誤 步驟狀態 當政策步驟條件評估結果為 false 時 (請參閱「 具有流程變數的條件」),或每當執行 RaiseFault 政策時,政策圖示上就會顯示這個圖示。
已略過圖示 已略過 步驟狀態 如果步驟條件評估結果為 false,導致政策未執行,政策圖示上就會顯示這個圖示。詳情請參閱「 含有流程變數的條件」。

Debug v1

這個版本會使用甘特圖顯示要求和回應中的步驟,且不會提供圖例。

階段詳細資料窗格

階段詳細資料窗格會顯示每個處理步驟的 Proxy 狀態。

Debug v2 (最新)

階段詳細資料窗格會顯示每個處理步驟的 Proxy 狀態。以下是提供的部分詳細資料。 按一下偵錯工具中的任何圖示,即可查看所選步驟的詳細資料,或使用「>」「Next」或「<」「Back」按鈕,在各個步驟之間移動。

下表說明階段詳細資料窗格中提供的詳細資料。

階段詳細資料 說明
變數

列出政策讀取並指派值的流程變數。另請參閱「 使用流程變數」。

要求標頭 列出 HTTP 要求標頭。
要求內容 顯示 HTTP 要求主體。
屬性 屬性代表 API Proxy 的內部狀態。這些資料欄預設不會顯示。
目標端點 指出選取要執行的 TargetEndpoint。
回應標頭 列出 HTTP 回應標頭。
回應內容 顯示 HTTP 回應主體。

Debug v1

按一下甘特圖中的步驟,即可查看階段詳細資料,或使用「>」「下一步」或「<」「上一步」按鈕逐步執行偵錯工作階段。

時間軸

時間軸會顯示處理時間長度 (以毫秒為單位)。比較經過的時間區隔,有助於找出執行時間最長,導致 API 呼叫速度變慢的政策。

Epsilon 表示的時間範圍小於一毫秒。

Debug v2 (最新)

按一下即可放大圖片 Debug v2 使用者介面中的時間軸

Debug v1

按一下即可放大圖片 Debug v1 使用者介面中的時間軸

展開及收合群組

本節說明如何在「交易」窗格中展開及收合群組。

Debug v2 (最新)

要求和回應的交易步驟會根據先前在「開發」分頁中的設定方式分組,例如:前置 Proxy、後置 Proxy、前置目標和後置目標。

每個群組都會清楚顯示相關政策、條件、共用流程和流程資訊。

系統預設會將共用流程分組並收合。

您可以在「交易」窗格中執行下列動作:

項目 名稱 說明
展開所有滑桿
<img <="" alt="collapse all slider" class="screenshot" src="/static/apigee/docs/api-platform/debug/images/collapse_all_slider.png" td="" width="" />
全部展開
全部收合
展開或收合所有群組。
展開群組圖示
收合群組圖示
展開
收合
展開或收合群組。

另請參閱:

Debug v1

這個版本不支援展開及收合群組。

您可以在要求或回應中搜尋字詞或詞組。

Debug v2 (最新)

搜尋功能可讓您在要求或回覆中尋找特定字詞或詞組。

注意事項:

  • 搜尋不區分大小寫
  • 搜尋功能適用於單一交易,也就是說,不會搜尋整個偵錯工作階段中的所有交易。
  • 搜尋功能會展開已收合的區段,但不會顯示因 檢視選項選取項目而遭篩除的節點資訊。

如要搜尋內容,請按照下列步驟操作:

  1. 在搜尋框中輸入文字。
  2. 按下 Enter 鍵。

    搜尋結果會醒目顯示在「Transaction」(交易) 窗格和「Phase Details」(階段詳細資料) 窗格中。

  3. 按一下 keyboard_arrow_up 「返回」keyboard_arrow_down 「下一步」,即可前往下一個或上一個步驟。
按一下即可放大圖片 Debug v2 UI 中的搜尋結果

Debug v1

這個版本不支援搜尋功能。

縮放

你可以使用縮放功能控制交易窗格的檢視畫面。

Debug v2 (最新)

縮放功能可控制「交易」窗格的檢視畫面,如下所示:

按一下即可放大圖片 偵錯 v2 縮放控制項
圖示 說明
100% 目前的縮放等級。預設值為 100%。
fit_screen 依螢幕大小自動調整
zoom_in 放大
zoom_out 縮小
youtube_searched_for 重設縮放設定

Debug v1

這個版本不支援 Zoom。

使用偵錯工具偵錯

您可以在偵錯模式中查看 API Proxy 的許多內部詳細資料。例如:

  • 您可以一目瞭然哪些政策執行正確,哪些政策執行失敗。
  • 假設您透過其中一個 Analytics 資訊主頁發現,某個 API 的效能異常下降。現在,您可以使用「偵錯」功能,找出瓶頸發生的位置。「Debug」會顯示每個處理步驟完成所需的時間 (以毫秒為單位)。如果發現某個步驟耗時過長,可以採取修正措施。
  • 您可以檢查傳送至後端的標頭、查看政策設定的變數等。
  • 驗證基本路徑可確保政策將訊息轉送至正確的伺服器。

在偵錯工作階段中篩選資料

建立偵錯工作階段時,您可以為該工作階段新增篩選器,讓 Apigee 只傳回您需要的資料。 篩選條件是 Apigee 針對要求和回應訊息評估的條件陳述式,用於判斷是否應將偵錯資料納入偵錯工作階段。舉例來說,您可以篩除 HTTP 回應碼小於 599 的所有要求,或是比較要求中的值與自訂變數。

注意事項:

  • 遭篩除而未納入偵錯工作階段的要求,不會計入偵錯工作階段的交易數上限
  • Apigee 不支援在查詢字串中新增篩選器。
  • 工作階段開始後,就無法在偵錯工作階段中新增篩選器。如要新增篩選器,請先建立偵錯工作階段。

使用篩選器

使用 Apigee 使用者介面或 API 建立偵錯工作階段時,請使用篩選器,如下列各節所述。

Apigee UI

UI 中建立偵錯工作階段時,您可以在「篩選器」下拉式清單中選擇預先定義的篩選器,套用至「開始偵錯工作階段」面板,也可以選擇「自訂篩選器」,然後使用篩選器語法建立自己的篩選器。

API

如要使用 API 建立含有篩選條件的偵錯工作階段,請在偵錯工作階段建立要求中加入下列內容做為酬載:

{
  "filter":"filter_body"
}

如要瞭解如何建構篩選器,請參閱「篩選器語法」。

以下範例會建立偵錯工作階段,其中只包含標頭 A 等於 42 且標頭 B 等於 43 的交易,或錯誤代碼為 ExpectedEOF 的交易:

curl -H "Authorization: Bearer $TOKEN" -X "POST"
  https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions
  -d ' {
    "filter":"(request.header.A == '42' && request.header.B == '43') || fault.code == 'jsonparser.ExpectedEOF'"
  } '

您只能在建立偵錯工作階段要求時定義篩選器,無法為現有偵錯工作階段新增篩選器,也無法從有效偵錯工作階段中移除篩選器。

篩選器語法

篩選器支援 Apigee 條件使用的語法,詳情請參閱「條件參考資料」。包括:

此外,篩選器可以存取「流程變數參考資料」中說明的所有流程變數,以及自訂變數。下列範例僅顯示部分可在篩選器中使用的可能流程變數:

# Response codes:
  response.status.code <= 599
  response.status.code >=301 && response.status.code <=420

# Requests/responses:
  request.verb == "GET"
  request.header.A == 'B' || request.queryparam.X == 'Y'

# Query parameters:
  request.queryparam.myparam == 'fish'
  (request.queryparam.param1 == 'X' || request.queryparam.param2 == 'Y') && request.queryparam.param3 == 'Z'

# Faults:
  fault.code != 'messaging.runtime.RouteFailed'
  fault.name == 'IPDeniedAccess'

如要瞭解如何使用自訂變數,請參閱 Apigee 社群中的「如何在 Apigee 中使用自訂屬性」。

預先定義的 UI 篩選器

Apigee 使用者介面提供一組常見的篩選器,因此您不必自行編寫自訂篩選器。下表列出預先定義的篩選條件。

篩選條件名稱 說明
Response Time Greater Than

檢查延遲問題,包括:

  • target.duration目標延遲時間,也就是要求傳送至目標並從目標接收所需的時間 (以毫秒為單位),計算方式為 target.received.end.timestamptarget.sent.start.timestamp 之間的差異
  • client.duration用戶端延遲,或要求傳送至用戶端及從用戶端接收所用的時間量 (以毫秒為單位),計算方式為 client.received.end.timestampclient.sent.start.timestamp 之間的差異

例如:

target.duration > 420 && client.duration > 1000

詳情請參閱「流程變數參考資料」中的 clienttarget

Response Code

檢查 HTTP 回應代碼是否符合指定值,例如:

response.status.code <= 599
Header

檢查指定要求標頭是否等於指定值,例如:

request.header.cache-control.1 == "16544"
Path

檢查要求是否符合指定路徑。您可以在值中使用萬用字元比對,例如:

request.path == /myproxy/customer/4*
Query Param

檢查指定的請求查詢參數是否等於指定值;例如:

request.queryparam.lang == "language:en-us"
Custom

可插入自己的運算式。您可以使用「流程變數參考資料」中的任何物件,以及「條件參考資料」中的語法。此外,您也可以使用自訂變數。

如要進一步瞭解如何建立自訂篩選器,請參閱「篩選器語法」。

 

查看偵錯工作階段

Apigee 會將偵錯工作階段資料儲存 24 小時。您無法設定這個值;24 小時後,資料將無法再使用。在此之前,您都可以查看偵錯工作階段。

如要查看最近的偵錯工作階段,請使用 Apigee 使用者介面或 API,詳情請參閱下列章節。

Apigee UI

Debug v2 (最新)

使用 Google Cloud 控制台查看偵錯工作階段

  1. 在 Google Cloud 控制台中,前往「Proxy 開發」>「API Proxy」頁面。

    前往「API Proxies」

  2. 按一下要偵錯的 Proxy。
  3. 按一下「偵錯」分頁。
  4. 「Recent debug sessions」(近期偵錯工作階段) 會顯示可用偵錯工作階段的清單。
  5. 按一下要查看的會話連結。

Debug v1

如要使用新版 Proxy 編輯器查看偵錯工作階段,請按照下列步驟操作:

  1. 登入Google Cloud 控制台
  2. 依序選取「Proxy 開發」>「API Proxy」

  3. 選取要偵錯的 Proxy。
  4. 按一下「偵錯」分頁。
  5. 「Recent debug sessions」(近期偵錯工作階段) 會顯示可用偵錯工作階段的清單。
  6. 按一下要查看的會話連結。

API

您可以使用這個 API 執行下列作業:

使用 API 查看所有偵錯工作階段

如要查看環境中 API Proxy 修訂版本定義的所有近期偵錯工作階段,請對下列資源發出 GET 要求:

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions

您可以選擇指定下列其中一個查詢參數,控制傳回的資料量:

  • pageSize:要列出的偵錯工作階段數量上限。頁面大小預設為 25。
  • pageToken:先前呼叫傳回的頁面權杖,可用於擷取下一頁。

以下範例說明如何在 test 環境中,查看 helloworld API 代理項目修訂版本 1 的偵錯工作階段。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions" \
-X GET \
-H "Authorization: Bearer $TOKEN"

其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數

回應會包含 sessions 物件,其中列出目前有效的偵錯工作階段,如下列範例所示:

{
"sessions": [
{
"id": "a423ac73-0902-4cfa-4242-87a353a84d87",
"timestamp_ms": 1566330186000
},
{
"id": "f1eccbbe-1fa6-2424-83e4-3d063b47728a",
"timestamp_ms": 1566330286000
}
]
}

回應只會納入至少包含一筆交易的偵錯工作階段;不含任何交易的偵錯工作階段不會列入這份清單。

詳情請參閱「列出偵錯工作階段 API」。

使用 API 查看偵錯工作階段的所有交易

如要查看偵錯工作階段的交易清單,請對下列資源發出 GET 要求:

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

其中 debugsession 是您查看偵錯工作階段時傳回的偵錯工作階段 ID。

以下範例說明如何在 test 環境中,查看 helloworld API 修訂版本 1 的偵錯工作階段交易。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
-X GET \
-H "Authorization: Bearer $TOKEN"

其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數

回應會包含交易 ID 陣列,如下列範例所示:

[
"myorg-test-ver-5qxdb-64",
"myorg-test-ver-5qxdb-65",
"myorg-test-ver-5qxdb-66",
"myorg-test-ver-5qxdb-67",
"myorg-test-ver-5qxdb-68",
"myorg-test-ver-5qxdb-69",
"myorg-test-ver-5qxdb-70",
"myorg-test-ver-5qxdb-71",
"myorg-test-ver-5qxdb-72"
]

詳情請參閱「List debug session data API」。

使用 API 查看偵錯工作階段的交易資料

如要查看偵錯工作階段的交易資料,請對下列資源發出 GET 要求:

https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/debugsessions/{debugsession}/data/{transactionId}

其中 debugsession查看偵錯工作階段時傳回的偵錯工作階段 ID,而 transactionId查看偵錯工作階段的交易清單時傳回的交易 ID。

在偵錯工作階段期間儲存的交易資料會以 JSON 格式呈現。您可以在離線偵錯工具中載入這項資料。

以下範例說明如何下載 test 環境中 helloworld API 修訂版本 1 的偵錯工作階段交易資料。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data/myorg-test-ver-5qxdb-64" \
-X GET \
-H "Authorization: Bearer $TOKEN"

其中 $TOKEN 會設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數

回應包含 JSON 酬載,內含指定交易的資料,如「下載資料結構」一文所述。

偵錯資料包含流程各部分的要求和回應資訊,格式為專屬的 JSON。您可以儲存這項資料,之後在離線偵錯工具中使用。

如果工作階段結束前未新增任何要求,回應會如下所示:

[]

詳情請參閱「取得偵錯工作階段資料 API」。

在 UI 中選取檢視選項

本節說明如何選取檢視選項,篩選 UI 中顯示的內容。

如要選擇偵錯工作階段的檢視選項,請在「檢視選項」窗格中選取或清除選項。這些檢視選項會為每位使用者保留在偵錯工作階段中。

按一下即可放大圖片 查看選項清單
選項 說明
顯示已停用的政策 顯示任何已停用的政策。您可以使用公開 API 停用政策。請參閱 API Proxy 設定參考資料
顯示已略過的政策 顯示所有略過的政策。如果步驟條件評估結果為 false,系統就不會執行政策,這時就會發生政策略過情形。詳情請參閱「含有流程變數的條件」。
顯示所有流程資訊 代表流程區隔內的轉場效果。
顯示所有流程條件 代表每個流程的評估條件。

分享偵錯工作階段

您可以與有權存取貴機構且具備必要權限的其他使用者共用偵錯工作階段。如要分享,只要將瀏覽器中顯示的網址傳送給對方即可。連結的有效期限為偵錯工作階段建立後 24 小時。

下載偵錯工作階段資料

您可以下載原始的偵錯結果檔案,供離線查看。下載的檔案會顯示偵錯工作階段的完整詳細資料,包括所有標頭、變數和政策的內容。

偵錯工作階段資料只能在 24 小時內下載或在使用者介面中查看。之後,Apigee 會刪除工作階段資料。

如要查看已下載的偵錯工作階段資料,請使用離線偵錯工具

Apigee UI

Debug v2 (最新)

如要下載 Google Cloud 控制台中的目前偵錯工作階段,請按一下「Debug」檢視畫面中的「Download」

Debug v1

如要下載目前的偵錯工作階段,請按一下「偵錯」檢視畫面左側窗格中的「下載工作階段」

下載偵錯工作階段。

請注意,偵錯工作階段會在完成後 24 小時內刪除,因此如要在此時間後查看偵錯工作階段,請務必事先下載。

API

如要使用 Apigee API 查看目前偵錯工作階段的所有交易 ID,請輸入下列指令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
         https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions/SESSION_ID/data

其中 SESSION_ID 是要下載的偵錯工作階段 ID。

請參閱「 列出偵錯工作階段的交易 ID」。

如要使用 Apigee API 取得交易的偵錯資料,請輸入下列指令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions/SESSION_ID/data/TRANSACTION_ID

下載資料結構

Apigee UI 和 Apigee API 的偵錯工作階段資料下載結構不同。

Apigee UI

使用 Apigee UI 下載資料時,資料結構如下:

  • 包含整個工作階段的所有交易
  • 將交易記錄儲存在 Messages 陣列中
  • 包含工作階段的中繼資料 (以 DebugSession 物件的形式)

API

您無法使用 Apigee API 一次查看整個工作階段的資料,只能使用 API 查看個別交易資料,如「查看偵錯工作階段」一文所述。

例如:

{
"completed": true,
"point": [
  ...
...
}

下載資料範例

以下範例會醒目顯示下載資料中的 DebugSession 中繼資料物件。這個物件後面接著 Messages 陣列,其中包含工作階段中的交易。

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
  "Messages": [
    {
      "completed": true,
      "point": [
        {
          "id": "Paused"
        },
        {
          "id": "Resumed"
        },
        {
          "id": "StateChange",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "To",
                    "value": "REQ_HEADERS_PARSED"
                  },
                  {
                    "name": "From",
                    "value": "REQ_START"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            },
            {
              "ActionResult": "RequestMessage",
              "headers": [
                {
                  "name": "accept",
                  "value": "*/*"
                },
                {
                  "name": "accept-encoding",
                  "value": "gzip,gzip,deflate,br"
                },
                {
                  "name": "content-length",
                  "value": "0"
                },
                {
                  "name": "host",
                  "value": "myorg.example.domain.net"
                },
                {
                  "name": "user-agent",
                  "value": "Google-Apigee"
                },
                {
                  "name": "x-b3-sampled",
                  "value": "0"
                },
                {
                  "name": "x-b3-spanid",
                  "value": "d4ee579206759662"
                },
                {
                  "name": "x-b3-traceid",
                  "value": "adc1e171777c237dd4ee579206759662"
                },
                {
                  "name": "x-forwarded-for",
                  "value": "66.102.8.98"
                },
                {
                  "name": "x-forwarded-proto",
                  "value": "https"
                },
                {
                  "name": "x-request-id",
                  "value": "54e05cba-4242-4490-4242-60c45c156f90"
                }
              ],
              "uRI": "/myproxy",
              "verb": "GET"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "environment.name",
                    "value": "prod"
                  },
                  {
                    "name": "environment.qualifiedname",
                    "value": "myorg__prod"
                  },
                  {
                    "name": "environment.orgname",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "organization.name",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "apiproxy.qualifiedname",
                    "value": "myproxy__1"
                  },
                  {
                    "name": "apiproxy.basepath",
                    "value": "/"
                  },
                  {
                    "name": "apiproxy.revision",
                    "value": "1"
                  },
                  {
                    "name": "apiproxy.name",
                    "value": "myproxy"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        ...
      ...
    }
  ]
}

如果偵錯工作階段未包含任何要求,則 Message 陣列會是空白,如下列範例所示:

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
"Messages": []
}

刪除偵錯工作階段的資料

如要刪除偵錯工作階段的資料,請按照下列各節的說明,使用 Apigee 使用者介面或 API。

Apigee UI

Debug v2 (最新)

如要刪除 Google Cloud 控制台中的偵錯工作階段:

  1. 在「Debug」分頁中,按一下要刪除的會話資料列。
  2. 在「Debug session」窗格中,按一下「Delete」圖示

Debug v1

如要刪除偵錯工作階段,請按照下列步驟操作:

  1. 選取要刪除的會話所在的列。
  2. 按一下資料列末尾的三點圖示選單,然後選取「刪除」

API

如要使用 API 刪除所有偵錯工作階段資料,請對下列資源發出 DELETE 要求:

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

其中 debugsession 是您查看偵錯工作階段時傳回的偵錯工作階段 ID。

以下範例示範如何刪除 test 環境中 helloworld API 修訂版本 1 的偵錯工作階段資料。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
      -X DELETE \
      -H "Authorization: Bearer $TOKEN"
    

其中 $TOKEN 設為您的 OAuth 2.0 存取權杖,如「取得 OAuth 2.0 存取權杖」一文所述。如要瞭解本範例使用的 curl 選項,請參閱「使用 curl」。如要瞭解可使用的環境變數,請參閱為 Apigee API 要求設定環境變數

如果成功,回應主體會留白。

偵錯工作階段資料只會保留 24 小時。如果未在上述時間前明確刪除,Apigee 會為您刪除。