分享方式:


針對 Azure Logic Apps 中的失敗進行疑難排解和診斷

適用於:Azure Logic Apps (使用量 + 標準)

您的邏輯應用程式工作流程會產生有助於診斷與偵錯應用程式問題的資訊。 您可以使用 Azure 入口網站檢閱工作流程中每個步驟的輸入、輸出和其他資訊,以診斷您的工作流程。 或者,您可以新增一些步驟至工作流程,以進行執行階段偵錯。

檢查觸發程序歷程記錄

每個工作流程執行都會以觸發程序開始,這會根據排程引發,或等候傳入的要求或事件。 觸發程序歷程記錄會列出您工作流程嘗試過的所有觸發程序,以及每次觸發程序嘗試的相關輸入和輸出資訊。 如未引發觸發程序,請嘗試下列步驟。

  1. 若要檢查消費邏輯應用程式中的觸發程序狀態,請檢閱觸發程序歷程記錄。 若要檢視觸發程序嘗試的詳細資訊,請選取該觸發程序事件,例如:

    顯示 Azure 入口網站 與取用邏輯應用程式工作流程觸發程式歷程記錄的螢幕快照。

  2. 檢查觸發程序的輸入,以確認顯示的內容如您預期。 在 [歷程記錄] 窗格的 [輸入連結] 下,選取顯示 [輸入] 窗格的連結。

    觸發程序輸入包含觸發程序預期的資料,而且需要啟動工作流程。 檢閱這些輸入可協助您判斷觸發程序輸入是否正確,以及是否符合條件,以便能繼續執行工作流程。

    顯示取用邏輯應用程式工作流程觸發輸入的螢幕快照。

  3. 檢查觸發程序輸出 (如果有的話),以確認顯示的輸出內容如您預期。 在 [歷程記錄] 窗格的 [輸出連結] 下,選取顯示 [輸出] 窗格的連結。

    觸發程序輸出包含觸發程序傳遞至工作流程中下一個步驟的資料。 檢閱這些輸出可協助您判斷傳遞至工作流程中下一個步驟的值是否正確或符合預期。

    例如,指出找不到 RSS 摘要的錯誤訊息:

    顯示取用邏輯應用程式工作流程觸發程式輸出的螢幕快照。

    提示

    如果您發現任何無法辨識的內容,請深入了解 Azure Logic Apps 中的不同內容類型

檢查工作流程執行歷程記錄

每次引發觸發程序時,Azure Logic Apps 會建立工作流程執行個體並執行該執行個體。 如果執行失敗,請嘗試下列步驟,以便檢閱執行期間發生何事。 您可以檢閱工作流程中每個步驟的狀態、輸入和輸出。

  1. 若要檢查消費邏輯應用程式中的工作流程執行狀態,請檢閱執行歷程記錄。 若要檢視失敗執行的詳細資訊,包括該執行在其狀態中的所有步驟,請選取該失敗執行。

    顯示 Azure 入口網站 的螢幕快照,其中已選取 [取用邏輯應用程式工作流程] 和 [失敗的執行]。

  2. 當所有執行步驟都出現後,請選取每個步驟以展開其圖形。

    顯示已選取失敗步驟的取用邏輯應用程式工作流程螢幕快照。

  3. 檢閱失敗步驟的輸入、輸出和任何錯誤訊息。

    顯示使用邏輯應用程式工作流程的螢幕快照,其中含有失敗的步驟詳細數據。

    例如,下列螢幕擷取畫面會顯示失敗 RSS 動作的輸出。

    此螢幕快照顯示具有失敗步驟輸出的取用邏輯應用程式工作流程。

執行執行階段偵錯

若要協助偵錯,您可以新增診斷步驟至邏輯應用程式工作流程,以及檢閱觸發程序和執行歷程記錄。 例如,您可以新增使用 Webhook Tester 服務的步驟,以便可以檢查 HTTP 要求,並判斷其確切的大小、圖形與格式。

  1. 在瀏覽器中,移至 Webhook Tester 網站,並複製所產生的唯一 URL。

  2. 在您的邏輯應用程式中,以您想要測試的任何內文內容新增 HTTP POST 動作 (例如,運算式或另一個步驟輸出)。

  3. 將您在 Webhook 測試工具的 URL 貼到 HTTP POST 動作。

  4. 若要檢閱 Azure Logic Apps 如何產生與形成要求,請執行邏輯應用程式工作流程。 然後,您可以重新瀏覽 Webhook Tester 網站以取得詳細資訊。

效能 - 常見問題集 (FAQ)

工作流程執行持續時間為何超過所有工作流程動作持續時間的總和?

執行動作時,排程額外負荷存在,而動作之間的等候時間可能會因為後端系統負載而發生。 工作流程執行持續時間包含這些排程時間和等候時間,以及所有動作持續時間的總和。

通常,我的工作流程會在 10 秒內完成。 但是有時候可能需要更長的時間才能完成。 如何確定工作流程一律會在 10 秒內完成?

  • 延遲沒有 SLA 保證。

  • 使用量工作流程會在多租用戶 Azure Logic Apps 上執行,因此其他客戶的工作負載可能會對您的工作流程效能造成負面影響。

  • 如需更可預測的效能,您可以考慮建立標準工作流程,以在單一租用戶 Azure Logic Apps 中執行。 您有更多控制權可擴大或擴增以改善效能。

我的動作會在 2 分鐘後逾時。 我要如何增加逾時值?

