2017-05-05 90 views
3

我在生產中運行了定時器觸發的Azure函數,但現在我希望在函數失敗時收到通知。Azure函數失敗通知

在我的情況下,訪問各種連接的服務可能導致崩潰,並且有很多故障排除。崩潰是我需要通知的錯誤類型。

當函數失敗時,日誌條目指示失敗,所以我想知道系統中是否有鉤子可以讓系統生成通知。

例如,我知道blob和隊列綁定支持創建毒性隊列條目,但是定時器觸發綁定並沒有說出任何有關該性質的觸發輸出。

我看到函數可以將其$返回狀態作爲輸入傳遞給其他函數,但該操作在文檔中沒有深入解釋。另外,在這種情況下,我需要編寫另一個函數來處理錯誤狀態,並且我正在尋找內置的東西。

我曾就此詢問了@AzureSupport,但他們的答案與Azure函數無關,而是將我引用到DLL通知掛鉤,然後在uservoice上推薦I文件。

我確定這裏一定有人實施了某種錯誤狀態通知。我更喜歡不需要代碼的解決方案。

回答

1

不幸的是,這個掛鉤不存在。

你可以從定時器觸發器切換到隊列觸發器嗎?

您可以獲得重試(如果您需要),並且在指定的嘗試次數後將消息發送到毒性隊列。

要計劃執行,您可以添加具有可見性超時的隊列消息以匹配您的計劃。

+0

感謝。將調查並報告。此外,將於下週在無服務器計算研討會上發佈BUILD。 – Leigh007

+0

剛剛回到這裏。如果我正確理解你,我應該1)創建一個隊列2)編寫一個定時器函數,它根據消息在隊列中添加一條消息,使用消息的超時時間,以便在一段時間後消失3)改變我的實際工作者函數那是一個定時器函數,它是一個隊列函數。 4)編寫另一個函數,讀取具有相同名稱'orig-queue'-poison,然後具有發送網格或twilio輸出的毒性隊列,或者以其他方式處理消息。這是對的嗎? Thx – Leigh007

+0

這將工作。您也可以讓每個隊列執行計劃下一次執行。要啓動它,請手動運行該功能或將項目添加到隊列中。 Jonny也有一些很好的輸入 - 如果你不擔心綁定錯誤或超時,try try可以爲你工作。 –

0

爲了得到對故障警報有兩個選項:

  1. 定時器觸發比掃描執行日誌(通過SFTP)的故障。
  2. 將整個函數包裝在try/catch塊中,並在catch塊中寫幾行,向您發送包含錯誤詳細信息的電子郵件。

希望這會有所幫助。

2

當函數確實失敗時,日誌條目指示失敗,所以我想知道系統中是否有鉤子可以讓系統生成通知。

...

我寧願不需要代碼的解決方案。

這是一個零代碼解決方案:

我對這個話題之前曾經戳@AzureFunctions,以及建議的反應是使用應用程序的啓示。它可以處理失敗時的警報,也可以使用webhook。

請參閱Azure Functions App-Insights關於如何將您的功能應用程序鏈接到App Insights的文檔。然後設置你想要的任何提醒。

2

監測和故障警報的推薦方法是使用,因爲所有的日誌都是AppInsights可以很容易監控故障和設置警報充分與Azure的功能,現在

https://blogs.msdn.microsoft.com/appserviceteam/2017/04/06/azure-functions-application-insights/

集成AppInsights根據您自己的標準。

但是,如果你只關心報警和不喜歡的事情等監控,你可以使用Azure的顯示器來代替:https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-get-started