基于日志的指标概览

基于日志的指标指的是基于日志条目内容的 Stackdriver Monitoring 指标。例如,这类指标可以记录包含特定消息的日志条目的数量,也可以提取日志条目中报告的延迟信息。您可以在 Stackdriver Monitoring 图表和提醒政策中使用基于日志的指标。

系统(基于日志的)指标由 Stackdriver Logging 预定义。这些指标用于记录特定时间段内发生的日志记录事件的数量。

用户定义的(基于日志的)指标由项目中的用户创建。这些指标用于计算与给定过滤条件匹配的日志条目数,或跟踪匹配日志条目中的特定值。

每当收到匹配的日志条目时,Stackdriver Logging 都会累积基于日志的指标的信息。Stackdriver Logging 会定期以每分钟 1 个数据点的速率将新数据点写入指标的时间序列,以便向 Stackdriver Monitoring 提供数据。

基于日志的指标的数据来自创建指标后收到的日志条目。指标不会填充 Stackdriver Logging 中已有日志条目的数据。

开始

  1. 转到 GCP Console 中的 Stackdriver Logging > 基于日志的指标页面:

    转到“基于日志的指标”页面

  2. 在页面顶部选择一个现有 GCP 项目。您可以看到 GCP 项目中的基于日志的指标列表:

基于日志的指标界面

基于日志的指标界面

基于日志的指标界面分为两个指标类型区域:系统指标用户定义的指标

这两个区域都分别包含一个指标表摘要。表中每一行的最右侧都有一个菜单,其中具有以下选项:

基于日志的指标界面

  • 在 Metrics Explorer 中查看:借助此选项,您可以打开 Stackdriver Monitoring Metrics Explorer,以查看基于系统日志的指标的数据。

    您可以使用 Metrics Explorer 为提醒政策指定目标指标。目标区域旁的图表可向您直观地反馈相应目标指标所采集到的数据。

  • 根据指标创建提醒:借助此选项,您可以根据基于日志的指标创建提醒政策。请注意,此选项仅在指标为计数器指标时才可用。

    选择此选项将打开 Stackdriver Monitoring 控制台,您可以在其中创建、修改和管理提醒政策。如需了解详情,请参阅创建提醒政策

用户定义的指标界面

“基于日志的指标”界面中的用户定义的指标区域有几个额外的功能,可帮助您管理项目中用户定义的指标:

  • “用户定义的指标”表包括名称说明类型过滤条件列。这些列是在创建指标时指定的。

  • 借助“用户定义的指标”表上方的过滤器指标框,您可以通过文本搜索或指标名称说明过滤条件来过滤您的指标列表:

基于日志的指标界面

  • “用户定义的指标”表包括上月使用量列和使用量(本月截至目前)列。例如,如果您想查看哪些指标提取了最多的数据或估算帐单,这些使用量指标会非常实用。

  • 您可以使用表格行末尾的菜单来修改指标删除指标

此外,点击任何列名称即可按升序或降序对数据进行排序。在表格的底部,您还可以选择要显示的行数。

如需详细了解如何使用 GCP Console 管理用户定义的指标,请参阅创建计数器指标创建分布指标

基于日志的指标类型概览

Stackdriver Logging 基于日志的指标可以为以下两种指标类型之一:计数器分布。所有系统(基于日志的)指标都是计数器类型。用户定义的基于日志的指标既可以是计数器类型,也可以是分布类型。

基于日志的指标时间序列中的每个数据点仅表示自上一个数据点以来收到的额外信息 (delta)。

以下各部分介绍计数器类型和分布类型指标的特征。

计数器指标

计数器指标用于计算与高级日志过滤条件匹配的日志条目的数量。例如,您可以执行以下操作:

  • 创建一个指标,用于计算包含某些特定错误消息的日志条目的数量。
  • 通过查找如下日志消息来计算每个用户调用操作的次数

    ... user [USERNAME] called  [OPERATION] ...
    

    通过提取 [USERNAME] 和 [OPERATION] 并将其用作两个标签的值,您可以在稍后询问“sally 调用了多少次 UPDATE 操作?”、“有多少人调用了 READ 操作?”、“george 调用了多少次操作?”等问题。

