你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

监视 Azure Monitor Log Analytics 工作区中的操作问题

若要维持 Azure Monitor 中 Log Analytics 工作区的性能和可用性,你需要能够主动检测出现的任何问题。 本文介绍如何使用操作表中的数据监视 Log Analytics 工作区的运行状况。 每个 Log Analytics 工作区都包含此表。 它包含工作区中发生的错误消息和警告。 建议为“警告”和“错误”级别的问题创建警报。

所需的权限

你必须对查询的 Log Analytics 工作区具有 Microsoft.OperationalInsights/workspaces/query/*/read 权限,例如,Log Analytics 读者内置角色所提供的权限。

_LogOperation 函数

Azure Monitor 日志会将有关任何问题的信息发送到出现相应问题的工作区中的操作表。 _LogOperation 系统函数以“操作”表为基础,提供一组简化的用于分析和报警的信息。

_LogOperation 函数返回下表中的列。

说明
TimeGenerated 事件发生的时间(UTC 形式)。
类别 操作类别组。 可用于筛选操作类型,以及帮助创建更精确的系统审核和警报。 有关类别的列表,请参阅以下部分。
操作 操作类型的说明。 该操作可以指示已达到 Log Analytics 限制之一,以及指示后端进程相关问题或任何其他服务消息。
级别 问题的严重级别:
- 信息:无需特别关注。
- 警告:进程未按预期完成,需要引起注意。
- 错误:进程失败,需要关注。
详情 操作的详细说明,包括特定的错误消息。
_ResourceId 与操作相关的 Azure 资源的资源 ID。
Computer 计算机名(如果操作与 Azure Monitor 代理相关)。
CorrelationId 用于对连续的相关操作进行分组。

类别

下表介绍了 _LogOperation 函数中的类别。

类别 说明
引流 作为数据引入过程的一部分的操作。
代理 指示代理安装问题。
数据收集 与数据收集过程相关的操作。
解决方案目标 ConfigurationScope 类型的操作已处理。
评估解决方案 评估过程已执行。

引流

引入操作是在数据引入过程中出现的问题,包括有关达到 Log Analytics 工作区限制的通知。 此类别中的错误情况可能意味着数据丢失,因此监视这些情况很重要。 有关 Log Analytics 工作区的服务限制,请参阅 Azure Monitor 服务限制

重要

如果要对使用数据收集规则 (DCR)(例如 Azure Monitor 代理或日志引入 API)的方案进行数据收集故障排除,请参阅 Azure Monitor 中的 DCR 数据收集监控和故障排除,以获取其他故障排除信息。

操作:数据收集已停止

“由于达到每日免费数据限制,数据收集已停止。 Ingestion status = OverQuota”

在过去 7 天内,日志收集已达到每日设置的限制。 在将工作区设置为“免费层”,或为此工作区配置了每日收集限制时,即已设定限制。 达到设定的限制后,数据收集将在当天自动停止,只能在下一个收集日恢复。

建议的操作:

  • 检查 _LogOperation 表中的收集已停止和收集已恢复事件:
    _LogOperation | where TimeGenerated >= ago(7d) | where Category == "Ingestion" | where Detail has "Data collection"
  • 针对“数据收集已停止”操作事件创建警报。 当达到收集限制时,此警报会通知你。
  • 达到每日收集限制后收集的数据会丢失。 使用“工作区见解”窗格查看每个源中的使用率。 也可以决定管理每日最大数据量将定价层更改为适合自身收集率模式的层。
  • 数据收集率按天计算,在第二天开始时重置。 你还可以通过针对“数据收集已恢复”操作事件创建警报来监视收集恢复事件。

操作:引入速率

“数据引入量速率超过了工作区中的阈值:每分钟 {0:0.00} MB,并且数据已被删除。”

建议的操作:

  • 检查 _LogOperation 表是否有引入速率事件:
    _LogOperation | where TimeGenerated >= ago(7d) | where Category == "Ingestion" | where Operation has "Ingestion rate"
    持续超出阈值时,每 6 小时向工作区中的操作表发送一次事件。
  • 针对“数据收集已停止”操作事件创建警报。 当达到限制时,此警报会通知你。
  • 引入速率达到 100% 时收集的数据会被删除,因此会丢失。 使用“工作区见解”窗格来查看使用模式并尝试减少它们。
    有关详细信息,请参阅:

操作:最大表列计数

“<表名称>类型的数据已删除,因为<新字段计数>字段的数目高于数据类型对应的<当前字段计数限制>自定义字段的限制。”

建议的操作:对于自定义表,你可以转到分析查询中的数据

操作:字段内容验证

“<表名称>类型的以下字段的值<字段名称>已修改为允许的最大大小 <字段大小限制> 字节。 请相应地调整输入。”

Azure 日志处理的字段大于限制大小。 字段已剪裁,符合允许的字段限制。 不建议发送大于允许限制的字段,因为会导致数据丢失。

建议的操作:

检查受影响数据类型的源:

  • 如果数据是通过 HTTP 数据收集器 API 发送的,则需更改代码/脚本以在引入数据之前拆分数据。
  • 对于由 Log Analytics 代理收集的自定义日志,请更改应用程序或工具的日志记录设置。
  • 对于任何其他数据类型,请创建支持案例。 有关详细信息,请参阅 Azure Monitor 服务限制

数据收集

以下部分提供有关数据收集的信息。

操作:Azure 活动日志收集

“无法访问订阅。 确保该 <订阅 ID> 订阅位于 <租户 ID> Microsoft Entra 租户中。 如果订阅转移到了另一个租户,则不会影响服务,但租户的信息可能需要一小时才能传播。”

在某些情况下(例如将订阅移动到其他租户),Azure 活动日志可能会停止流入工作区。 在这些情况下,需要按照本文所述过程重新连接订阅。

建议的操作:

  • 如果警告消息中提到的订阅不再存在,请转到“经典”下的“旧版活动日志连接器”窗格。 选择相关订阅,然后选择“断开连接”按钮。
  • 如果不再有权访问警告消息中提到的订阅:
    • 按照上一步骤操作,断开订阅连接。
    • 若要继续从此订阅收集日志,请联系订阅所有者来修复权限,重新启用活动日志收集功能。
  • 创建诊断设置,以便将活动日志发送到 Log Analytics 工作区。

Agent

以下部分提供有关代理的信息。

操作:Linux 代理

“来自 OMS 设置的两个连续配置应用程序失败。”

门户上的配置设置已更改。

建议的操作:如果代理检索新的配置设置时出现问题,则会引发此问题。 若要缓解此问题,请重新安装代理。 检查 _LogOperation 表中是否有代理事件

_LogOperation | where TimeGenerated >= ago(6h) | where Category == "Agent" | where Operation == "Linux Agent" | distinct _ResourceId

该列表会显示代理配置错误的资源 ID。 若要缓解此问题,请重新安装列出的代理。

警报规则

当在 Log Analytics 工作区中检测到问题时,使用 Azure Monitor 中的日志搜素警报主动获得通知。 使用一种策略,让你能够及时响应问题,同时最大限度地降低成本。 订阅将按 Azure Monitor 定价中所列对每个警报规则收费。

一项建议的策略是根据问题级别从两项预警规则开始。 针对错误使用较短的频率(例如每 5 分钟一次),而针对警告使用较长的频率(例如 24 小时)。 由于错误指示潜在的数据丢失,因此你需要快速响应这些错误,最大限度地减少任何损失。 警告通常指示无需立即关注的问题,因此你可以每天查看它们。

使用使用 Azure Monitor 创建、查看和管理日志搜索警报中的过程创建日志搜索警报规则。 以下部分介绍了每项规则的详细信息。

查询 阈值 周期 频率
_LogOperation | where Level == "Error" 0 5 5
_LogOperation | where Level == "Warning" 0 1,440 1,440

这些预警规则会对出现错误或警告的所有操作做出相同的响应。 随着你对生成警报的操作越来越熟悉,你可能想要对特定操作做出不同响应。 例如,对于特定操作,你可能想要向不同的人发送通知。

若要为特定操作创建预警规则,请使用包含“类别”和“操作”列的查询 。

以下示例在引入量速率达到限制的 80% 时创建“警告”警报:

  • 目标:选择你的 Log Analytics 工作区
  • 条件:
    • 信号名称:自定义日志搜索
    • 搜索查询:_LogOperation | where Category == "Ingestion" | where Operation == "Ingestion rate" | where Level == "Warning"
    • 依据:结果数
    • 条件:大于
    • 阈值:0
    • 时间段:5(分钟)
    • 频率:5(分钟)
  • 警报规则名称:达到每日数据限制
  • 严重性:警告(严重性 1)

以下示例在数据收集达到每日限制时创建“警告”警报:

  • 目标:选择你的 Log Analytics 工作区
  • 条件:
    • 信号名称:自定义日志搜索
    • 搜索查询:_LogOperation | where Category == "Ingestion" | where Operation == "Data collection Status" | where Level == "Warning"
    • 依据:结果数
    • 条件:大于
    • 阈值:0
    • 时间段:5(分钟)
    • 频率:5(分钟)
  • 警报规则名称:达到每日数据限制
  • 严重性:警告(严重性 1)

后续步骤