基于日志的指标概览

本页面从概念上简要介绍了基于日志的指标。

基于日志的指标可帮助您观察大量日志条目中的趋势和模式。例如,您可以使用基于日志的指标来统计包含特定消息的日志条目数量,或提取日志条目中记录的延迟时间信息。您可以在 Cloud Monitoring 图表中显示基于日志的指标,而提醒政策可以监控这些指标。

基于日志的指标可分为两种类别:

  • 基于项目。这些基于日志的指标用于评估通过项目的日志接收器进行传递,然后存储在Google Cloud 项目的日志存储桶中的日志条目。进行评估的日志条目包括由其他项目中的日志接收器路由到您的 Google Cloud 项目的条目。

    您可能无法使用基于日志的指标来评估源自您项目的所有日志条目。例如,如果管理员创建了拦截聚合接收器,则由该接收器路由的日志条目将无法到达项目级接收器。因此,这些日志条目无法计入基于日志的指标。

  • 基于日志存储桶。这些基于日志的指标用于评估存储在特定日志存储桶中的日志条目。

如何确定基于日志的指标的时序值

本部分简要介绍了如何确定基于日志的计数器类型指标的时序中的值。还说明了为什么基于日志的指标的时序可能会有缺口。对于基于日志的分布值指标,过程是类似的。

对于基于日志的计数器类型指标,Logging 会执行以下操作:

  1. 它会创建一个或多个数据流,并针对每个数据流管理一组内存中计数器。

    指标和资源标签集的每个唯一值组合都有一个对应的数据流。每个内存中计数器都用于不同的时间间隔,但每个计数器都会记录与过滤条件匹配且具有与相应时间间隔对应的时间戳的日志条目数量。

  2. 对于每个数据流,Logging 后端会每分钟使用内存中计数器的值来确定如何更新由 Cloud Monitoring 管理的时序。

    如果有 5 个数据流,则有 5 个由 Monitoring 管理的时序。您可以将这些时序绘制成图表。您还可以创建提醒政策来监控这些时序。

示例:零值如何导致数据缺口

请考虑以下时序:

Example time series: (T1, -), (T2, -), (T3, 0), (T4, 1), (T5, 0), (T6, -)

在上面的表达式中,(T1, -) 表示没有为时间 T1 写入任何值。这对应于时序中的一个值缺口。相比之下,(T3, 0) 表示时序在时间 T3 时的值为零。

对于每个数据流,基于日志的指标的后端系统会使用以下规则来确定要将哪个值写入由 Monitoring 存储的时序:

  • 如果某个时间间隔的汇总计数不为零,系统会将该值写入时序。

    在示例时序中,只有时间间隔 T4 具有非零值。值 1 表示有一个时间戳与 T4 时间间隔对应的日志条目与基于日志的指标的过滤条件匹配。

  • 如果某个时间间隔的汇总计数为零,当相邻时间间隔的值不为零时,系统会将零值写入该时序。

    在示例时序中,在时间 T3 时,汇总计数为零。不过系统会写入零值,因为在时间 T4 时,汇总计数不为零。同样,在时间 T5 时,汇总计数为零。系统会将零值写入时序,因为上一个时间间隔的值不为零。

  • 否则,时序不会更新,并且该时间间隔会存在数据缺口。

    在示例时序中,时间间隔 T1T2T6 没有值。在这些时间间隔内,汇总计数为零,并且相邻时间间隔的计数也为零。

对延迟日志条目和未来日志条目的处理

当日志条目到达并具有与已处理的时间间隔对应的时间戳时,Logging 后端会生成历史数据。历史数据用于更新以前写入的计数。

当日志条目到达并具有未来的时间戳时,Logging 后端会累积这些计数。在时序中,当这些日志条目的时间戳与当前时间间隔对应时,系统会对其进行计数。

基于日志的指标来源

您可以使用 Cloud Logging 定义的指标来收集常规用量信息,并且可以定义自己的基于日志的指标来捕获特定于您的应用或业务的信息。

基于日志的指标可以在单个 Google Cloud 项目或日志存储桶中应用。您无法为其他 Google Cloud 资源(例如 Cloud Billing 账号或组织)创建基于日志的指标。

如需了解基于项目的基于日志的指标与基于存储桶的基于日志的指标之间的区别,请参阅基于日志的存储桶级指标

系统定义的指标

Logging 会提供一组用量值指标,例如存储在项目的日志存储桶中的日志条目数量,或您导出的字节数量。如需查看系统定义的指标的完整列表,请参阅Google Cloud 指标:日志记录

用户定义的指标

您可以创建用户定义的基于日志的指标,以跟踪对您的项目而言较为重要的其他指标。例如,您可以创建基于日志的指标来计算与给定过滤条件匹配的日志条目的数量。

默认情况下,用户定义的基于日志的指标是根据 Logging API 针对 Google Cloud 项目收到的所有日志计算得出的,不考虑可能应用于Google Cloud 项目的任何包含项过滤条件排除项过滤条件

您还可以为 Google Cloud 项目中的特定日志存储桶创建用户定义的基于日志的指标。基于日志的存储桶级指标是根据以存储桶为目标的所有日志(无论其来源如何)计算得出的。如需了解详情,请参阅针对日志存储桶的基于日志的指标

基于日志的指标的数据类型

