監視 Azure Functions 中的執行

Azure Functions 提供與 Azure Application Insights 的內建整合來監視函數執行。 本文提供 Azure 針對監視 Azure Functions 所提供的監視功能概觀。

Application Insights 會收集記錄、效能和錯誤資料。 藉由自動偵測效能異常並具有功能強大的分析工具,您可以更輕鬆地診斷問題,更深入地了解函式的使用情形。 這些工具的設計目的是協助您持續改善函式的效能和可用性。 您甚至可以在本機函式應用程式專案開發期間使用 Application Insights。 如需詳細資訊,請參閱 Application Insights 是什麼?

由於 Azure Functions 內建 Application Insights 檢測設備,因此,您需要有效的檢測金鑰,才能將您的函式應用程式連線至 Application Insights 資源。 您在 Azure 中建立函式應用程式資源時,檢測金鑰會新增至您的應用程式設定。 如果您的函式應用程式還沒有這個金鑰,您可以手動設定

您也可以使用 Azure 監視器來監視函數應用程式本身。 若要深入了解,請參閱使用 Azure 監視器來監視 Azure Functions

Application Insights 定價和限制

您可以免費試用 Application Insights 與 Azure Functions 的整合,唯每日可免費處理的資料量有限。

如果您在開發期間啟用 Applications Insights,您可能會在測試期間達到此限制。 當您趨近每日限制時,Azure 會提供入口網站及電子郵件通知。 如果您錯過那些警示並達到該限制,Application Insights 查詢中將不會出現新記錄。 請留意限制,以避免不必要的疑難排解時間。 如需詳細資訊,請參閱 Application Insights 計費

重要事項

Application Insights 具有取樣功能,可以提供保護,以避免在尖峰負載期間完成的執行中產生過多的遙測資料。 取樣預設為啟用。 如果您似乎有資料遺失,可能就需要調整取樣設定,以符合您特定的監視案例。 若要深入了解,請參閱設定取樣

可供函式應用程式使用的 Application Insights 功能完整清單,詳述於適用於 Azure Functions 的 Application Insights 支援的功能中。

Application Insights 整合

一般而言,您會在建立函式應用程式時建立 Applications Insights 執行個體。 在此情況下,整合所需的檢測金鑰已設定為應用程式設定,名稱為 APPINSIGHTS_INSTRUMENTATIONKEY。 如果基於某種原因,您的函式應用程式沒有檢測金鑰集,則您必須啟用 Application Insights 整合

重要事項

主權雲端,例如 Azure Government,需要使用 Application Insights 連接字串 (APPLICATIONINSIGHTS_CONNECTION_STRING),而非檢測金鑰。 若要深入了解,請參閱 APPLICATIONINSIGHTS_CONNECTION_STRING 參考

下表詳細說明可用來監視函數應用程式的 Application Insights 支援功能:

Azure Functions 執行階段版本 1.x 2.x+
自動收集
• 要求
• 例外狀況
• 效能計數器
• 相依性
   — HTTP
   — 服務匯流排
   — 事件中樞
   — SQL*
支援的功能
• QuickPulse/LiveMetrics
   — 保護控制通道
• 取樣
• 活動訊號
Correlation (相互關聯)
• Service Bus
• 事件中樞
可設定
可完整設定

* 若要啟用 SQL 查詢字串文字的集合,請參閱啟用 SQL 查詢集合

收集遙測資料

啟用 Application Insights 整合後,遙測資料會傳送至連線的 Application Insights 執行個體。 此資料包括 Functions 主機所產生的記錄、從函式程式碼寫入的追蹤以及效能資料。

注意

除了來自函式和 Functions 主機的資料之外,您也可以從 Functions 調整控制器收集資料。

記錄層級和類別

當您從應用程式程式碼撰寫追蹤時,您應該將記錄層級指派給這些追蹤。 記錄層級可讓您限制從追蹤收集到的資料量。

記錄層級會指派給每個記錄檔。 值為整數,表示相對重要性:

LogLevel 程式碼 描述
追蹤 0 包含最詳細訊息的記錄。 這些訊息可能包含敏感性應用程式資料。 這些訊息預設會停用,且永遠不應在生產環境中啟用。
偵錯 1 開發期間用於互動式調查的記錄。 這些記錄主要應包含適用於偵錯的資訊,且不具備任何長期值。
資訊 2 追蹤應用程式一般流程的記錄。 這些記錄應具備長期值。
警告 3 醒目提示應用程式流程中異常或未預期事件的記錄,這些異常或未預期事件不會造成應用程式停止執行。
錯誤 4 在目前流程因失敗而停止執行時醒目提示的記錄。 這些錯誤應指出目前活動中的失敗,而非整個應用程式的失敗。
重大 5 描述無法復原的應用程式或系統損毀,或需要立即注意重大失敗的記錄。
None 6 停用指定類別的記錄。

host.json 檔案的設定決定函式應用程式傳送至 Application Insights 的記錄數量。

若要深入了解記錄層級,請參閱設定記錄層級

