搜尋作業是您在 Log Analytics 中任何資料上執行的非同步查詢,無論是分析保留還是長期保留,都會在您工作區內的新搜尋資料表中,針對互動式查詢提供查詢結果。 搜尋作業運用平行處理,並能在大型資料集中執行數小時。 本文說明如何建立搜尋作業,以及如何查詢其產生的資料。
這段影片說明使用搜尋作業的時機和方式:
需要的權限
| 動作 |
需要的權限 |
| 執行搜尋作業 |
例如,Microsoft.OperationalInsights/workspaces/tables/write所提供的 Log Analytics 工作區 Microsoft.OperationalInsights/workspaces/searchJobs/write 和 權限。 |
附註
不支援跨租用戶搜尋作業。 即使已指派的委派角色包含 searchJobs/write 權限,搜尋作業 (或還原) 也不支援 Azure Lighthouse 委派的存取。
使用搜尋作業的時機
使用搜尋作業可以:
- 從長期保留及包含基本日誌或輔助日誌的資料表中取得紀錄,並建立支援 Azure 監視器 日誌完整分析功能的全新 Analytics Logs 資料表。
- 如果 10 分鐘的記錄查詢逾時時間不夠,則會掃描大量資料。
搜尋作業的作用是什麼?
搜尋作業會掃描資料,並將其結果傳送至與來源資料相同工作區中的新資料表。 搜尋作業開始時,即可使用結果資料表,但結果可能需要一些時間才會開始出現。 成本是根據已掃描之資料的定價模型和擷取結果的大小所產生。 執行搜尋作業之前,可以使用成本估計來協助您決定是否要執行該作業。
搜尋作業結果資料表是 分析記錄資料表,可供記錄查詢,以及供其他使用工作區中資料表的 Azure 監視器 功能使用。 資料表繼承工作區設定的 保留值 ,建立後仍可編輯。
搜尋結果資料表結構描述是以來源資料表結構描述和指定的查詢為基礎。 下列其他欄位可協助您追蹤來源紀錄:
| 資料行 |
值 |
| _OriginalType |
從來源資料表輸入值。 |
| _OriginalItemId |
從來源資料表中取得_ItemID的值。 |
| _OriginalTimeGenerated |
來源資料表的 TimeGenerated 值。 |
| TimeGenerated |
搜尋作業執行的時間。 |
結果資料表上的查詢會出現在記錄查詢稽核中,但不會出現在初始搜尋作業中。
執行搜尋作業
執行搜尋工作,以將大型資料集中的記錄擷取到工作區中的新搜尋結果資料表。
以下程式碼範例限制結果為 1,500 筆紀錄。 請以 UTC 時間戳指定搜尋視窗,例如 2026-01-01T00:00:00.000Z。 例如,查詢 Heartbeat | where ComputerIP has "198.51.100.101" 會搜尋特定電腦 IP 位址的紀錄。
提示
執行搜尋工作會產生費用。 在執行搜尋作業之前,請以互動式查詢模式撰寫查詢並將其最佳化。 使用成本估計預覽來了解潛在成本。
若要執行搜尋工作,請在 Azure 入口網站中:
從 [Log Analytics 工作區] 功能表中,選取 [記錄]。
輸入搜尋工作查詢或選擇你想要的表格。
選擇螢幕右側的省略號選單,然後選擇 搜尋工作。
或者使用「執行」下拉選單,選擇「以搜尋作業執行」。
使用時間選擇器指定搜尋工作日期範圍。 選擇總保留期間內的任何期間。
如果您的 Kusto 查詢也指定時間範圍,則會針對搜尋作業使用時間範圍的聯集。
輸入搜尋工作結果資料表的名稱,然後選取 [執行搜尋工作]。
Azure 監視器記錄會執行搜尋工作,並在工作區中為您的搜尋工作結果建立新的資料表。
當新的數據表準備就緒時,請選取 [檢視 '<searchtablename>_SRCH' 以檢視 Log Analytics 中的數據表。
搜尋作業結果會在開始流入新建立的搜尋作業結果數據表時提供。
Azure 監視器記錄會顯示搜尋 作業 完成時訊息。 當您看到該訊息或進度顯示 100% 時,表示結果資料表現在已準備好,其中包含與搜尋查詢相符的所有記錄。
以下 Azure CLI 範例使用了該az monitor log-analytics workspace table search-job create指令。 它透過執行搜尋工作來建立 Log Analytics Workspace 的搜尋結果表。 結果表的名稱(你用 --name 參數設定)必須以 _SRCH結尾。
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName="<TableName>_SRCH"
searchQuery="<SearchQuery>"
startSearchTime="<StartSearchTime>"
endSearchTime="<EndSearchTime>"
limit="1500"
# Create the Log Analytics workspace search results table
az monitor log-analytics workspace table search-job create \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName" \
--search-query "$searchQuery" \
--limit "$limit" \
--start-search-time "$startSearchTime" \
--end-search-time "$endSearchTime" \
--no-wait
附註
Azure CLI指令使用目前 CLI 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在命令語法中指定。
以下 Azure PowerShell 範例使用 New-AzOperationalInsightsSearchTable cmdlet。 它透過執行搜尋工作來建立 Log Analytics Workspace 的搜尋結果表。 結果表的名稱(你用 -TableName 參數設定)必須以 _SRCH結尾。
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName = "<TableName>_SRCH"
$searchQuery = "<SearchQuery>"
$startSearchTime = "<StartSearchTime>"
$endSearchTime = "<EndSearchTime>"
$limit = 1500
# Define parameters for New-AzOperationalInsightsSearchTable
$newAzOperationalInsightsSearchTableParams = @{
ResourceGroupName = $resourceGroupName
WorkspaceName = $workspaceName
TableName = $tableName
SearchQuery = $searchQuery
Limit = $limit
StartSearchTime = $startSearchTime
EndSearchTime = $endSearchTime
}
# Create the Log Analytics workspace search results table
New-AzOperationalInsightsSearchTable @newAzOperationalInsightsSearchTableParams
附註
Azure PowerShell 指令匣會使用目前 Az 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在指令本語法中指定。
以下的 REST 範例使用 Tables - Create Or Update REST API 操作。 它透過執行搜尋工作來建立 Log Analytics Workspace 的搜尋結果表。 結果表的名稱必須以 結尾。_SRCH
在請求的主體中包含下列值:
| 名稱 |
類型 |
描述 |
properties.searchResults.query |
字串 |
使用 KQL 撰寫的日誌查詢來擷取資料。 |
properties.searchResults.limit |
整數 |
結果集當中的記錄數目上限,最多 1 億個記錄。 (選擇性) |
properties.searchResults.startSearchTime |
字串 |
要搜尋的開始時間範圍。 |
properties.searchResults.endSearchTime |
字串 |
要搜尋的結束時間範圍。 |
範例要求
此範例為指定的查詢與時間範圍建立搜尋結果表。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}_SRCH?api-version={apiVersion}
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"properties": {
"searchResults": {
"query": "<SearchQuery>",
"limit": 1500,
"startSearchTime": "<StartSearchTime>",
"endSearchTime": "<EndSearchTime>"
}
}
}
回應
狀態代碼:202 已接受。 請求被接受,但搜尋任務可能仍在進行中。
請查看表格狀態 以監控進度。
附註
範本部署是建立或更新操作,而非部分補丁更新。 每個搜尋作業都使用新的 _SRCH 資料表名稱。
以下 Bicep 範例使用資源Microsoft.OperationalInsights/workspaces/tables類型。 部署到包含該工作區的資源群組。
param workspaceName string = '<WorkspaceName>'
param tableName string = '<TableName>_SRCH'
param searchQuery string = '<SearchQuery>'
param startSearchTime string = '<StartSearchTime>'
param endSearchTime string = '<EndSearchTime>'
resource searchTable 'Microsoft.OperationalInsights/workspaces/tables@<ApiVersion>' = {
name: '${workspaceName}/${tableName}'
properties: {
searchResults: {
query: searchQuery
limit: 1500
startSearchTime: startSearchTime
endSearchTime: endSearchTime
}
}
}
附註
範本部署是建立或更新操作,而非部分補丁更新。 對每個搜尋作業使用新的 _SRCH 資料表名稱。
以下 ARM 範本範例使用資源 Microsoft.OperationalInsights/workspaces/tables 類型。 部署到包含該工作區的資源群組。
建立搜尋結果表
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "<WorkspaceName>"
},
"tableName": {
"type": "string",
"defaultValue": "<TableName>_SRCH"
},
"searchQuery": {
"type": "string",
"defaultValue": "<SearchQuery>"
},
"startSearchTime": {
"type": "string",
"defaultValue": "<StartSearchTime>"
},
"endSearchTime": {
"type": "string",
"defaultValue": "<EndSearchTime>"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces/tables",
"apiVersion": "<ApiVersion>",
"name": "[format('{0}/{1}', parameters('workspaceName'), parameters('tableName'))]",
"properties": {
"searchResults": {
"query": "[parameters('searchQuery')]",
"limit": 1500,
"startSearchTime": "[parameters('startSearchTime')]",
"endSearchTime": "[parameters('endSearchTime')]"
}
}
}
]
}
取得搜尋工作狀態和詳細資料
請查看搜尋結果表格,追蹤搜尋工作的進度。
從 [Log Analytics 工作區] 功能表中,選取 [記錄]。
從 [數據表>搜尋結果] 中,將滑鼠停留在搜尋結果數據表上以檢視進度。
搜尋作業結果數據表上的圖示會顯示更新指標圖示,直到搜尋作業完成為止。
以下 Azure CLI 範例使用了該az monitor log-analytics workspace table show指令。 它會取得搜尋工作表的狀態與詳細資訊。
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName="<TableName>_SRCH"
# Get the status and details of the search job table
az monitor log-analytics workspace table show \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName" \
--output table
附註
Azure CLI指令使用目前 CLI 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在命令語法中指定。
以下 Azure PowerShell 範例使用 Get-AzOperationalInsightsTable cmdlet。 它會取得搜尋工作表的狀態與詳細資訊。
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName = "<TableName>_SRCH"
# Define parameters for Get-AzOperationalInsightsTable
$getAzOperationalInsightsTableParams = @{
ResourceGroupName = $resourceGroupName
WorkspaceName = $workspaceName
TableName = $tableName
}
# Get the status and details of the search job table
Get-AzOperationalInsightsTable @getAzOperationalInsightsTableParams
當你不提供 -TableName時,該 cmdlet 會列出所有與工作區相關的資料表。
附註
Azure PowerShell 指令匣會使用目前 Az 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在指令本語法中指定。
以下的 REST 範例使用 Tables - Get REST API 操作。 它會取得搜尋工作表的狀態與詳細資訊。
搜尋職缺表狀態
provisioningState 屬性表示搜尋工作的目前狀態。 API 在你啟動搜尋任務時回傳這個屬性,之後你可以透過 GET 資料表上的操作來取得這個屬性。 該 provisioningState 屬性具有以下其中一個值:
| 值 |
描述 |
| 更新中 |
填入資料表及其結構描述。 |
| 進行中 |
搜尋作業正在執行,正在擷取資料。 |
| 成功 |
搜尋作業已完成。 |
| 刪除中 |
刪除搜尋作業資料表。 |
範例要求
此範例會擷取上一個範例中搜尋作業的資料表狀態。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}_SRCH?api-version={apiVersion}
Authorization: Bearer {accessToken}
回應
以下範例回應顯示 Heartbeat 查詢的搜尋已完成。 為了聚焦於搜尋工作屬性而將其簡寫。
{
"properties": {
"retentionInDays": 30,
"totalRetentionInDays": 30,
"archiveRetentionInDays": 0,
"plan": "Analytics",
"lastPlanModifiedDate": "Thu, 08 Jan 2026 00:00:00 GMT",
"schema": {
"name": "HeartbeatByIp_SRCH",
"tableType": "SearchResults",
"description": "This table was created using a Search Job with the following query: 'Heartbeat | where ComputerIP has \"198.51.100.101\"'.",
"columns": [],
"standardColumns": [],
"solutions": [
"LogManagement"
]
},
"searchResults": {
"query": "Heartbeat | where ComputerIP has \"198.51.100.101\"",
"limit": 1500,
"startSearchTime": "2026-01-01T00:00:00.000Z",
"endSearchTime": "2026-01-08T00:00:00.000Z",
"sourceTable": "Heartbeat"
},
"provisioningState": "Succeeded"
},
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.OperationalInsights/workspaces/ContosoWorkspace/tables/HeartbeatByIp_SRCH",
"name": "HeartbeatByIp_SRCH"
}
刪除搜尋任務表
查詢完後刪除搜尋工作表。 此最佳做法可減少工作區雜亂和數據保留的額外費用。
考慮事項
搜尋作業須遵循下列考量:
- 進行最佳化,一次查詢一個資料表
- 搜尋日期範圍是總保留期間內的任何期間
- 支援最多可達 24 小時逾時的長時間執行搜尋
- 結果限制為記錄集中的 100,000,000 筆記錄 - 如果超過限制,Azure 監視器會中止作業,狀態為 部分成功,而資料表只會包含到該點為止擷取的記錄
- 平行執行局限於每個工作區十個搜尋作業。
- 每個工作區限制為 200 個搜尋結果表格
- 每個工作區每天只能執行 200 次搜尋工作
- 不支援跨租用戶搜尋作業
- 即使委派包含適當的 searchJobs/write 權限,搜尋作業也不支援 Azure Lighthouse 委派的存取權,會失敗並顯示錯誤訊息:
User<managing-tenant-userId>。
KQL 查詢注意事項
搜尋工作會掃描特定資料表中的大量資料,因此搜尋工作查詢必須始終以資料表名稱開始。 為了透過分發與分割實現非同步執行,查詢支援 KQL 的子集,包括以下表格運算子:
這些運算子中的所有函式和二元運算元都可以使用。
contains字串運算子被阻止在搜尋工作中使用,因為進階文字比對對效能有重大影響。 請改用 has 字串運算子。 如需效能考慮的詳細資訊,請參閱 優化 Azure 監視器中的記錄查詢。
計價模式
搜尋作業費用取決於:
定價範例
如果在包含分析日誌的表格上搜尋長達 60 天,且該表格每天攝取 500 GB 的資料,但該表格的分析保留期設定為 30 天,則你將被收取 15,000 GB 掃描資料的費用——只有長期保留的 30 天資料。 掃描分析保存期間 30 天的資料是免費的。 如果搜尋作業傳回 1,000 筆記錄,您需要支付將這 1,000 筆記錄擷取到結果資料表的費用。
如果在包含基本或輔助日誌的表格上搜尋長達 60 天,且該表格每天吞入 500 GB 的資料,則你將被收取 30,000 GB 掃描資料的費用。 如果搜尋作業傳回 1,000 筆記錄,您需要支付將這 1,000 筆記錄擷取到結果資料表的費用。
如需詳細資訊,請參閱 Azure 監視器計量價格。
相關內容