🔭

ログスコープで柔軟に Cloud Logging を参照可能になりました

2024/08/20に公開

こんにちは、クラウドエース株式会社 SRE 部の阿部です。
こちらの記事では、2024 年 8 月 13 日にリリースされた新機能である「ログスコープ」について紹介します。

概要

Cloud Logging とは

Cloud Logging は、 Google Cloud Observability (旧称: Stackdriver または Operations Suite) の一部であり、Google Cloud のリソースやアプリケーションのログを収集、表示するためのサービスです。
Google Cloud の PaaS や IaaS におけるログを一元管理することができます。
また、ログシンクを設定することで、Cloud Storage や BigQuery に保存したり、別のログストレージに保存したり、Pub/Sub を経由して他のアプリケーションに転送することも可能です。

Project Logging
プロジェクトにおけるロギング

Cloud Logging の詳細は下記ドキュメントを参照してください。

https://cloud.google.com/logging/docs/routing/overview?hl=ja

Cloud Logging におけるログ集約の方法

Cloud Logging はデフォルトでプロジェクトレベルでログを集約します。
複数のプロジェクトのログを一元管理するためには、組織レベル集約シンク、または、フォルダレベル集約シンクを使用してログを集約できます。
集約シンクについては下記のドキュメントを参照してください。

https://cloud.google.com/logging/docs/export/aggregated_sinks

集約シンクは、組織やフォルダで一貫してログを集約して保存する目的において有用です。
しかし、組織やフォルダといった Resource Manager のリソース階層を利用してログを集約すると、設計の考慮に Cloud IAM や組織ポリシーのようなリソース階層に関連する機能も合わせて設計しなければならず、考慮事項が多くなります。
複数のプロジェクトのログを参照する目的で集約シンクを使うと、リソース階層の設計とログの集約設定を同時に考慮する必要があり、管理が煩雑になることがあります。

Aggregated Sink
集約シンクによる組織やフォルダ配下のログ集約

また、集約シンクではなく、プロジェクト個別でログルーターを設定し、特定のプロジェクトのユーザー定義ログバケットに転送することで複数プロジェクトのログを集約可能です。
ただ、このケースでは、ログルーターの設定がプロジェクトごとに必要になり、数が増えるとログルーターの管理が煩雑になっていきます。
また、追加のログバケットのデータ保管コストがかかることも考慮する必要があります。

下記は、集約シンクを使わず個別に Project3 と Project6 のログルーターを設定して別プロジェクトに転送する例です。

Log Router
個別のログルーターによる管理

ログスコープの概要

ログスコープは、これまでの集約シンクやログルーターとは別の設定で、複数のプロジェクトのログをまとめて参照する機能です。
また、ログルーターとログバケットによる集約とは異なり、ログ参照をまとめるだけのため、データ保管コストがかかりません。

下記は、ログスコープを使ってログをまとめて参照する例です。

Log Scope
ログスコープ

ログスコープはプロジェクトレベルのログをまとめて参照する目的においては便利な機能です。
ただ、ログルーターとは異なりログデータの実体を操作するわけではないため、目的に応じて使い分けることが重要です。
ログスコープの詳細については下記のドキュメントを参照してください。

https://cloud.google.com/logging/docs/log-scope/create-and-manage

ログスコープの使い方

ログスコープの作成

ログスコープを設定するには、まず Google Cloud コンソールのナビゲーションメニュー(画面左のメニュー)で、ロギング > 設定を選択します。
以下のような画面が表示されます。

ロギング設定画面
ロギング設定画面

「+ログスコープを作成」をクリックするとログスコープ作成画面が表示されます。

ログスコープ作成画面
ログスコープ作成画面

ログスコープ作成では「プロジェクトの追加」「ログビューを追加」「ログスコープ名」「ログスコープの説明」の 4 つを設定します。

  • 「プロジェクトの追加」でログを参照したいプロジェクトを選択して追加できます。
    プロジェクトを追加した場合は、プロジェクトで作成されている全てのログビューを追加する設定と等価です。
  • 「ログビューを追加」では、プロジェクトに作成されているログビューを個別に追加できます。
  • 「ログスコープ名」は英数小文字+ハイフンで構成されるログスコープ名を入力します。入力は必須です。
  • 「ログスコープの説明」はログスコープの補足説明を記入できます。マルチバイト文字等、フリーフォーマットで入力可能です。

ここでは、「ログスコープ名」に sample-scope を入力しています。
設定できたら「ログスコープの作成」をクリックします。

ログスコープ一覧
ログスコープ一覧

ログスコープの使用方法

ログスコープはログエクスプローラーから選択できます。
ログクエリ入力ボックスの上にある「範囲を絞り込む」をクリックします。

ログスコープ一覧
ログエクスプローラー画面

画面右にログ範囲を設定するボックスが表示されますので、下記の画面の要領で選択します。

ログ範囲設定
ログ範囲設定

ログ範囲を設定すると、下記のように複数プロジェクトのログを一元的に表示・検索できるようになります。

ログエクスプローラー画面
ログエクスプローラー画面

検証したときに、ログフィールドのプロジェクト ID で「値が存在しません」という不穏な表示がでましたが、これは Personalized Service Health のログエントリでした。
Personalized Service Health のログエントリは、 resource.labels.project_id フィールドが存在しないため、このように表示されるようです。
(これ以外もそのようなログはあるかもしれません)

補足: ログビューについて

ログビューはログスコープとは別の機能で、ログバケットにあるログから特定のログエントリのみを参照できる、参照時のフィルタ機能です。
デフォルトでは以下のログビューが作成されます。

ログビュー ログバケット 内容
_AllLogs _Default _Default ログバケットの全てのログを表示
_Default _Default データアクセス監査ログ(data_access)以外の全てのログを表示
_AllLogs _Required _Required ログバケットの全てのログを表示

ログビューの詳細については下記のドキュメントを参照してください。

https://cloud.google.com/logging/docs/logs-views?hl=ja

まとめ

Cloud Logging のログの仕組み、および、ログスコープについて紹介しました。
これまでは複数プロジェクトのログをまとめて参照するお手軽な機能がなかったのですが、ログスコープで複数プロジェクトのログをまとめて参照できるのは便利になったと思います。
この記事がお役に立てましたら幸いです。

Discussion