导出到 BigQuery

本文档介绍了当接收器将跟踪记录从 Cloud Trace 导出到 BigQuery 时创建的 BigQuery 数据集的一些属性。

架构

存储跟踪记录数据的表的架构由 span 的 Trace V2 API 定义决定。

当新的 span 包含无法存储在现有表中的字段时,Trace 会跟踪您的表列并修补表。如果到达的 span 包含以前未见过的条目,则需要执行修补操作。例如,如果到达的 span 包含新的属性,则对表进行修补。

数据保留

您可以配置 BigQuery 表格的数据保留政策。如需了解如何管理表和表数据,请参阅使用表

表类型

如果您配置接收器来将跟踪记录导出到 BigQuery,则 Trace 会配置提取时间分区表。如需详细了解分区表(包括如何创建、管理、查询和删除这些表),请参阅使用分区表

查询示例

在以下查询中,DATASET 是 BigQuery 数据集的名称,MY_TABLE 是该数据集中表的名称。

  • 如需显示表中 2019 年 11 月 20 日对应的所有列,但将结果限制为 10 行,请运行查询:

    SELECT
      *
    FROM
      `DATASET.MY_TABLE`
    WHERE
      DATE(_PARTITIONTIME) = "2019-11-20" LIMIT 10
  • 如需显示表中的所有可用分区,请运行查询:

    SELECT
      _PARTITIONTIME as pt
    FROM
      `DATASET.MY_TABLE`
    GROUP BY 1

HipsterShop 查询

HipsterShop 是 GitHub 上提供的演示应用。

以下示例查询说明了如何使用 BigQuery 查询来收集使用 Trace 界面不易获取的信息。

内部查询会查找与指定正则表达式匹配的所有 span 接收日期为 2019 年 12 月 2 日 外部查询会选择以显示以下内容:

  • 名称
  • 匹配的 span 数量
  • 不同跟踪记录 ID 的数量
  • 第 50、90 和 99 个分位数
  • HTTP 路径
  • 错误消息

并显示按跟踪记录计数排序的结果:

SELECT t0.span.displayName.value, count(t0.span.spanId) as spanCount, count(distinct traceId) as traceCount,
APPROX_QUANTILES(milliseconds, 100)[OFFSET(50)] as p50,
APPROX_QUANTILES(milliseconds, 100)[OFFSET(95)] as p95,
APPROX_QUANTILES(milliseconds, 100)[OFFSET(99)] as p99,
t0.span.attributes.attributeMap._http_path,
t0.span.attributes.attributeMap._error_message
FROM (
SELECT *,
REGEXP_EXTRACT(span.name, r"./traces/([a-f0-9]+).") as traceId,
TIMESTAMP_DIFF(span.endTime,span.startTime, MILLISECOND) as milliseconds
FROM `hipstershop-demo.Hipstershop_trace_export.cloud_trace`
WHERE DATE(_PARTITIONTIME) = "2019-12-02") AS t0
WHERE t0.span.parentSpanId is NULL
GROUP by t0.span.displayName.value, t0.span.attributes.attributeMap._http_path,t0.span.attributes.attributeMap._error_message
ORDER BY traceCount DESC
LIMIT 1000
 

对于此应用的一个特定安装,查询结果如下所示:

显示对上一查询的响应。

查看跟踪记录数据

如需使用 BigQuery 接口中, 选择包含导出的跟踪记录的表。