藉由將記錄項目指派給類別,您可以更充分掌控從函式應用程式中特定來源產生的遙測。 類別可讓您更輕鬆地對所收集的資料執行分析。 從函式程式碼撰寫的追蹤會根據函式名稱指派給個別類別。 若要深入了解類別,請參閱設定類別

自訂遙測資料

C#JavaScriptPython,您可以使用 Application Insights SDK 撰寫自訂遙測資料。

相依性

從 Functions 2.x 版開始,Application Insights 會針對使用特定用戶端 SDK 的繫結,自動收集相依性資料。 在隔離式背景工作處理序中執行的 C# 應用程式目前不支援 Application Insights 分散式追蹤和相依性追蹤。 Application Insights 收集下列相依性資料:

  • Azure Cosmos DB
  • Azure 事件中樞
  • Azure 服務匯流排
  • Azure 儲存體服務 (Blob、佇列和資料表)

也會擷取使用 SqlClient 的 HTTP 要求和資料庫呼叫。 如需 Application Insights 支援的相依性完整清單,請參閱自動追蹤的相依性

Application Insights 會產生所收集相依性資料的應用程式對應。 以下是 HTTP 觸發程序函式搭配佇列儲存體輸出繫結的應用程式對應範例。

具有相依性的應用程式對應

相依性會寫入於 Information 層級。 如果您在 Warning 或以上進行篩選,您不會看見相依性資料。 此外,自動收集相依性會在非使用者範圍發生。 若要擷取相依性資料,請確定層級的設定至少是在主機中使用者範圍 (Function.<YOUR_FUNCTION_NAME>.User) 之外的 Information

除了自動收集相依性資料之外,您也可以使用其中一個語言特定的 Application Insights SDK,將自訂相依性資訊寫入至記錄。 如需如何撰寫自訂相依性的範例,請參閱下列其中一個語言特定範例:

效能計數器

在 Linux 上執行時,不支援自動收集效能計數器。

寫入至記錄

您寫入至記錄和您使用 API 的方式取決於您函式應用程式專案的語言。
若要深入了解如何從函式撰寫記錄,請參閱語言的開發人員指南。

分析資料

根據預設,從函式應用程式收集的資料會儲存在 Application Insights 中。 在 Azure 入口網站中,Application Insights 提供一組廣泛的遙測資料視覺效果。 您可以深入了解錯誤記錄和查詢事件和計量。 若要深入了解,包括如何檢視和查詢所收集資料的基本範例,請參閱分析 Application Insights 中的 Azure Functions 遙測

串流記錄

開發應用程式時,您通常會想要查看在 Azure 中執行時以近乎即時方式寫入至記錄的內容。

有兩種方式可以檢視函式執行所產生的記錄資料流。

  • 內建記錄資料流:App Service 平台可讓您檢視應用程式記錄檔的資料流。 此資料流相當於您在本機開發期間對函式進行偵錯,以及在入口網站中使用 [測試] 索引標籤時所看到的輸出。 隨即會顯示所有以記錄為基礎的資訊。 如需詳細資訊,請參閱串流處理記錄。 此串流處理方法僅支援單一執行個體,且不能與在使用量方案中的 Linux 上執行的應用程式搭配使用。

  • 即時計量資料流:當您的函式應用程式連線到 Application Insights 時,您可以在 Azure 入口網站中使用即時計量資料流,以近乎即時方式來檢視記錄資料和其他計量。 當您在使用量方案中監視在多個執行個體或 Linux 上執行的函式時,請使用此方法。 此方法會使用取樣資料

您可以在入口網站和大部分的本機開發環境中檢視記錄資料流。 若要了解如何啟用記錄資料流,請參閱在 Azure Functions 中啟用串流執行記錄

診斷記錄

Application Insights 可讓您將遙測資料匯出至長期儲存體或其他分析服務。

由於 Functions 也會與 Azure 監視器整合,因此您也可以使用診斷設定,將遙測資料傳送至包括 Azure 監視器記錄在內的各種目的地。 若要深入了解,請參閱使用 Azure 監視器記錄監視 Azure Functions

調整控制器記錄

Azure Functions 調整控制器監視執行應用程式所在的 Azure Functions 主機執行個體。 此控制器會根據目前的效能,決定何時要新增或移除執行個體。 您可以讓調整控制器發出記錄至 Application Insights,進一步了解調整控制器針對您的函式應用程式所做的決策。 您也可以將產生的記錄儲存在 Blob 儲存體中,以供另一個服務進行分析。

若要啟用此功能,請將名為 SCALE_CONTROLLER_LOGGING_ENABLED 的應用程式設定新增至函式應用程式設定。 若要了解如何進行,請參閱設定調整控制器記錄

Azure 監視器計量

除了 Application Insights 收集的記錄型遙測資料之外,您也可以從 Azure 監視器計量取得函式應用程式如何執行的資料。 若要深入了解,請參閱使用 Azure 監視器進行監視

報告問題

若要回報關於 Functions 中 Application Insights 整合的問題,或是提出建議或要求,請在 GitHub 中建立問題 \(英文\)。

後續步驟

如需詳細資訊,請參閱下列資源: