このドキュメントでは、ログ分析を使用してログエントリの課金対象ボリュームを見積もる方法について説明します。リソースタイプやアプリケーション名などのさまざまなディメンションごとに請求対象ボリュームをレポートして集計するクエリを作成し、クエリ結果をグラフ化して表示できます。
請求対象ボリュームをクエリする方法
ログエントリの課金対象ボリューム(Cloud Billing に報告されるサイズ)は、storage_bytes
フィールドを介して確認できます。
クエリでは、データ型が INTEGER
のスキーマ フィールドと同じように storage_bytes
フィールドを使用できます。
たとえば、SELECT
句、CASE
ステートメント、共通テーブル式に含めることができます。
ログのクエリの詳細については、次のドキュメントをご覧ください。
Cloud Billing では、費用の決定時に課金対象ボリュームが使用されるため、費用のソースの把握に役立つクエリを作成できます。 たとえば、最も多くのログエントリを書き込んでいるアプリケーションを特定するクエリを作成できます。課金対象ボリュームを費用に関連付ける方法については、Cloud Logging の料金概要と Cloud Logging の料金をご覧ください。
ログエントリの課金対象ボリュームは、Cloud Logging API に送信された LogEntry
オブジェクトのサイズではありません。課金対象ボリュームには、シリアル化とメタデータに必要なバイトが含まれます。
始める前に
-
ログ分析を使用してクエリを実行し、ログを表示するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼します。
-
_Required
および_Default
のログバケットに対してクエリを実行するには: ログ閲覧者(roles/logging.viewer
) -
カスタム ログバケットをクエリするには:
ログ表示アクセサー(
roles/logging.viewAccessor
)
ロールの付与の詳細については、アクセス権の管理をご覧ください。
-
クエリを実行するログビューで、[ログストレージ] ページに移動し、これらのログビューを格納するログバケットが、ログ分析を使用するようにアップグレードされていることを確認します。必要に応じて、ログバケットをアップグレードしてください。
Google Cloud コンソールで、[ログストレージ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが「Logging」の結果を選択します。
省略可: BigQuery データセットを使用してログデータをクエリする場合は、リンクされた BigQuery データセットを作成します。
サンプルクエリ
このセクションでは、単一のログビューからデータを分析するクエリの例を示します。
複数のログビューにデータを保存し、それらのビューに保存されているデータの集計値を計算する場合は、UNION
ステートメントを使用する必要があります。
ログエントリをクエリするには、[ログ分析] ページを使用するか、BigQuery データセットをクエリできる場所([BigQuery Studio] ページ、[Looker Studio] ページを含む)、およびbq コマンドライン ツールを使用します。
サンプルクエリを使用するには、次のようにします。
[ログ分析] ページ: TABLE は、ログビューの名前に置き換えます。形式は
project_ID.region.bucket_ID.view_ID
です。BigQuery データセット: TABLE を、リンクされたデータセット内のテーブルへのパスに置き換えます。
アプリ別のログ ボリュームのクエリ
Google Kubernetes Engine リソースに対して書き込まれ、JSON ペイロードを持つログエントリについて、アプリごとに 1 日あたりの合計バイト数を計算するには、次のクエリを使用します。
SELECT
timestamp_trunc(timestamp,DAY) as day,
JSON_VALUE(labels["k8s-pod/app"]) as app_id,
SUM(storage_bytes) as total_bytes
FROM
`TABLE`
WHERE
json_payload IS NOT NULL
AND resource.type="k8s_container"
GROUP BY ALL
データを可視化するには、グラフを作成できます。次の例では、データが積み上げ棒グラフとして表示されます。グラフの各バーには、保存されている合計バイト数がアプリ別に整理されて表示されます。この例では、frontend
アプリがログデータを最も多く生成しています。
ログ名でログのボリュームをクエリする
Google Kubernetes Engine リソースに対して書き込まれた、JSON ペイロードを持つ各ログエントリの保存されているバイト数とログ名を一覧表示するには、次のクエリを使用します。
SELECT
log_id AS log_name,
storage_bytes
FROM
`TABLE`
WHERE
json_payload IS NOT NULL
AND resource.type="k8s_container"
前のクエリでは結果が集計されず、ログエントリごとに 1 行が生成されます。この行には、ログ名と保存されたバイト数が表示されます。このデータをグラフ化すると、さまざまなログに書き込まれたログデータの一部を可視化できます。
上のグラフは、ほとんどのログデータが stdout
という名前のログに書き込まれていることを示しています。
bq コマンドライン ツールを使用してログ名でログのボリュームをクエリする
[BigQuery Studio] ページを介して、または bq コマンドライン ツールを使用して、実行するクエリに storage_bytes
フィールドを含めることができます。
次のクエリは、ログ名と各ログエントリに保存されているバイト数を報告します。
bq query --use_legacy_sql=false 'SELECT log_id as log_name,
storage_bytes FROM `TABLE`'
このクエリの結果は次のようになります。
+----------+---------------+
| log_name | storage_bytes |
+----------+---------------+
| stdout | 716 |
| stdout | 699 |
| stdout | 917 |
| stdout | 704 |
各行は 1 つのログエントリに対応しています。storage_bytes
列の値は、そのログエントリの課金対象ボリュームです。
制限事項
storage_bytes
フィールドは、次の条件を満たしている場合にのみ使用できます。
- ログバケットが、ログ分析を使用するようにアップグレードされている。
クエリが、[ログ分析] ページ、または BigQuery データセットをクエリできる場所([BigQuery Studio] ページ、[Looker Studio] ページを含む)、およびbq コマンドライン ツールで実行されている。
ログエントリが 2024 年 1 月 1 日以降に書き込まれた。