如需了解详情,请参阅创建计数器指标

分布指标

分布指标会累积与过滤条件匹配的日志条目的数字数据。此类指标包含 Distribution 对象的时间序列,每个对象包含以下内容:

  • 分布中值的数量。
  • 值的平均值。
  • 方差和:Sumi=1..n(xi–mean)2
  • 一组直方图分区,其中包含每个分区中的值的数量。您可以使用默认分区布局,也可以自行选择分区布局。

分布指标的一个常见用途是跟踪延迟。收到每个日志条目后,系统将从日志条目中的某个位置提取延迟值,并将其添加到分布中。系统会按固定间隔将累积的分布写入 Stackdriver Monitoring。

如需了解详情,请参阅创建分布指标

标签

基于日志的指标可以选择性地设置标签,这会使单个指标获得多个时间序列。系统会从匹配的日志条目中的字段提取标签值。Stackdriver Logging 会为每个标签的不同值记录单独的时间序列。

系统(基于日志的)指标具有预定义标签。您可以为用户定义的指标定义自己的标签。如需了解详情,请参阅基于日志的指标标签

系统(基于日志的)指标

Stackdriver Logging 可提供一些预定义的计数器指标,用于跟踪收到的日志条目的数量和容量。此类指标具有按日志名称和严重级别记录数量的标签。下表列出了这些指标:

指标名称和说明 类型 标签
logging.googleapis.com/log_entry_count

收到的日志条目总数。

delta int64 log:日志的名称。示例:"appengine.googleapis.com/request_log"

severity:日志条目的严重性。示例:"ERROR"

logging.googleapis.com/byte_count

收到的日志条目字节总数。

delta int64 log:日志的名称。示例:"appengine.googleapis.com/request_log"
logging.googleapis.com/excluded_log_entry_count

排除的日志条目总数。

delta int64
logging.googleapis.com/excluded_byte_count

排除的日志条目中的总字节数。

delta int64
logging.googleapis.com/exports/log_entry_count

使用接收器导出的日志条目总数。

delta int64
logging.googleapis.com/exports/byte_count

使用接收器导出的日志条目总字节数。

delta int64
logging.googleapis.com/exports/error_count

因导出配置错误而未导出的日志条目总数。

delta int64
logging.googleapis.com/logs_based_metrics_error_count

延迟的日志条目数量。1

delta int64 log:日志的名称。示例:"appengine.googleapis.com/request_log"

1 延迟的日志条目不包括在 log_entry_countbyte_count 指标中。

如需查看系统(基于日志的)指标的完整列表,请参阅日志记录指标

Stackdriver Monitoring

您可以在 Stackdriver Monitoring 中使用系统(基于日志的)指标和用户定义的基于日志的指标来创建图表和提醒政策。用户定义的基于日志的指标名称以 user/ 为前缀,但系统(基于日志的)指标不是。

如果您使用的是 Stackdriver Monitoring API,则基于日志的指标名称如下所示:

logging.googleapis.com/user/[USER_METRIC_NAME]
logging.googleapis.com/[SYSTEM_METRIC_NAME]

如需了解详情,请参阅创建图表和提醒

问题排查

指标缺少日志数据

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

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

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

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

  • 您看到的日志条目的计数可能会延迟,或者可能根本不会计数,因为它们的时间戳距现在过于久远(过去或未来)。如果在过去或未来与现在相隔 10 分钟以上的时间收到一条日志条目,则该日志条目将不会计入基于日志的指标中。

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

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

指标的时间序列过多

您可能为某个基于日志的指标设置了用户定义的标签,而该标签具有大量唯一值。指标中的时间序列数取决于标签值的不同组合的数量。当标签值的基数非常高时,指标可能会受到限制,因而某些数据点可能无法写入指标。由于指标必须处理大量的时间序列,因此在图表中加载指标的速度也会很慢。此外,查询时间序列数据的 API 调用可能会产生相关费用;如需了解详情,请参阅 Stackdriver Monitoring 费用

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

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

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

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

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

指标名称无效

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

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

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

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

标签值被截断

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

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Logging
需要帮助?请访问我们的支持页面