Share via


Azure 監視器記錄查詢中的函式

函式是 Azure 監視器中的記錄查詢,可用於其他記錄查詢,就像是命令一樣。 您可以使用函式為不同的客戶提供解決方案,並在您自己的環境中重複使用查詢邏輯。 本文說明如何使用函式,以及如何建立您自己的函式。

需要的權限

  • 若要檢視或使用函式,您需要 Log Analytics工作區的 Microsoft.OperationalInsights/workspaces/query/*/read 權限,例如 Log Analytics 讀者內建角色所提供的權限。

  • 若要建立或編輯函式,您需要 Log Analytics 工作區的 microsoft.operationalinsights/workspaces/savedSearches/write 權限,例如 Log Analytics 讀者內建角色所提供的權限。

函式類型

Azure 監視器中有兩種類型的函式:

  • 解決方案函式:預先建置的函式隨附於 Azure 監視器中。 這些函式可在所有 Log Analytics 工作區中使用,且無法修改。
  • 工作區函式:這些函式會安裝在特定的 Log Analytics 工作區中。 使用者可以修改及控制這些函式。

檢視函式

您可以在 Log Analytics 工作區左窗格中的 [函式] 索引標籤上,檢視目前工作區中的解決方案函式和工作區函式。 使用篩選來篩選清單中包含的函式。 使用 [群組依據] 來變更其群組。 在 [搜尋] 方塊中輸入字串,以找出特定函式。 將滑鼠停留在函式上,以檢視其詳細資料,包括描述和參數。

Screenshot that shows viewing a function.

使用函式

藉由輸入函式名稱和任何參數的值來使用函式,就像在命令中輸入一樣。 函式的輸出可以傳回為結果,或管線傳送至另一個命令。

按兩下函式的名稱或將滑鼠停留在函式上,然後選取 [在編輯器中使用],將函式新增至目前的查詢。 當您在查詢中輸入時,工作區中的函式也會包含在 IntelliSense 中。

如果查詢需要參數,請使用 function_name(param1,param2,...) 語法提供參數。

Screenshot that shows using a function.

建立函式

若要從編輯器中的目前查詢建立函式,請選取 [儲存]>[另存為函式]

Screenshot that shows creating a function.

選取 [儲存],然後提供下表中的資訊,以在 Azure 入口網站中使用記錄分析建立函式:

設定 描述
函式名稱 函式的名稱。 名稱不能包含空格或任何特殊字元。 也不能以底線 (_) 開頭,因為此字元要保留給解決方案函式。
舊版類別 使用者定義的類別可協助篩選和群組函式。
另存為電腦群組 將查詢儲存為電腦群組
參數 針對函式中的每個變數新增參數,該函式在使用時需要值。 如需詳細資訊,請參閱函式參數

Screenshot that shows function details.

函數參數

您可以將參數新增至函式,以便在呼叫函式時提供特定變數的值。 因此,相同的函式可用於不同的查詢中,每個函式都會為參數提供不同的值。 參數是由下列屬性所定義:

設定 描述
類型 值的資料類型。
名稱 參數的名稱。 必須在查詢中使用此名稱來取代參數值。
預設值 未提供值時用於參數的值。

參數會在建立時排序。 沒有預設值的參數會放在具有預設值的參數前面。

注意

傳統 Application Insights 資源不支援參數化函式。 如果您有 以工作區為基礎的 Application Insights 資源,您可以從 Log Analytics 工作區建立參數化函式。 如需將傳統 Application Insights 資源遷移至工作區型資源的相關資訊,請參閱遷移至以工作區為基礎的 Application Insights 資源

使用函式程式碼

您可以檢視函式的程式碼,以取得其運作方式的深入解析,或修改工作區函式的程式碼。 選取 [載入函式程式碼],在編輯器中將函式程式碼新增至目前查詢。

如果您將函式程式碼新增至空白查詢或現有查詢的第一行,函式名稱就會新增至索引標籤。工作區函式可讓您編輯函式詳細資料。

Screenshot that shows loading function code.

編輯函式

藉由建立新的查詢來編輯屬性或函式的程式碼。 將滑鼠停留在函式的名稱上,然後選取 [載入函式程式碼碼]。 對程式碼進行任何修改,然後選取 [儲存]。 然後選取 [編輯函式詳細資料]。 對函式的屬性和參數進行任何變更,然後選取 [儲存]

Screenshot that shows editing a function.

範例

下列範例函式會傳回 Azure 活動記錄中自特定日期起且符合特定類別的所有事件。

從下列查詢開始,使用硬式編碼值來驗證查詢是否如預期般運作。

AzureActivity
| where CategoryValue == "Administrative"
| where TimeGenerated > todatetime("2021/04/05 5:40:01.032 PM")

Screenshot that shows the initial query.

接下來,以參數名稱取代硬式編碼值。 然後選取 [儲存]>[另存為函式] 來儲存函式。

AzureActivity
| where CategoryValue == CategoryParam
| where TimeGenerated > DateParam

Screenshot that shows saving the function.

為函式屬性提供下列值:

屬性
函式名稱 AzureActivityByCategory
舊版類別 示範函式

先定義下列參數,再儲存函式:

類型 名稱 預設值
string CategoryParam "系統管理"
Datetime DateParam

Screenshot that shows function properties.

建立新的查詢,並且藉由將滑鼠停留在上面來檢視新的函式。 查看參數的順序。 當您使用函式時,必須依此順序指定這些函式。

Screenshot that shows viewing details.

選取 [在編輯器中使用],將新的函式新增至查詢。 然後新增參數的值。 您不需要指定 CategoryParam 的值,因為其有預設值。

Screenshot that shows adding values for parameters.

下一步

如需如何撰寫 Azure 監視器記錄查詢的詳細資訊,請參閱字串作業