搜索作业是对在 Log Analytics 中的任何数据运行的异步查询,包括交互式和长期保留中的数据,查询结果位于工作区内的新搜索表中,可进行交互式查询。 搜索作业使用并行处理,可能会对大型数据集运行数小时。 本文介绍如何创建搜索作业以及如何查询其结果数据。
所需的权限
操作 |
所需的权限 |
运行搜索作业 |
对 Log Analytics 工作区具有 Microsoft.OperationalInsights/workspaces/tables/write 和 Microsoft.OperationalInsights/workspaces/searchJobs/write 权限,例如,Log Analytics 参与者内置角色所提供的权限。 |
注意
目前不支持跨租户搜索作业,即使通过 Azure Lighthouse 管理 Entra ID 租户也是如此。
何时使用搜索作业
搜索作业可用于:
- 从长期保留内容以及基本计划和辅助计划的表中检索记录,并将其整合到一个新的 Analytics 表中,以便充分利用 Azure Monitor 日志的完整分析功能。
- 如果 10 分钟的日志查询超时时间不够,则可扫描大量数据。
搜索作业有什么作用?
搜索作业将其结果发送到与源数据位于同一工作区中的新表中。 搜索作业开始后,结果表即告可用,但结果可能需要一段时间才能开始显示。
搜索作业结果表是一个分析表,可用于日志查询和其他使用工作区中表的 Azure Monitor 功能。 该表使用为工作区设置的保留值,但你可以在创建表后修改此值。
搜索结果表架构基于源表架构和指定的查询。 以下其他列可帮助你跟踪源记录:
列 |
值 |
_OriginalType |
源表中的 Type 值。 |
_OriginalItemId |
源表中的 _ItemID 值。 |
_OriginalTimeGenerated |
源表中的 TimeGenerated 值。 |
TimeGenerated |
搜索作业运行时间。 |
对结果表的查询显示在日志查询审核中,但不显示在初始搜索作业中。
运行搜索作业
运行搜索作业,以将大型数据集中的记录提取到工作区中的新搜索结果表中。
提示
运行搜索作业会产生费用。 因此,在运行搜索作业之前,请在交互式查询模式下写入和优化查询。
若要运行搜索作业,请在 Azure 门户中执行以下操作:
在“Log Analytics 工作区”菜单中,选择“日志”。
请选择屏幕右侧的省略号菜单,然后将“搜索作业模式”切换为开启状态。
Azure Monitor 日志 intellisense 支持搜索作业模式下的 KQL 查询限制,有助于写入搜索作业查询。
使用时间选取器指定搜索作业日期范围。
请键入搜索作业查询,并选择“搜索作业”按钮。
Azure Monitor 日志会提示你提供结果集表的名称,并通知你会对搜索作业进行计费。
请输入搜索作业结果表的名称,然后选择“运行搜索作业”。
Azure Monitor 日志运行搜索作业,并在工作区中为搜索作业结果创建新表。
新表准备就绪后,选择“查看 tablename_SRCH”,即可在 Log Analytics 中查看该表。
当搜索作业结果开始流入新创建的搜索作业结果表时,可以看到它们。
Azure Monitor 日志会在搜索作业结束时显示“搜索作业已完成”这一消息。 结果表现已准备就绪,其中包含与搜索查询匹配的所有记录。
若要运行搜索作业,请调用表 - 创建或更新 API。 该调用包括要创建的结果表的名称。 结果表的名称必须以 _SRCH 结尾。
PUT https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/<TableName>_SRCH?api-version=2021-12-01-preview
请求正文
在请求正文中包含以下值:
名称 |
Type |
说明 |
properties.searchResults.query |
string |
用 KQL 编写的日志查询以检索数据。 |
properties.searchResults.limit |
integer |
结果集中的最大记录数,最多 100 万条记录。 (可选) |
properties.searchResults.startSearchTime |
string |
搜索的时间范围的开始时间。 |
properties.searchResults.endSearchTime |
string |
搜索的时间范围的结束时间。 |
示例请求
此示例创建一个名为 Syslog_suspected_SRCH 的表,其中包含在 Syslog 表中搜索特定记录的查询结果。
请求
PUT https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/testRG/providers/Microsoft.OperationalInsights/workspaces/testWS/tables/Syslog_suspected_SRCH?api-version=2021-12-01-preview
请求正文
{
"properties": {
"searchResults": {
"query": "Syslog | where * has 'suspected.exe'",
"limit": 1000,
"startSearchTime": "2020-01-01T00:00:00Z",
"endSearchTime": "2020-01-31T00:00:00Z"
}
}
}
响应
状态代码:202 已接受。
若要运行搜索作业,请运行 az monitor log-analytics workspace table search-job create 命令。 你使用 --name
参数设置的结果表的名称必须以“_SRCH”结尾。
示例
az monitor log-analytics workspace table search-job create --subscription ContosoSID --resource-group ContosoRG --workspace-name ContosoWorkspace --name HeartbeatByIp_SRCH --search-query 'Heartbeat | where ComputerIP has "00.000.00.000"' --limit 1500 --start-search-time "2022-01-01T00:00:00.000Z" --end-search-time "2022-01-08T00:00:00.000Z" --no-wait
若要运行搜索作业,请运行 New-AzOperationalInsightsSearchTable 命令。 你使用 TableName
参数设置的结果表的名称必须以“_SRCH”结尾。
示例
New-AzOperationalInsightsSearchTable -ResourceGroupName ContosoRG -WorkspaceName ContosoWorkspace -TableName HeartbeatByIp_SRCH -SearchQuery "Heartbeat" -StartSearchTime "01-01-2022 00:00:00" -EndSearchTime "01-01-2022 00:00:00"
获取搜索工作状态和详细信息
在“Log Analytics 工作区”菜单中,选择“日志”。
在“表”选项卡中,选择“搜索结果”以查看所有搜索作业结果表。
在搜索作业完成之前,搜索作业结果表上的图标都会显示更新指示。
调用 Tables - Get API 获取搜索作业的状态和详细信息:
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/<TableName>_SRCH?api-version=2021-12-01-preview
表状态
每个搜索作业表都有一个名为 provisioningState 的属性,该属性可以具有下列值之一:
状态 |
说明 |
更新 |
填充表及其架构。 |
正在进行 |
搜索作业正在运行,正在获取数据。 |
已成功 |
搜索作业已完成。 |
正在删除 |
删除搜索作业表。 |
示例请求
本示例检索上一示例中搜索作业的表状态。
请求
GET https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/testRG/providers/Microsoft.OperationalInsights/workspaces/testWS/tables/Syslog_SRCH?api-version=2021-12-01-preview
响应
{
"properties": {
"retentionInDays": 30,
"totalRetentionInDays": 30,
"archiveRetentionInDays": 0,
"plan": "Analytics",
"lastPlanModifiedDate": "Mon, 01 Nov 2021 16:38:01 GMT",
"schema": {
"name": "Syslog_SRCH",
"tableType": "SearchResults",
"description": "This table was created using a Search Job with the following query: 'Syslog | where * has 'suspected.exe'.'",
"columns": [...],
"standardColumns": [...],
"solutions": [
"LogManagement"
],
"searchResults": {
"query": "Syslog | where * has 'suspected.exe'",
"limit": 1000,
"startSearchTime": "Wed, 01 Jan 2020 00:00:00 GMT",
"endSearchTime": "Fri, 31 Jan 2020 00:00:00 GMT",
"sourceTable": "Syslog"
}
},
"provisioningState": "Succeeded"
},
"id": "subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/testRG/providers/Microsoft.OperationalInsights/workspaces/testWS/tables/Syslog_SRCH",
"name": "Syslog_SRCH"
}
若要检查搜索作业表的状态和详细信息,请运行 az monitor log-analytics workspace table show 命令。
示例
az monitor log-analytics workspace table show --subscription ContosoSID --resource-group ContosoRG --workspace-name ContosoWorkspace --name HeartbeatByIp_SRCH --output table \
若要检查搜索作业表的状态和详细信息,请运行 Get-AzOperationalInsightsTable 命令。
示例
Get-AzOperationalInsightsTable -ResourceGroupName "ContosoRG" -WorkspaceName "ContosoWorkspace" -tableName "HeartbeatByIp_SRCH"
注意
如果未提供“-TableName”,该命令将改为列出与工作区关联的所有表。
删除搜索作业表
我们建议你在查询完表后删除搜索作业表。 这样会减少工作空间混乱和额外的数据保留费用。
限制
搜索作业存在以下限制:
- 优化为一次查询一个表。
- 搜索日期范围最长为一年。
- 支持长达 24 小时超时的长时间运行搜索。
- 结果限制为记录集中的 100 万条记录。
- 并发执行限制为每个工作区五个搜索作业。
- 每个工作区限制为 100 个搜索结果表。
- 每个工作区每天只能执行 100 个搜索作业。
达到记录限制时,Azure 将中止作业,状态为“部分成功”,并且表中仅包含截至该点引入的记录。
KQL 查询限制
搜索作业旨在扫描特定表中的大量数据。 因此,搜索作业查询必须始终以表名开头。 为了使用分布和分段启用异步执行,查询支持 KQL 的子集,包括运算符:
可以在这些运算符中使用所有函数和二元运算符。
定价模型
搜索作业的费用基于以下因素:
例如,如果对基本表进行搜索的时间跨度为 30 天,而该表每天保存 500 GB 的数据,则需要支付 15,000 GB 的扫描数据费用。 如果搜索作业返回 1,000 条记录,则需要支付将这 1,000 条记录引入结果表中的费用。
有关详细信息,请参阅 Azure Monitor 定价。
后续步骤