アナリティクス ビューについて

このドキュメントでは、分析ビューと、分析ビューを作成するタイミングについて説明します。また、アナリティクス ビューと、ログビューや保存したクエリなど、よく知られているコンセプトの違いについても説明します。

アナリティクス ビューの作成、クエリ、管理方法については、アナリティクス ビューの作成とクエリをご覧ください。

概要

分析ビューは、クエリ可能なリソースです。このリソースには、1 つ以上のログビューに対してクエリを実行する SQL クエリが含まれています。

ログバケットログビューは、ログバケット内のどのログエントリを表示できるかを制御します。ログビューに対してクエリを実行するには、ログ エクスプローラと [ログ分析] ページを使用します。どちらの場合も、クエリされるデータの形式は LogEntry データ構造によって決まります。

分析ビューに含まれる SQL クエリを使用すると、1 つ以上のログビューのログデータをカスタム形式に変換できます。つまり、ログビュー内のクエリ結果に貢献するログエントリをフィルタし、結果の列を定義できます。たとえば、列を破棄したり、ネストされた JSON フィールドから列にデータを移動したり、列を追加したりできます。

アナリティクスのビューはマテリアライズド ビューではありません。分析ビューは、クエリ結果を定期的にキャッシュに保存する事前計算ビューではありません。したがって、分析ビューに対してクエリを実行することは、分析ビューがクエリするログビューに対してクエリを実行することと同等です。

分析ビューと保存済みクエリの両方に SQL クエリが含まれています。ただし、分析ビューはクエリ可能なリソースです。保存したクエリは再実行できますが、保存したクエリの結果をクエリすることはできません。

アナリティクス ビューの種類

アナリティクス ビューには、ユーザー定義とシステム定義の 2 種類があります。

  • ユーザー定義のアナリティクス ビューとは、ユーザーが作成したアナリティクス ビューです。ユーザー定義のアナリティクス ビューに対してクエリを実行したり、編集したり、削除したりできます。

  • システム定義の分析ビューは、Google Cloud サービスによって作成される分析ビューです。ユーザー定義の分析ビューに対してクエリを実行できます。ただし、編集や削除はできません。

Google Cloud プロジェクトで分析ビューを一覧表示する方法については、分析ビューを一覧表示するをご覧ください。

アナリティクス ビューの場所

アナリティクス ビューのロケーションは、クエリするリソースのロケーションによって決まります。たとえば、分析ビューが global ロケーションにあるログビューをクエリする場合、分析ビューのロケーションも global にする必要があります。 Google Cloud コンソールを使用して分析ビューを作成すると、ロケーションが自動的に設定されます。

アナリティクスのビューのメリット

分析ビューの主な利点は、ログデータを変換して、他のクエリ用に整合性のあるスキーマを作成できることです。ただし、分析ビューを作成することで、クエリの作成に費やす労力を削減したり、クエリの構造を改善したりできる場合もあります。分析ビューはマテリアライズド ビューではないため、使用してもクエリ時間が短縮されるとは限りません。

例: データ変換

VPC フローログを使用してネットワーク パフォーマンスを分析しているとします。全体的なネットワーキング パフォーマンスを分析し、特定のネットワーク、IP アドレス、ホストを特定できる必要があります。残念ながら、必要な情報はログエントリの json_payload フィールドのネストされたフィールドに含まれています。

この情報をログエントリから抽出するには、次のクエリを記述し、network_details という名前の分析ビューとしてクエリを保存します。

SELECT
  JSON_VALUE(resource.labels.subnetwork_name) subnetwork_name,
  JSON_VALUE(json_payload.src_instance.vm_name) vm_name,
  JSON_VALUE(json_payload.connection.src_ip) as src_ip,
  JSON_VALUE(json_payload.connection.src_port) as src_port,
  JSON_VALUE(json_payload.connection.dest_ip) as dest_ip,
  JSON_VALUE(json_payload.connection.dest_port) as dest_port,
  CAST(JSON_VALUE(json_payload.bytes_sent) as INT64) as bytes_sent,
  CAST(JSON_VALUE(json_payload.packets_sent) as INT64) as packets_sent
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE
    log_id = "compute.googleapis.com/vpc_flows"
    AND SEARCH(json_payload.reporter, "SRC")

