在 Azure 门户中的 Log Analytics 中运行日志查询时,查询评估的数据集取决于所选的范围和时间范围。 本文介绍了范围和时间范围,并讲解如何根据您的需求分别设置它们。 本文还介绍了不同范围类型的行为。
例如,您必须具有 Microsoft.OperationalInsights/workspaces/query/*/read
权限才能访问您查询的 Log Analytics 工作区,该权限由 Log Analytics 读者内置角色 提供。
查询范围定义了查询所评估的记录。 此定义通常包括单个 Log Analytics 工作区或 Application Insights 应用程序中的所有记录。 Log Analytics 还允许为特定的受监视的 Azure 资源设置范围。 这允许资源所有者仅关注其数据,即使该资源写入多个工作区也是如此。
范围始终显示在 Log Analytics 窗口的左上角。 图标指示范围是 Log Analytics 工作区还是 Application Insights 应用程序。 无图标表示另一个 Azure 资源。
启动 Log Analytics 的方法会确定其范围,有时候你可以通过单击来更改这个范围。 下表列出了所使用的不同类型的范围,以及每个范围的不同详细信息。
重要
如果在 Application Insights 中使用基于工作区的应用程序,则其数据存储在 Log Analytics 工作区中,其中包含所有其他日志数据。 考虑到后向兼容性,当你选择应用程序作为范围时,系统会让你获得经典的 Application Insights 体验。 若要查看 Log Analytics 工作区中的此数据,请将范围设置为工作区。
查询范围 | 范围中的记录 | 如何选择 | 更改范围 |
---|---|---|---|
Log Analytics 工作区 | Log Analytics 工作区中的所有记录。 | 从 Azure Monitor 菜单或 Log Analytics 工作区 菜单中选择日志。 | 可以将范围更改为任何其他资源类型。 |
Application Insights 应用程序 | Application Insights 应用程序中的所有记录。 | 从应用程序的 Application Insights 菜单中选择“日志”。 | 只能将范围更改为另一个 Application Insights 应用程序。 |
资源组 | 由资源组中的所有资源创建的记录。 可以包含来自多个 Log Analytics 工作区的数据。 | 从资源组菜单中选择 “日志 ”。 | 无法更改范围。 |
订阅 | 订阅中的所有资源创建的记录。 可以包含来自多个 Log Analytics 工作区的数据。 | 从订阅菜单中选择 “日志 ”。 | 无法更改范围。 |
其他 Azure 资源 | 资源创建的记录。 可以包含来自多个 Log Analytics 工作区的数据。 | 从资源菜单中选择 “日志 ”。 或者 从 Azure Monitor 菜单中选择“日志”,然后选择一个新范围。 |
只能将范围更改为同一资源类型。 |
当查询范围是 Log Analytics 工作区或 Application Insights 应用程序时,门户中的所有选项和所有查询命令都可用。 不过,当限定为资源时,门户中的以下选项不可用,因为它们与单个工作区或应用程序相关联:
- 保存
- 查询资源管理器
- 新建警报规则
在限定为资源时,不能在查询中使用以下命令,因为查询范围已包含该资源或资源集数据的任何工作区:
将范围设置为资源或资源集是 Log Analytics 的强大功能,因为它允许在单个查询中自动合并分布式数据。 不过,如果需要从多个 Azure 区域的工作区中检索数据,它可能会显著影响性能。
Log Analytics 有助于防止跨多个区域中工作区的查询的过量开销,其方法是在特定数目的区域被使用时发出警告或错误。 如果范围包含 5 个或更多区域中的工作区,则查询会收到警告。 它仍将运行,但可能需要很长时间才能完成。
如果范围包含 20 个或更多区域中的工作区,则查询将被阻止运行。 在这种情况下,系统会提示减少工作区区域的数量,并尝试再次运行查询。 下拉列表将显示查询范围内的所有区域,在尝试再次运行查询之前,应减少区域数。
时间范围指定用于查询评估的记录集,这些记录是根据创建时间来选择的。 这是由工作区或应用程序中每个记录的 TimeGenerated 列定义的,如下表中指定的。 对于经典 Application Insights 应用程序,timestamp 列将用于时间范围。
通过从 Log Analytics 窗口顶部的时间选取器中选择时间范围来设置时间范围。 可以选择预定义的时间段,或选择 “自定义 ”以指定特定的时间范围。
如果在查询中设置使用标准时间列的筛选器,如上表所示,则时间选取器将更改为 “在查询中设置”,并禁用时间选取器。 在这种情况下,将筛选器放在查询顶部是最有效的,以便任何后续处理只需处理筛选的记录。
如果使用工作区或应用命令从另一个工作区或经典应用程序检索数据,则时间选取器的行为可能有所不同。 如果范围是 Log Analytics 工作区,而你使用的是 app,或者,如果范围是经典 Application Insights 应用程序,而你使用的是 workspace,则 Log Analytics 可能不知道应该由筛选器中使用的列来确定时间筛选器。
在以下示例中,范围设置为 Log Analytics 工作区。 查询使用 工作区 从另一个 Log Analytics 工作区检索数据。 时间选取器将更改为“在查询中设置”,因为它会看到一个使用预期的 TimeGenerated 列的筛选器。
不过,如果查询使用 应用 从经典 Application Insights 应用程序检索数据,则 Log Analytics 无法识别筛选器中的 时间戳 列,并且时间选取器保持不变。 在这种情况下,将应用这两个筛选器。 在此示例中,查询中仅包含过去 24 小时内创建的记录,即使它在 where 子句中指定了 7 天。