BigQuery にエクスポートする

このドキュメントでは、シンクが Cloud Trace から BigQuery にトレースをエクスポートするときに作成される BigQuery データセットの属性について説明します。

スキーマ

トレースデータを格納するテーブルのスキーマは、Trace V2 API での Span の定義によって決まります。

Trace によりテーブル列の履歴が記録され、新しいスパンが既存のテーブルに格納できないフィールドを含む場合は、テーブルにパッチが当てられます。パッチ オペレーションは、新出のスパンに、以前は表示されなかったエントリが含まれている場合に必要になります。たとえば、新出のスパンに新しい属性が含まれている場合、テーブルにパッチが当てられます。

データの保持

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 インターフェースでは簡単に利用できない情報を収集する方法を示すサンプルクエリを下に示します。

内側のクエリは、2019 年 12 月 2 日に受信したスパンを指定する正規表現に一致するスパンをすべて検索します。外側のクエリは表示内容を、次のように選択します。

  • name
  • 一致したスパンの数
  • 異なるトレース 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 インターフェースを使用してトレースデータを表示するには、エクスポートされたトレースが含まれているテーブルを選択します。