基于日志的指标可以从日志中提取数据,以创建以下类型的指标:

  • 计数器:这些指标会统计在特定时间段内与指定过滤条件匹配的日志条目数量。如果您想跟踪某个值或字符串在日志中出现的次数,请使用计数器。
  • 分布:这些指标也会统计值,但它们会将计数按值的范围(直方图分区)进行收集。如果您想提取延迟时间等值,请使用分布。
  • 布尔值:这些指标会捕获日志条目是否与指定的过滤条件匹配。

用户定义的基于日志的指标既可以是计数器指标类型,也可以是分布指标类型。大多数系统定义的基于日志的指标都是计数器指标,但有些是布尔值类型。后续部分将详细介绍计数器和分布的特性。

用户定义的基于日志的指标的数据仅来自在指标创建后收到的日志条目。指标不会以追溯方式填充来自 Logging 中已有日志条目的数据。

基于日志的系统指标仅通过包含的日志计算得出。 用户定义的基于日志的指标通过包含和排除的日志计算得出。

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

计数器指标

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

  • 计算包含特定特定错误消息的日志条目的数量。
  • 通过查找与如下模式匹配的日志消息来计算每个用户调用操作的次数:

    ... user USERNAME called OPERATION ...

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

如需了解详情,请参阅配置计数器指标

分布指标

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

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

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

如需了解分布(包括其时序中的格式及其可视化方式),请参阅绘制分布指标图表

如需了解如何创建基于日志的分布指标,请参阅配置分布指标

资源类型

我们建议您的基于日志的指标指定单个资源类型。此规范可确保为基于日志的指标生成的时序与 Cloud Monitoring 所需的数据模型相匹配。这还简化了创建图表和提醒政策的过程,因为对于要绘制图表或监控的时序数据,不会存在模糊性。

假设有一个基于日志的指标,其过滤条件如下:

severity>="ERROR"
resource.type="gce_instance"

Cloud Monitoring 会识别此数据是用于 Compute Engine 虚拟机实例。因此,在为虚拟机实例创建图表时,您的基于日志的指标会列为菜单中的选项。为其他资源类型创建图表时,您的基于日志的指标不会列为选项。

如果您创建基于日志的指标而不指定资源类型,Monitoring 会将基于日志的指标列为多种资源类型的选项,即使您不统计来自这些资源的条目也是如此。

标签

基于日志的指标可以包含标签,以便为指标收集多个时间序列。系统会从匹配的日志条目中的字段提取标签值。Logging 会为标签值的每个组合记录单独的时间序列。

大多数基于日志的指标都提供默认的 log 标签。此标签包含日志条目中 logName 字段LOG_ID 部分的值,例如 cloudresourcemanager.googleapis.com%2Factivity

基于日志的系统指标具有预定义标签,无法更改。

用户定义的基于日志的指标可以包含您定义的标签。通常,这些标签会从计入基于日志的指标的日志条目中提取值。

例如,您可以在基于日志的指标中使用标签来记录日志条目的来源文件夹或组织,即使无法为文件夹或组织创建基于日志的存储桶级指标。如需了解详情,请参阅基于日志的指标标签

Cloud Monitoring 中的图表和提醒政策

您可以在 Cloud Monitoring 中使用系统定义的和用户定义的基于日志的指标来创建图表和提醒政策。对于这些图表和提醒政策,您可以使用标签来过滤或组合时序。例如,您可以设置过滤条件,以便仅显示特定时序。如需了解详情,请参阅列出基于日志的指标并将其绘制成图表有关基于日志的指标的提醒

在 Cloud Monitoring 中,基于日志的指标使用以下命名模式:

  • 系统:logging.googleapis.com/SYSTEM_METRIC_NAME
  • 用户定义:logging.googleapis.com/user/USER_METRIC_NAME

请注意,用户定义的基于日志的指标包含字符串 user

Monitoring 指标范围的公开范围

基于日志的指标由 Cloud Monitoring 注入,指标数据对 Google Cloud 项目的公开范围由指标范围决定。指标范围是指由托管指标范围的项目监控的项目列表;托管项目称为“范围项目”。

默认情况下,每个项目都托管一个仅包含自身的指标范围,因此项目是其自身的范围项目。因此,您的指标(包括基于日志的指标)仅对您的Google Cloud 项目可见。

您还可以为范围项目创建多项目指标范围。使用多项目指标范围时,范围项目可以查看来自指标范围内的所有项目的指标。多项目指标范围内各个项目可见的内容由各个项目托管的指标范围决定。两个项目位于多项目指标范围内并不意味着每个项目都可以访问另一个项目中的指标或配置数据。

单个项目也可以出现在多个指标范围中。此类项目中的指标对各个指标范围的范围项目可见。

指标(包括基于日志的指标)是在特定项目中定义的。如果该项目出现在多个指标范围中,则除了在其中定义指标的项目之外,其他项目也可查看这些指标。如需了解指标范围和基于日志的存储桶级指标之间如何交互,请参阅项目和指标范围

如需详细了解指标范围(包括多项目指标范围)以及范围限定的项目,请参阅以下内容:

价格

所有用户定义的基于日志的指标是 Cloud Monitoring 自定义指标的一种类别,需要付费。如需了解价格信息,请参阅 Cloud Logging 价格:基于日志的指标

配额

如需了解与用户定义的基于日志的指标关联的配额和限制,请参阅配额和限制

问题排查

如果您在使用基于日志的指标时遇到问题,请参阅排查基于日志的指标的问题