将 SQL 查询结果绘制成图表

本文档介绍了如何将 Log Analytics 查询结果绘制成图表,该工具会发出 SQL 查询。通过 SQL 分析日志和轨迹数据,您可以发现模式和趋势。您可以表格形式查看查询结果,也可以通过创建图表直观呈现查询结果。您还可以将图表保存到自定义信息中心

以下屏幕截图显示了轨迹示例查询的结果,该查询将在本文档的后面部分中介绍。 此屏幕截图显示了按时间和 service_name 汇总响应后,由 span 报告的状态:

显示按服务名称细分的示例图表。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 启用 Observability API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 启用 Observability API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

  8. 如需获得加载 Log Analytics 页面、针对日志和跟踪记录数据编写并运行查询,以及在自定义信息中心内保存图表所需的权限,请让管理员为您授予以下 IAM 角色:

    • 针对项目的 Monitoring Editor (roles/monitoring.editor)
    • Observability View Accessor (roles/observability.viewAccessor) 在您要查询的可观测性视图上。此角色支持 IAM 条件,可让您将授予的权限限制为仅针对特定视图。如果您未为角色授予附加条件,则正文可以访问所有可观测性视图。可观测性视图目前为公开预览版。
    • 项目的 Logs Viewer (roles/logging.viewer)
    • 存储您要查询的日志视图的项目的 Logs View Accessor (roles/logging.viewAccessor)。

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

选择要绘制成图表的数据

如需配置要在图表中显示的数据,请使用 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 `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
      WHERE severity IS NOT NULL AND severity = "DEFAULT"
      GROUP BY hour,severity
      ORDER BY hour DESC
      LIMIT 10
      

      下面介绍了上一个表达式中各个字段的含义:

      • PROJECT_ID:项目的标识符。
      • LOCATION:日志视图或分析视图的位置。
      • BUCKET_ID:日志存储桶的名称或 ID。
      • LOG_VIEW_ID:日志视图的标识符,长度不得超过 100 个字符,并且只能包含字母、数字、下划线和连字符。

      跟踪记录数据

      例如,以下内容会查询您的轨迹数据,并按一小时的时间间隔聚合数据、应用限制以及对结果进行排序:

      SELECT TIMESTAMP_TRUNC(start_time, HOUR) AS hour,
         COALESCE(
            JSON_VALUE(resource.attributes, '$."service.name"'),
            JSON_VALUE(attributes, '$."service.name"'),
            JSON_VALUE(attributes, '$."g.co/gae/app/module"')) AS service_name,
         status.code AS status,
         COUNT(*) AS count
      FROM `PROJECT_ID.LOCATION._Trace.Spans._AllSpans`
      GROUP BY hour, service_name, status
      ORDER BY hour DESC
      LIMIT 1000
      

      下面介绍了上一个表达式中各个字段的含义:

      • PROJECT_ID:项目的标识符。
      • LOCATION:可观测性存储桶的位置

      之前的查询用于生成本文档开头所示的图表。该图还显示了图表配置。

    • 设置维度以匹配报告时间单位的列。例如,如果您的查询按一小时聚合数据并创建一个名为 hour 的列,请将维度菜单设置为 hour

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

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

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

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

更改维度和测量

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

  • 维度

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

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

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

  • 测量

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

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

添加细分

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

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

日志数据

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

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

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

跟踪记录数据

例如,以下图表显示了每个服务创建的 span 数量,以及按 span 名称细分的数据:

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

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

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

如果某个 widget 包含的 SQL 查询在 BigQuery 引擎上运行,并且所查询的资源不在同一所有权边界内,信息中心会针对该 widget 显示警告消息。所有权边界由多种因素决定,其中一个因素是查询所用资源的层次结构。如需避免这些警告,请设置服务边界

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

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

    转到 Log Analytics

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

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

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

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

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

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

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

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

限制

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

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

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

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

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

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

后续步骤