将 SQL 查询结果绘制成图表

本文档介绍了如何将 Log Analytics 查询结果绘制成图表,以便您能够在日志数据中识别出模式和趋势。借助 Log Analytics,您可以使用 SQL 查询搜索和聚合日志,以便生成有用的分析洞见。

运行查询后,您可以在表中查看查询结果,也可以将其转换为图表,还可以将查询及其可视化效果保存到信息中心。例如,如需查看日志生成的严重程度类型,请创建一个图表,显示过去 12 小时内生成的日志数量,并按 severity 细分日志。以下屏幕截图显示了按不同严重程度类型细分的数据点:

显示按严重程度细分的示例图表。

准备工作

本部分介绍了在使用 Log Analytics 之前必须完成的步骤。

配置日志存储桶

确保您的日志存储桶已升级为可使用 Log Analytics:

  1. 在 Google Cloud 控制台中,前往日志存储页面:

    前往日志存储

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 对于包含您要查询的日志视图的每个日志存储桶,请确保 Log Analytics 可用列显示打开。如果显示升级,请点击升级并完成对话框。

配置 IAM 角色和权限

本部分介绍了使用 Log Analytics 所需的 IAM 角色或权限:

  • 如需获得使用 Log Analytics 和查询日志视图所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

    • 查询 _Required_Default 日志存储桶:Logs Viewer (roles/logging.viewer)
    • 查询项目中的所有日志视图:Logs View Accessor (roles/logging.viewAccessor)

    您可以通过以下方式将主账号限制为访问特定日志视图:向在项目级上进行的 Logs View Accessor 角色授予添加 IAM 条件,或者向日志视图的政策文件添加 IAM 绑定。如需了解详情,请参阅控制对日志视图的访问权限

    这些权限与您在 Logs Explorer 页面上查看日志条目时需要的权限相同。如需了解您需要哪些额外角色才能查询用户定义的存储桶的视图,或者查询 _Default 日志存储桶的 _AllLogs 视图,请参阅 Cloud Logging 角色

  • 如需获得查询分析视图所需的权限,请让您的管理员为您授予项目的 Observability Analytics User (roles/observability.analyticsUser) IAM 角色。

  • 如要获得创建图表所需的权限,请让您的管理员为您授予项目的 Monitoring Editor (roles/monitoring.editor) IAM 角色。

选择要绘制成图表的数据

如需配置要在图表中显示的数据,请使用 SQL 构建查询。选择图表标签页后,一个图表会显示查询结果。运行查询并生成图表后,您可以更改图表类型并选择列以查看不同的数据,从而自定义图表配置。

如需以图表形式查看查询结果,请按以下步骤运行查询:

  1. 在 Google Cloud 控制台中,前往 Log Analytics 页面:

    转到 Log Analytics

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 查询窗格中,输入查询,然后点击运行

  3. 查询完成后,在结果标签页中,选择查看查询结果的方式:

    • :仅限表格式。

    • 图表:仅限图表格式

    • 二者均有:图表和表格式。

      选择查看查询结果的方式后,您可以为所选的可视化效果配置任意字段,然后将查询和结果保存到自定义信息中心。选择选项后,保存的格式为表格式。否则,格式为图表。

      对于图表,您可以通过可视化效果选项选择图表类型,并选择绘制成图表的行和列。如需详细了解图表配置,请参阅自定义图表配置

自定义图表配置

您可以通过更改图表类型、选择用于绘制图表的维度和测量以及应用细分来自定义图表配置。维度用于对行进行分组或分类,是 X 轴值。测量(或 Y 轴值)是针对 Y 轴绘制的数据系列。

更改图表类型

