您可以在 Observability Analytics 中将 SQL 查询结果绘制成图表,以识别跟踪记录数据中的模式 和性能趋势,并将这些可视化效果保存到 自定义信息中心。
例如,下图显示了 span 随时间推移报告的状态,按 service_name 分组:
准备工作
- 登录您的 Google Cloud 账号。如果您是新手 Google Cloud, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Observability API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Observability API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
如需获得加载 Observability Analytics 页面、写入和运行跟踪记录数据查询以及将图表保存到自定义信息中心所需的权限,请让管理员为您授予以下 IAM 角色:
- Observability View Accessor (
roles/observability.viewAccessor) ,用于查询可观测性视图。此角色支持 IAM 条件,可让您将授予的权限限制为仅针对特定视图。如果您未为此角色授予权限附加条件,则主账号可以访问所有可观测性视图。 - Monitoring Editor (
roles/monitoring.editor) ,用于您的项目。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
- Observability View Accessor (
选择要绘制成图表的数据
如需配置要在图表中显示的数据,请使用 SQL 构建查询。 选择图表 标签页后,一个图表会显示查询结果。运行查询并生成图表后,您可以更改图表类型并选择列以显示不同的数据,从而自定义图表。
如需以图表形式查看查询结果,请按以下步骤运行查询:
-
在 Google Cloud 控制台中,前往 manage_search Observability Analytics 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
在查询窗格中,输入查询,然后点击运行。
查询完成后,在结果标签页中,选择查看查询结果的方式:
表:仅限表格式。
图表:仅限图表格式。
二者均有:图表和表格式。
选择查看查询结果的方式后,您可以为所选的可视化效果配置任意字段,然后将查询和结果保存到自定义信息中心。选择表选项后,保存的格式为表格式。否则,格式为图表。
对于图表,您可以通过可视化效果选项选择图表类型,并选择绘制成图表的行和列。如需详细了解图表配置,请参阅自定义图表配置。
自定义图表配置
您可以通过更改图表类型、选择用于绘制图表的维度和测量以及应用细分来自定义图表配置。维度用于对行进行分组或分类,是 X 轴值。测量(或 Y 轴值)是针对 Y 轴绘制的数据系列。
更改图表类型
您可以从以下图表类型中进行选择,具体取决于您选择作为维度和测量的行和列的种类,以及您希望以何种方式直观呈现这些数据。
条形图(默认):条形图会在两条轴上绘制数据。如果您的图表使用类别或字符串作为维度,则可以将条形图的图表配置设置为水平或垂直(其中维度和测量轴会交换)。
折线图:折线图可用于显示数据随时间的变化情况。使用折线图时,每个时序都由一条与您选择的测量相对应的不同线条表示。
如果 X 轴基于时间,则每个数据点都位于间隔时间的开头。每个数据点通过线性插值进行连接。
堆积面积图:面积图基于折线图,每条线下方的区域都有阴影。在面积图中,数据系列会堆积。例如,如果您有两个相同的系列,则这两个系列在折线图中会重叠,但阴影区域在面积图中会堆积。
饼图或圆环图:饼图使用圆形表示整个数据集,并使用圆形中的扇形表示数据集中的类别,从而显示数据集中的类别与整个数据集的关系。扇形的大小表示相应类别在整体中所占的比重(通常以百分比表示)。
表:表会为查询结果中的每一行显示一行。表中的列由
SELECT子句定义。如果您计划在信息中心中以表形式显示数据,请使用LIMIT子句将结果中的行数限制在数百行以内。仪表盘或统计信息摘要图表:仪表盘和统计信息摘要图表会根据最新值与一组阈值的比较情况,为您提供该值以及绿色、琥珀色或红色指示。 与仅显示有关最新值的信息的仪表盘不同,统计信息摘要图表还可以包含有关过去值的信息。
仅当查询结果至少包含一行数据,且该行包含一个具有时间戳的列和一个具有数值数据的列时,仪表盘和统计信息摘要图表才能显示查询结果。查询结果可以包含多行和多于两列的列。
如果您想在查询中执行基于时间的聚合,请执行以下操作:
配置查询,以聚合特定间隔时间内的数据、按时间戳降序排列结果以及限制结果中的行数。您可以使用
LIMIT子句或时间范围选择器来限制查询结果中的行数。例如,以下内容会查询跟踪记录数据,并按一小时的间隔聚合数据、应用限制以及对结果进行排序:
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