このドキュメントでは、分析ビューと、分析ビューを作成するタイミングについて説明します。また、分析ビューと、ログビューや保存済みクエリなど、よく知られているコンセプトの違いについても説明します。
分析ビューの作成、クエリ、管理方法については、分析ビューの作成とクエリをご覧ください。
概要
分析ビューはクエリ可能なリソースです。このリソースには、1 つ以上のログビューに対してクエリを実行する SQL クエリが含まれています。
ログバケットのログビューは、ログバケット内のどのログエントリを表示できるかを制御します。ログビューをクエリするには、[ログ エクスプローラ] と [ログ分析] のページを使用します。どちらの場合も、クエリされるデータの形式は LogEntry
データ構造によって決まります。
分析ビューに含まれる SQL クエリを使用すると、1 つ以上のログビューのログデータをカスタム形式に変換できます。つまり、ログビュー内のどのログエントリがクエリ結果に貢献するかをフィルタし、結果の列を定義できます。たとえば、列を破棄したり、ネストされた JSON フィールドから列にデータを移動したり、列を追加したりできます。
分析ビューはマテリアライズド ビューではありません。分析ビューは、クエリ結果を定期的にキャッシュに保存する事前計算ビューではありません。したがって、分析ビューをクエリすることは、分析ビューがクエリするログビューをクエリすることと同等です。
分析ビューと保存済みクエリの両方に SQL クエリが含まれています。ただし、分析ビューはクエリ可能なリソースです。保存済みクエリは再実行できますが、保存済みクエリの結果をクエリすることはできません。
分析ビューの種類
分析ビューには、ユーザー定義とシステム定義の 2 種類があります。
ユーザー定義の分析ビューとは、ユーザーが作成した分析ビューです。ユーザー定義の分析ビューに対してクエリを実行したり、編集や削除を行うことができます。
システム定義の分析ビューは、Google Cloud サービスによって作成される分析ビューです。システム定義の分析ビューに対してクエリを実行できます。ただし、編集や削除はできません。
Google Cloud プロジェクト内の分析ビューを一覧表示する方法については、分析ビューを一覧表示するをご覧ください。
分析ビューのロケーション
分析ビューのロケーションは、クエリするリソースのロケーションによって決まります。たとえば、分析ビューが global
ロケーションにあるログビューをクエリする場合、分析ビューのロケーションも global
にする必要があります。 Google Cloud コンソールを使用して分析ビューを作成すると、ロケーションが自動的に設定されます。
分析ビューのメリット
分析ビューの主な利点は、ログデータを変換して、他のクエリ用に整合性のあるスキーマを作成できることです。また、分析ビューを作成することで、クエリの作成に費やす労力を軽減したり、クエリの構造を改善できる場合もあります。分析ビューはマテリアライズド ビューではないため、使用してもクエリ時間が短縮されるとは限りません。
例: データ変換
VPC Flow Logs を使用してネットワーク パフォーマンスを分析している場合について考えてみましょう。全体的なネットワーキング パフォーマンスを分析し、特定のネットワーク、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 ロールでログビューに対してクエリを実行し、ログ分析を使用することも許可されている必要があります。このセクションでは、分析ビューの作成に必要な IAM ロールと、ログビューへのクエリ実行とログ分析の使用に必要な IAM ロールについて説明します。
-
分析ビューの作成、管理、使用に必要な権限を取得するには、プロジェクトに対する Observability Analytics ユーザー(
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-east1
とasia-east1
の 2 つのログバケットがあるとします。これらのログバケットのログビューをクエリする分析ビューを作成することはできません。 - 分析ビューの親リソースは Google Cloud プロジェクトである必要があります。フォルダや組織に分析ビューを作成することはできません。
- リンクされたデータセットは、分析ビューではサポートされていません。したがって、分析ビューをクエリできるのは、[ログ分析] ページを使用する場合のみです。また、これらのクエリはデフォルトの Cloud Logging サービスで実行する必要があります。
- 分析ビューの作成や管理は API ではサポートされていません。
分析ビューには以下の上限が適用されます。
- Google Cloud プロジェクトあたりの分析ビューの最大数: 100
- 1 つの Google Cloud プロジェクトのリージョンあたりの分析ビューの最大数: 50
- 1 つの Google Cloud プロジェクトで分析ビューを保存できるリージョンの最大数: 10