Cloud Storage に転送されたログを表示する

このドキュメントでは、Cloud Logging から Cloud Storage バケットにルーティングされたログエントリを見つける方法について説明します。

Cloud Storage バケットへのログエントリの保存は 1 時間ごとに一括して行われます。最初のエントリが表示されるまでに 2~3 時間かかることがあります。

始める前に

シンクのコンセプトについては、ルーティングとストレージ モデルの概要: シンクをご覧ください。

ログをルーティングする方法については、サポートされている宛先にログを転送するをご覧ください。

ログの表示

Cloud Storage にルーティングされたログを表示する方法は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで Cloud Storage を選択し、その後バケットをクリックします。

    [バケット] に移動

  2. 転送先として使用する Cloud Storage バケットを選択します。

ログの構成

Cloud Storage バケットにログをルーティングすると、Logging は一連のファイルをバケットに書き込みます。

ファイルは、ログタイプと日時別にディレクトリ構造で構成されます。LogEntry リファレンスで [LOG_ID] として参照されるログタイプは、syslog のようなシンプルな名前、または appengine.googleapis.com/request_log のような複合名に設定できます。これらのログが my-gcs-bucket という名前のバケットに保存された場合は、次の例のようにディレクトリに名前が付けられます。

my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/

1 つの Cloud Storage バケットに複数のリソースタイプのログを格納できます。 最大ファイルサイズは 3.5 GiB です。

Logging は、同一または重複するクエリを含むシンクからのログエントリの重複除去を保証しません。これらのシンクから取得したログエントリが複数回 Cloud Storage バケットに書き込まれる場合があります。

最下位ディレクトリ(DD/)には複数のファイルが含まれ、それぞれのファイルには、ファイル名で指定された期間のルーティングされたログエントリが含まれます。ファイルはシャーディングされ、ファイル名の末尾にシャード番号 Sn または Ann=0、1、2、...)が付きます。たとえば、次の 2 つのファイルがディレクトリ my-gcs-bucket/syslog/2015/01/13/ に格納されます。

08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json

08:00:00 UTC から 08:59:59 UTC の 1 時間における、すべてのインスタンスの syslog ログエントリが、これらの 2 つのファイルで合わせて含まれています。ログエントリのタイムスタンプは UTC(協定世界時)で表されます。

60 分のアライメント ウィンドウの timestamp 内で到達する receiveTimestamp を持つログエントリは、メインのシャード ファイルに書き込まれます。たとえば、08:00:00 の timestamp と、08:10:00 の receiveTimestamp を持つログエントリは、メインのシャード ファイルに保存されます。

これらのファイルには、接尾辞 _Sn.json の番号付きメインシャードが含まれます。

60 分のアライメント ウィンドウの receiveTimestamp 以外の時間に到達する timestamp を持つログエントリは、付録のシャード ファイルに書き込まれます。たとえば、08:00:00 の timestamp と、09:10:00 の receiveTimestamp を持つログエントリは、付録のシャード ファイルに保存されます。

これらのファイルには、接尾辞 _An:Unix_timestamp.json の番号付き付録シャードが含まれます。

たとえば、08:00:00 から 08:59:59 の間の timestamp を持つ一方で、60 分以外のアライメント ウィンドウの receiveTimestamp を持つログエントリが _An:Unix_timestamp.json 接尾辞付きのファイルに書き込まれます。ここで、ファイルが Cloud Storage にルーティングされた時刻が UNIX タイムスタンプで識別されます。ログエントリが 08:50:00 の timestamp と、09:10:00 の receiveTimestamp を持ち、2021 年 3 月 25 日の 09:15:00 にルーティングされた場合、付録ファイルには次のように書き込まれます。

08:00:00_08:59:59_A0:1616681700.json

すべてのログエントリを取得するには、それぞれの期間のシャードをすべて読み取る必要があります。この例の場合はファイル シャード 0 と 1 です。書き込まれるファイル シャードの数は期間ごとに異なります。

個々のシャード ファイル内には、ログエントリが LogEntry オブジェクトのリストとして保存されます。syslog エントリの例については、ログエントリの構成をご覧ください。

ファイル内のログエントリの並べ替え順は一定ではなく、保証されないことに注意してください。

遅れて到着するログエントリ

ルーティングしたログエントリは、1 時間ごとに一括して Cloud Storage バケットに保存されます。最初のエントリが表示されるまでに 2~3 時間を要する場合があります。ルーティングされたログのファイル シャードに An(「Append」)という接尾辞が付いている場合は、遅れて到着したログエントリが含まれています。

宛先に停電が発生した場合、Cloud Logging は停電が終わるまでデータを保護します。

シンクの宛先にログがない場合は、エクスポート システムの指標を確認します。エクスポート システムの指標には、転送されたログエントリの数と、エラーによってドロップされたログエントリの数が示されます。エクスポート システムの指標にログエントリが宛先に転送されていないことが示されている場合は、フィルタを調べて、フィルタに一致するログエントリが最近 Logging に届いていることを確認します。

Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログルーター] を選択します。

ログルーターに移動

App Engine のログエントリ

また、App Engine は、タイプ google.appengine.logging.v1.LogLine(AppLog または AppLogLine とも呼ばれる)の複数のサブエントリを、ログ アクティビティを発生させたリクエストを表すタイプ google.appengine.logging.v1.RequestLog のプライマリ ログエントリの下で結合します。各ログ行には、プライマリ エントリを識別するリクエスト ID が含まれます。ログ エクスプローラには、リクエスト ログエントリが含まれるログ行が表示されます。Logging は、タイムスタンプでは次のバッチに入る場合にも、すべてのログ行を元のリクエストとともにバッチに入れることを試みます。それができない場合、リクエスト ログエントリでいくつかのログ行が失われて、次のバッチにリクエストのない「孤立した」ログ行が存在することがあります。このような可能性を重くみる場合は、ログを処理するときにリクエストの各部分をつなぎ直せるように準備してください。

トラブルシューティング

シンクの宛先にログがないように見える場合や、シンクがログを正しくルーティングしていないと思われる場合は、ログのルーティングのトラブルシューティングをご覧ください。

料金

Cloud Logging では、サポートされている宛先へのログの転送で料金を請求されることはありませんが、宛先での料金が発生する場合があります。_Required ログバケットを除き、Cloud Logging では、ログバケットへのログのストリーミングと、ログバケットのデフォルト保持期間よりも長いストレージの料金が請求されます。

Cloud Logging では、ログのコピー、[ログ エクスプローラ] ページまたは [ログ分析] ページを介して発行されたクエリには課金されません。

詳細については、次のドキュメントをご覧ください。