您可以从以下图表类型中进行选择,具体取决于您选择作为维度和测量的行和列的种类,以及您希望以何种方式直观呈现这些数据。

  • 条形图(默认):条形图会在两条轴上绘制数据。如果您的图表使用类别或字符串作为维度,则可以将条形图的图表配置设置为水平或垂直(其中维度和测量轴会交换)。

  • 折线图:折线图可用于显示数据随时间的变化情况。使用折线图时,每个时序都由一条与您选择的测量相对应的不同线条表示。

    如果 X 轴基于时间,则每个数据点都位于间隔时间的开头。每个数据点通过线性插值进行连接。

  • 堆积面积图:面积图基于折线图,每条线下方的区域都有阴影。在面积图中,数据系列会堆积。例如,如果您有两个相同的系列,则这两个系列在折线图中会重叠,但阴影区域在面积图中会堆积。

  • 饼图或圆环图:饼图使用圆形表示整个数据集,并使用圆形中的扇形表示数据集中的类别,从而显示数据集中的类别与整个数据集的关系。扇形的大小表示相应类别在整体中所占的比重(通常以百分比表示)。

  • 表:表会为查询结果中的每一行显示一行。表中的列由 SELECT 子句定义。如果您计划在信息中心中以表形式显示数据,请使用 LIMIT 子句将结果中的行数限制在数百行以内。

  • 仪表盘或统计信息摘要图表:仪表盘和统计信息摘要图表会根据最新值与一组阈值的比较情况,为您提供该值以及绿色、琥珀色或红色指示。与仅显示有关最新值的信息的仪表盘不同,统计信息摘要图表还可以包含有关过去值的信息。

    仅当查询结果至少包含一行数据,且该行包含一个具有时间戳的列和一个具有数值数据的列时,仪表盘和统计信息摘要图表才能显示查询结果。查询结果可以包含多行和多于两列的列。

    如果您想在查询中执行基于时间的聚合,请执行以下操作:

    • 配置查询,以聚合特定间隔时间内的数据、按时间戳降序排列结果以及限制结果中的行数。您可以使用 LIMIT 子句或时间范围选择器来限制查询结果中的行数。

      例如,以下内容会查询日志视图,并按小时聚合数据、应用限制以及对结果进行排序:

      SELECT TIMESTAMP_TRUNC(timestamp, HOUR) AS hour, severity, COUNT(*) AS count
      FROM `TABLE_NAME_OF_LOG_VIEW`
      WHERE severity IS NOT NULL AND severity = "DEFAULT"
      GROUP BY hour,severity
      ORDER BY hour DESC
      LIMIT 10
      
    • 设置维度以匹配报告时间单位的列。例如,如果您的查询按一小时聚合数据并创建一个名为 hour 的列,请将维度菜单设置为 hour

    • 请选择停用间隔时间,因为您的查询已指定聚合间隔时间。在此示例中,此间隔时间为一小时。

    • 测量设置为数值列,并将函数设置为

    如果您想让 Log Analytics 为您执行基于时间的聚合,请执行以下操作:

    • 配置时间范围选择器,它会影响查询结果中的行数。
    • 设置维度以匹配报告时间单位的列。例如,您可以将此菜单设置为 timestamp
    • 间隔时间菜单设置为聚合间隔时间,以便设置为特定间隔时间。例如,可将此字段的值设置为 1 hour。请勿选择自动间隔时间
    • 测量设置为数值列,然后选择一个函数,例如 sum

更改维度和测量

您可以通过选择维度和测量字段来选择要绘制成图表的行和列。

  • 维度

    维度必须是时间戳、数值或字符串列。默认情况下,维度会设置为架构中的第一个基于时间戳的列。如果查询中不存在时间戳,则系统会选择第一个字符串列作为维度。您还可以在图表显示面板中自定义维度。选择时间戳列作为维度后,图表会显示数据随时间的变化情况。选择字符串列作为条形图的维度后,您可以按升序或降序对数据进行排序,这会按词序对维度进行排序。您也可以保留“默认”排序顺序,该顺序会根据相应测量的值按降序对维度进行排序。

    默认情况下,系统会自动设置时间戳的间隔时间,但您也可以选择自定义间隔时间。自动间隔时间会根据时间范围选择器更改值,以保持类似大小的组。

    您也可以停用该间隔时间,以便在查询中指定自己的聚合和时间范围,从而进行更复杂的分析。停用间隔时间会将测量的聚合函数设置为 none。停用维度间隔时间后,仅允许使用数值指标。

  • 测量

    您可以在图表显示面板中选择多个测量。选择测量时,您还必须选择要对其分组值执行的聚合函数,例如 countsumaveragepercentile-99。例如,count-distinct 会返回给定列中的唯一值数量。

    如果您为维度选中停用间隔时间复选框,则可使用 none 聚合函数选项。如果维度是字符串值,则系统不会显示停用间隔时间复选框。不过,将测量的聚合函数设置为 none 也会停用间隔时间。

添加细分

如需根据其他列将单个数据系列拆分为多个数据系列,请添加细分。

选择细分时,请选择包含少量简短且有意义的标签(例如 region_name)的列,而不是可能包含大量字符串或长字符串(例如 textPayload)的字段。

例如,请看下面的图表配置,其中维度字段设置为类型测量字段设置为计算行数细分字段设置为严重程度

添加细分的示例图表配置。

以下图表是添加了细分的图表示例:

包含按严重程度进行的细分的示例图表。

在上面的屏幕截图中,您会看到一个堆积数据系列,其中资源类型 k8s_container 被拆分为不同的 severity 类型。这使您可以确定特定资源生成的每种严重程度类型的日志数量。

