このドキュメントでは、Cloud Logging から Cloud Storage バケットにルーティングされたログエントリを見つける方法について説明します。
Cloud Storage バケットへのログエントリの保存は 1 時間ごとに一括して行われます。最初のエントリが表示されるまでに 2~3 時間かかることがあります。
始める前に
シンクのコンセプトについては、ルーティングとストレージ モデルの概要: シンクをご覧ください。
ログをルーティングする方法については、サポートされている宛先にログを転送するをご覧ください。
ログを表示
Cloud Storage に転送されたログを表示するには、次の手順を行います。
-
Google Cloud コンソールの [バケット] ページに移動します。
検索バーを使用してこのページを見つける場合は、小見出しが [Cloud Storage] である結果を選択します。
転送先として使用する 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
または An
( n=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 コンソールで、[ログルーター] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
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 では、ログのコピー、ログスコープの定義、またはログ エクスプローラまたは [ログ分析] ページを介して発行されたクエリには課金されません。
詳細については、次のドキュメントをご覧ください。
- Cloud Logging の料金概要
宛先の費用:
- VPC フローログの生成料金は、Cloud Logging から Virtual Private Cloud フローログを送信して除外した後に適用されます。