動作逾時值無法變更,且固定在 2 分鐘。 如果您使用 HTTP 動作,而且您擁有由 HTTP 動作呼叫的服務,則可以變更服務,以使用非同步模式來避免 2 分鐘逾時。 如需詳細資訊,請參閱使用輪詢動作模式執行長時間執行的工作

常見問題 - 標準邏輯應用程式

Azure 儲存體帳戶中無法存取的成品

標準邏輯應用程式會將所有成品儲存在 Azure 儲存體帳戶中。 如果無法存取這些成品,您可能會收到下列錯誤。 例如,儲存體帳戶本身可能無法存取,或儲存體帳戶位於防火牆後方,但未設定任何私人端點供儲存體服務使用。

Azure 入口網站位置 錯誤
[概觀] 窗格 - System.private.corelib: 拒絕存取路徑 'C:\home\site\wwwroot\hostj.son

- Azure.Storage.Blobs:此要求未獲授權,無法執行此作業
[工作流程] 窗格 - 無法連線到主機執行階段。錯誤詳細資料,代碼: 'BadRequest',訊息: 「主機執行階段發生錯誤 (InternalServerError)。」

- 無法連線到主機執行階段。錯誤詳細資料,代碼: 'BadRequest',訊息: 「主機執行階段發生錯誤 (ServiceUnavailable)。」

- 無法連線到主機執行階段。錯誤詳細資料,代碼: 'BadRequest',訊息: 「主機執行階段發生錯誤 (BadGateway)。」
工作流程的建立和執行期間 - 無法儲存工作流程

- 設計工具中發生錯誤: GetCallFailed。擷取作業失敗

- ajaxExtended 呼叫失敗

疑難排解選項

下列清單包含這些錯誤的可能原因,以及有助於疑難排解的步驟。

  • 若為公用儲存體帳戶,請以下列方式檢查儲存體帳戶的存取權:

    如果連線失敗,請檢查連接字串中的共用存取簽章 (SAS) 金鑰是否為最新的。

    重要

    當您有敏感性資訊時,例如包含使用者名稱和密碼的連接字串,請務必使用最安全的驗證流程。 例如,在標準邏輯應用程式工作流程中,不支援安全資料類型,例如 securestringsecureobject。 Microsoft建議您盡可能使用 受控識別 驗證 Azure 資源的存取權,並指派具有最低許可權的角色。

    如果無法使用這項功能,請務必透過其他措施保護 連接字串,例如

Azure 金鑰保存庫,您可以搭配應用程式設定使用。 然後您可以直接參考安全字串,例如連接字串和金鑰。 類似於您可以於部署期間定義環境變數的 ARM 範本,您可以在邏輯應用程式工作流程定義中定義應用程式設定。 然後,您可以擷取動態產生的基礎結構值,例如連線端點、儲存體字串等等。 如需詳細資訊,請參閱 Microsoft 身分識別平台的應用程式類型

  • 若為防火牆後方的儲存體帳戶,請以下列方式檢查儲存體帳戶的存取權:

    • 如已對儲存體帳戶啟用防火牆限制,請檢查是否針對 Blob、檔案、資料表和佇列儲存體服務設定私人端點

    • 使用 Azure 儲存體總管檢查儲存體帳戶的連線能力。

    如果發現連線問題,請繼續下列步驟:

    1. 在與邏輯應用程式整合的相同虛擬網路中,建立可以放入不同子網路的 Azure 虛擬機器。

    2. 在命令提示字元中,執行 nslookup 檢查 Blob、檔案、資料表和佇列儲存體服務是否解析為預期的 IP 位址。

      語法: nslookup [StorageaccountHostName] [OptionalDNSServer]

      Blob:nslookup {StorageaccountName}.blob.core.windows.net

      檔案:nslookup {StorageaccountName}.file.core.windows.net

      資料表:nslookup {StorageaccountName}.table.core.windows.net

      佇列:nslookup {StorageaccountName}.queue.core.windows.net

      • 如果儲存體服務具有服務端點,則此服務會解析為公用 IP 位址。

      • 如果儲存體服務具有私人端點,則此服務會解析為各自的網路介面控制器 (NIC) 私人 IP 位址。

    3. 如果之前的網域名稱伺服器 (DNS) 查詢解析成功,請執行 pspingtcpping 命令,透過連接埠 443 檢查儲存體帳戶的連線:

      語法: psping [StorageaccountHostName] [Port] [OptionalDNSServer]

      Blob:psping {StorageaccountName}.blob.core.windows.net:443

      檔案:psping {StorageaccountName}.file.core.windows.net:443

      資料表:psping {StorageaccountName}.table.core.windows.net:443

      佇列:psping {StorageaccountName}.queue.core.windows.net:443

    4. 如果每個儲存體服務都可從您的 Azure 虛擬機器解析,請尋找虛擬機器用於解析的 DNS。

      1. 將邏輯應用程式的 WEBSITE_DNS_SERVER 應用程式設定設為 DNS,並確認此 DNS 可順利運作。

      2. 確認已在標準邏輯應用程式中使用適當的虛擬網路和子網路正確設定 VNet 整合。

    5. 如果您在自己的儲存體帳戶的私人端點服務使用私人 Azure DNS 區域,請檢查是否已建立邏輯應用程式整合式虛擬網路的虛擬網路連結

如需詳細資訊,請參閱使用服務或私人端點,將標準邏輯應用程式部署至防火牆後方的儲存體帳戶

下一步