在 Log Analytics 中对任何数据运行的搜索作业(包括在 分析和长期保留 中)是一种异步查询,使得查询结果在工作区中新建的搜索表上可用于交互式查询。 搜索作业使用并行处理,可能会对大型数据集运行数小时。 本文介绍如何创建搜索作业以及如何查询其结果数据。
所需的权限
操作 |
所需的权限 |
运行搜索作业 |
对 Log Analytics 工作区具有 Microsoft.OperationalInsights/workspaces/tables/write 和 Microsoft.OperationalInsights/workspaces/searchJobs/write 权限,例如,Log Analytics 参与者内置角色所提供的权限。 |
注意
目前不支持跨租户搜索作业,即使通过 Azure Lighthouse 管理 Entra ID 租户也不例外。
何时使用搜索作业
搜索作业可用于:
搜索作业有什么作用?
搜索作业会扫描数据并将其结果发送到与源数据相同的工作区中的新表。 搜索作业开始后,结果表即告可用,但结果可能需要一段时间才能开始显示。 根据扫描数据的 定价模型 和引入结果的大小产生成本。 在运行搜索作业之前,可以使用成本估算来确定是否运行作业。
搜索作业结果表是一个分析表,可用于日志查询和其他使用工作区中表的 Azure Monitor 功能。 该表使用为工作区设置的保留值,但你可以在创建表后修改此值。
搜索结果表架构基于源表架构和指定的查询。 以下其他列可帮助你跟踪源记录:
列 |
值 |
_OriginalType |
源表中的 Type 值。 |
_OriginalItemId |
源表中的 _ItemID 值。 |
_OriginalTimeGenerated |
源表中的 TimeGenerated 值。 |
TimeGenerated |
搜索作业运行时间。 |
对结果表的查询显示在日志查询审核中,但不显示在初始搜索作业中。
运行搜索作业
运行搜索作业,以将大型数据集中的记录提取到工作区中的新搜索结果表中。
提示
运行搜索作业会产生费用。 在运行搜索作业之前,在交互式查询模式下编写和优化查询。 使用成本估算预览了解潜在成本。
若要运行搜索作业,请在 Azure 门户中执行以下操作:
在“Log Analytics 工作区”菜单中,选择“日志”。
键入一个搜索作业查询或仅选择所需的表。
选择屏幕右侧的省略号菜单,然后选择 “搜索作业”。
使用时间选取器指定搜索作业日期范围。 选择总保留期内的任意时间段。
如果你的 Kusto 查询还指定了时间范围,则使用时间范围的合并来进行搜索作业。
请输入搜索作业结果表的名称,然后选择“运行搜索作业”。
Azure Monitor 日志运行搜索作业,并在工作区中为搜索作业结果创建新表。
新表准备就绪后,选择 “<查看”searchtablename>_SRCH“ 以查看 Log Analytics 中的表。
搜索作业结果在开始流入新创建的搜索作业结果表时可用。
Azure Monitor 日志显示搜索作业已完成时,会出现已完成消息。 当你看到该消息或进度显示为 100%时,结果表格已经准备好,包含与搜索查询匹配的所有记录。
若要运行搜索作业,请调用表 - 创建或更新 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
请求正文
在请求正文中包含以下值:
名称 |
类型 |
说明 |
属性.搜索结果.查询 |
字符串 |
用 KQL 编写的日志查询以检索数据。 |
属性.搜索结果.限制 |
整数 |
结果集中的最大记录数,最多 1 亿条记录。 (可选) |
属性.搜索结果.开始搜索时间 |
字符串 |
搜索的时间范围的开始时间。 |
属性.搜索结果.结束搜索时间 |
字符串 |
搜索的时间范围的结束时间。 |
示例请求
此示例创建一个名为 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 万条记录。
- 每个工作区的并发执行限制为 10 个搜索作业。
- 限制为每个工作区 200 个搜索结果表。
- 每个工作区每天最多只能执行200次搜索作业。
达到记录限制时,Azure 将中止作业,状态为“部分成功”,并且表中仅包含截至该点引入的记录。
KQL 查询注意事项
搜索作业旨在扫描特定表中的大量数据,因此搜索作业查询必须始终以表名称开头。 若要使用分布和分段启用异步执行,查询支持 KQL 的子集,包括以下运算符:
这些运算符中的所有函数和二进制运算符都可用。
定价模型
搜索作业的费用基于以下因素:
例如,如果对基本表进行搜索的时间跨度为 30 天,而该表每天保存 500 GB 的数据,则需要支付 15,000 GB 的扫描数据费用。 如果搜索作业返回 1,000 条记录,则需要支付将这 1,000 条记录引入结果表中的费用。
有关详细信息,请参阅 Azure Monitor 定价。
相关内容