ネットワークのパフォーマンスを分析する際に、アナリティクス ビューをクエリできるようになりました。たとえば、インスタンスの名前と送信されたデータの量のみに関心がある場合は、次のクエリを作成します。

SELECT vm_name, bytes_sent, packets_sent,
FROM `analytics_view.my_project.global.network_details`
ORDER BY bytes_sent DESC
LIMIT 100

例: API レイテンシ分析のベースクエリ

1 週間の間隔でリクエストのレイテンシを評価して要約するタスクがあるとします。他のチームは、他の分析の基礎として、週次パフォーマンス分析データを使用します。

作成した分析ビューは、他のチームがクエリを実行できます。このビューには、特定のログビューのログエントリによって記録された、完了したリクエストの最小レイテンシ、最大レイテンシ、平均レイテンシがレポートされます。

SELECT week,MIN(took_ms) as min , MAX(took_ms) AS max, AVG(took_ms) AS avg
FROM (
  SELECT TIMESTAMP_TRUNC(timestamp, WEEK) AS week,
  CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64) as took_ms
  FROM `TABLE_NAME_OF_LOG_VIEW`
  WHERE json_payload IS NOT NULL
    AND SEARCH(labels,"frontend")
    AND JSON_VALUE(json_payload.message) = "request complete"
  ORDER BY took_ms DESC, timestamp ASC
)
GROUP BY week ORDER BY week

必要な IAM ロールと権限

分析ビューはログビューに対してクエリを実行するため、分析ビューを作成してクエリを実行するには、IAM ロールでログビューに対してクエリを実行し、Log Analytics を使用することも許可されている必要があります。このセクションでは、分析ビューの作成に必要な IAM ロールと、ログビューのクエリと Log Analytics の使用に必要な IAM ロールについて説明します。

  • 分析ビューの作成、管理、使用に必要な権限を取得するには、プロジェクトに対するオブザーバビリティ分析ユーザー roles/observability.analyticsUser)IAM ロールの付与を管理者に依頼してください。

    この事前定義ロールには、分析ビューの作成、管理、使用に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    アナリティクス ビューの作成、管理、使用には、次の権限が必要です。

    • observability.analyticsViews.get
    • observability.analyticsViews.list
    • observability.analyticsViews.create
    • observability.analyticsViews.update
    • observability.analyticsViews.delete
  • ログビューのクエリとログ分析の使用に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。

    • _Required および _Default のログバケットに対してクエリを実行するには:   ログ閲覧者roles/logging.viewer
    • プロジェクト内のすべてのログビューをクエリするには: ログビューアクセサー roles/logging.viewAccessor

    プリンシパルを特定のログビューに制限するには、プロジェクト レベルで行われたログビュー アクセサー ロールの付与に IAM 条件を追加するか、ログビューのポリシー ファイルに IAM バインディングを追加します。詳細については、ログビューへのアクセスを制御するをご覧ください。

    ユーザー定義バケットに対するビューのクエリ実行、または _Default ログバケットの _AllLogs ビューのクエリ実行のために必要な追加のロールについて詳しくは、Cloud Logging のロールをご覧ください。

制限事項

アナリティクス ビューには次の制限が適用されます。

  • 分析ビューから別の分析ビューをクエリすることはできません。
  • 分析ビューでは、複数のログビューをクエリできます。ただし、クエリされたログビューをホストするログバケットは 1 つのロケーションに存在する必要があります。たとえば、us-east1asia-east1 の 2 つのログバケットがあるとします。これらのログバケットのログビューをクエリする分析ビューを作成することはできません。
  • 分析ビューの親リソースは、 Google Cloud プロジェクトである必要があります。フォルダや組織にアナリティクス ビューを作成することはできません。
  • リンク済みデータセットは、アナリティクス ビューではサポートされていません。そのため、アナリティクス ビューをクエリできるのは、[ログ分析] ページを使用する場合のみです。また、これらのクエリはデフォルトの Cloud Logging サービスで実行する必要があります。
  • アナリティクス ビューの作成や管理は API ではサポートされていません。
  • アナリティクス ビューには次の上限が適用されます。

    • Google Cloud プロジェクトあたりの分析ビューの最大数: 100
    • Google Cloud プロジェクトあたり、リージョンあたりの分析ビューの最大数: 50
    • Google Cloud プロジェクトごとに、分析ビューを保存できるリージョンの最大数: 10

次のステップ