このドキュメントでは、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(協定世界時)で表されます。
receiveTimestamp
が timestamp
の 60 分のアライメント ウィンドウ内であるログエントリは、メインのシャード ファイルに書き込まれます。たとえば、timestamp
が 08:00:00 で receiveTimestamp
が 08:10:00 であるログエントリは、メインのシャード ファイルに保存されます。
これらのファイルには、接尾辞が _Sn.json
の番号付きのメインシャードが含まれます。
timestamp
が receiveTimestamp
と異なる 60 分のアライメント ウィンドウ内にあるログエントリは、追加のシャード ファイルに書き込まれます。たとえば、timestamp
が 08:00:00 で、receiveTimestamp
が 09:10:00 であるログエントリは、追加のシャード ファイルに保存されます。
これらのファイルには、接尾辞が _An:Unix_timestamp.json
の番号付き追加シャードが含まれます。
たとえば、timestamp
が 08:00:00 から 08:59:59 であっても、receiveTimestamp
が別の 60 分のアライメント ウィンドウ内であるログエントリは、接尾辞が _An:Unix_timestamp.json
のファイルに書き込まれます。ここで、UNIX タイムスタンプはファイルが Cloud Storage に転送された時刻を表します。timestamp
が 08:50:00、receiveTimestamp
が 09:10:00 のログエントリが 、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 は停電が終わるまでデータを保護します。
シンクの宛先にログがない場合は、エクスポート システムの指標を確認します。エクスポート システムの指標には、転送されたログエントリの数と、エラーによってドロップされたログエントリの数が示されます。エクスポート システムの指標にログエントリが宛先に転送されていないことが示されている場合は、[フィルタ][export-query]を調べて、フィルタに一致するログエントリが最近 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 フローログを送信して除外した後に適用されます。