将图表保存到自定义信息中心

从查询生成图表后,您可以将该图表保存到自定义信息中心。通过自定义信息中心,您可以使用各种 widget 类型来显示和整理对您有用的信息。您还可以通过这些信息中心定义变量,即仅应用于特定 widget 的信息中心级过滤条件。如需将变量应用于 widget,您必须修改查询。如需了解详情,请参阅将变量应用于 widget

例如,您可以创建一个信息中心,其中提供有关 Cloud Storage 存储桶使用情况的详细信息:

显示 Cloud Storage 存储桶使用情况的示例信息中心。

如需将图表保存到信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Log Analytics 页面:

    转到 Log Analytics

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 运行查询以生成图表,然后点击图表标签页中的 保存图表

  3. 保存至信息中心对话框中,输入图表的标题,然后选择要将图表保存到其中的信息中心。

  4. 可选:如需查看自定义信息中心,请在消息框中点击查看信息中心

如需查看包含由 SQL 查询生成的图表的自定义信息中心列表,请找到保存图表按钮,然后点击 菜单

修改已保存到自定义信息中心的图表

您可以在图表保存到信息中心后对其进行修改。如需了解详情,请参阅修改 widget 的配置。在配置 widget 对话框中,您可以执行以下操作:

  • 更改您查询的数据。
  • 修改用于生成图表的查询。
  • 自定义图表配置,以直观呈现不同的数据。

限制

  • 如果您的 Google Cloud 项目位于使用 Assured Workloads 的文件夹中,则您生成的图表无法显示在自定义信息中心上。

  • 信息中心级过滤条件不适用于通过 SQL 查询生成的图表。

查询示例

本部分提供了用于将查询结果绘制成图表的 SQL 查询示例。如需从日志中获取更实用的分析洞见,请自定义图表配置。如需使用示例查询,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Log Analytics 页面:

    转到 Log Analytics

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 确定要查询的日志视图的表名称。

    如需确定此名称,请前往日志视图列表,找到相应日志视图,然后选择查询查询窗格中会填充默认查询,其中包含所查询的日志视图的表名称。表名称的格式为 project_ID.region.bucket_ID.view_ID

    如需详细了解如何访问默认查询,请参阅查询日志视图

  3. TABLE_NAME_OF_LOG_VIEW 替换为您要查询的日志视图的表名称,然后复制查询。

  4. 将查询粘贴到查询窗格中,然后点击运行查询

按位置和严重程度将日志条目绘制成图表

以下查询会选择 locationseverity,并将位置转换为字符串:

SELECT
  CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,
  severity,
FROM
  `TABLE_NAME_OF_LOG_VIEW`

示例图表和图表配置如下所示:

按位置和严重程度将日志条目绘制成图表的示例图表。

在上面的屏幕截图中,图表配置包含以下内容:

  • 图表类型:条形图,水平
  • 维度location,上限为 10
  • 测量:计算行数
  • 细分severity,上限为 5

将 BigQuery 数据访问审核日志绘制成图表

以下查询会过滤 BigQuery data_access 审核日志,并选择特定字段,例如 user_emailipauth_permissionjob_execution_project。例如,您可以创建一个图表,直观呈现各个主账号的 BigQuery API 使用频率随时间的变化情况。

SELECT
  timestamp,
  proto_payload.audit_log.authentication_info.principal_email as user_email,
  proto_payload.audit_log.request_metadata.caller_ip as ip,
  auth.permission as auth_permission,
  auth.granted as auth_granted,
  JSON_VALUE(data_access.resource.labels.project_id) AS job_execution_project,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(1)] AS referenced_project,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(3)] AS referenced_dataset,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(5)] AS referenced_table
FROM `TABLE_NAME_OF_LOG_VIEW` as data_access,
  UNNEST(proto_payload.audit_log.authorization_info) AS auth
WHERE
  log_id="cloudaudit.googleapis.com/data_access"
  AND data_access.resource.type = 'bigquery_dataset'

示例图表和图表配置如下所示:

BigQuery 数据访问审核日志的示例图表

在上面的屏幕截图中,图表配置包含以下内容:

  • 图表类型:条形图,垂直
  • 维度user_email,上限为 5
  • 测量:计算行数
  • 细分auth_permission,上限为 5

限制

  • 所选列应至少有一行包含非 null 值。

  • 如果您保存查询并自定义图表配置,则自定义图表配置不会保存。

  • 如果您的查询已包含聚合,则生成的图表可能会因 Log Analytics 自动应用的其他聚合而有所不同。

  • JSON 路径必须转换为字符串和数字,才能将其绘制成图表。

后续步骤