问题排查

本页面提供了在 Cloud Logging 中使用基于日志的指标时的常见情况的问题排查信息。

指标缺少日志数据

在基于日志的指标中丢失数据有几种可能的原因:

  • 新日志条目可能与您的指标的日志查询不匹配。基于日志的指标从创建指标后收到的匹配日志条目中获取数据。Logging 不会根据以前的日志条目回填指标。

  • 新的日志条目可能不包含正确的字段,或者数据的格式可能不正确,以至于分布指标无法提取。请检查您的字段名称和正则表达式是否正确。

  • 指标计数可能延迟了。即使日志查看器中显示可计数的日志条目,系统也需要最长一分钟的时间来更新 Cloud Monitoring 中的基于日志的指标。

  • 显示的日志条目的计数可能会延迟,或者可能根本不会计数,因为它们的时间戳距现在过于久远(过去或未来)。如果 Cloud Logging 在 24 小时之前或在未来 10 分钟内收到一条日志条目,则该日志条目将不会计入基于日志的指标中。

    每个日志的延迟条目数记录在系统(基于日志的)指标 logging.googleapis.com/logs_based_metrics_error_count 中。

    示例:与基于日志的指标匹配的某个日志条目出现延迟。它的 timestamp 是 2020 年 2 月 20 日下午 2:30,而 receivedTimestamp 是 2020 年 2 月 21 日下午 2:45。此日志条目将不会计入基于日志的指标中。

误报提醒或未触发的提醒

由于提醒的校准时间段太短,您可能会收到来自基于日志的指标的误报提醒或遇到提醒未触发的情况。通常情况下,当提醒使用“小于”逻辑或提醒基于分布指标的百分位条件时,校准时间段过短会导致这些问题。

由于日志条目可以延迟发送到 Logging,因此可能会出现误报提醒。例如,在某些情况下,日志字段 timestampreceiveTimestamp 可以有几分钟的差异。此外,当 Logging 提取日志时,在日志条目生成和 Logging 接收日志条目之间存在固有的延迟。这意味着对于某个特定的日志条目,Logging 可能在日志条目生成后更晚的某个时间点才会有该日志的总数。这就是为什么使用“小于”逻辑或基于分布指标百分位条件的提醒可能会产生误报提醒:并非所有日志条目都已被计算在内。

但是,基于日志的指标总是最终一致的。基于日志的指标是最终一致的,这是因为与基于日志的指标相匹配的日志条目可以使用明显早于或晚于日志的 receiveTimestamptimestamp 发送到 Logging。

这意味着,在 Logging 已经接收到具有相同时间戳的现有日志条目之后,基于日志的指标还可以接收具有较早时间戳的日志条目。因此必须更新指标值。

为了保证提醒(包括准时数据)的准确性,基于日志的指标的提醒政策应使用校准时间段大于或等于 2 分钟的提醒条件。对于发送到 Logging 的延迟时间以分钟计的日志条目,建议采用 10 分钟的校准时间段来平衡及时性和准确性。

指标的时间序列过多

指标中的时间序列数取决于标签值的不同组合的数量。时间序列的数量称为指标的基数,不能超过 30000 个。

由于您可以为标签值的每个组合生成一个时间序列,因此,如果您有一个或多个具有大量值的标签,则很容易会超过 30000 个时间序列。您需要避免使用高基数指标。

随着指标基数的增加,指标可能会受到限制,因而某些数据点可能无法写入指标。显示指标的图表必须处理大量的时间序列,因此其加载速度可能会很慢。此外,查询时间序列数据的 API 调用可能会产生相关费用;如需了解详情,请参阅 Cloud Monitoring 费用

要避免创建高基数指标,请执行以下操作:

  • 检查标签字段和提取器正则表达式是否与基数有限的值匹配。

  • 避免提取可随标签值而无限变化的文本消息。

  • 避免提取含有无边界基数的数值。

  • 仅从已知基数的标签中提取值;例如,具有一组已知值的状态代码。

这两个系统(基于日志的)指标可帮助您衡量添加或移除标签对指标基数的影响:

检查这些指标时,您可以按指标名称进一步过滤结果。如需了解详情,请参阅“选择指标:过滤”。

指标名称无效

创建计数器或分布指标时,请选择对于项目中基于日志的指标而言唯一的指标名称。

指标名称字符串不得超过 100 个字符,并且只能包含以下字符:

  • A-Z
  • a-z
  • 0-9
  • 特殊字符 _-.,+!*',()%\/

    正斜线 / 表示指标名称段的层级,不得用作名称的第一个字符。

标签值被截断

用户定义的标签的值不得超过 1024 个字节。