监视 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。
计算机 计算机名(如果操作与 Azure Monitor 代理相关)。
CorrelationId 用于对连续的相关操作进行分组。

类别

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

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

引流

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

重要

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

操作:数据收集已停止

“由于达到每日免费数据限制,数据收集已停止。 引入状态 = 超出配额

在过去 7 天内,日志收集已达到每日设置的限制。 如果将工作区设置为Free tier,或者为该工作区配置了每日收集限制,则会设置此限制。 达到设定的限制后,数据收集将在当天自动停止,只能在下一个收集日恢复。

建议的操作:

  • 查看 _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 Monitor 服务限制
    - 分析 Log Analytics 工作区中的使用情况

操作:最大表列计数

类型为<表名称>的数据已丢弃,因为字段数量<新字段数量>超过了每种数据类型<当前字段数量上限>个自定义字段的限制。

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

操作:字段内容验证

类型为<表名称>的下列字段<字段名称>的值已被截断为允许的最大大小,即 <字段大小限制> 字节。 请相应地调整输入。”

Azure Monitor日志处理了大于限制大小的字段。 该字段已被截断至允许的长度上限。 不建议发送大于允许限制的字段,因为会导致数据丢失。

建议的操作:

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

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

传统数据收集

以下部分提供有关旧数据收集错误的修正信息。

操作:Azure 活动日志收集

已失去对该订阅的访问权限。 确保该 <subscription id> 订阅位于 <tenant id> Microsoft Entra 租户中。 如果订阅转移到了另一个租户,则不会影响服务,但租户的信息可能需要一小时才能传播。”

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

建议的操作:

  • 如果警告消息中提到的订阅不再存在,请使用 数据源 - 删除 API 禁用旧数据收集。
  • 如果不再有权访问警告消息中提到的订阅:
    • 按照上一步骤操作,断开订阅连接。
    • 若要继续从此订阅收集日志,请联系订阅所有者来修复权限,重新启用活动日志收集功能。
  • 创建诊断设置,以便将活动日志发送到 Log Analytics 工作区。

警报规则

当在 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)

后续步骤