ログビューアによるエクスポート

このページでは、Cloud Console を使用してログエントリをエクスポートする方法について説明します。ログエントリは、Stackdriver Logging API または gcloud logging コマンドライン ツールを使用してエクスポートすることもできます。

Logging でログをエクスポートするコンセプトの概要については、ログのエクスポートの概要をご覧ください。要約すると、ログをエクスポートするには、ログクエリエクスポート先を含むシンクを 1 つ以上作成します。Stackdriver Logging は、新しいログエントリを受け取ると、各シンクと比較します。ログエントリがシンクのクエリと一致する場合、ログエントリのコピーがエクスポート先に書き込まれます。

ログエントリのサポートされているエクスポート先は、Cloud StorageBigQueryPub/Sub です。

エクスポートしたログを書式設定および整理する方法と、エクスポートしたログを表示する方法については、エクスポートしたログの使用をご覧ください。

始める前に

  • プロジェクト: ログビューアで表示可能なログを含む Google Cloud プロジェクトが必要です。

    シンクを作成、削除、変更するには、プロジェクトでオーナーまたは Logging / ログ構成書き込み Cloud IAM の役割も必要です。詳細については、権限と役割をご覧ください。

  • エクスポート先のサービス: ログをエクスポートするには、ログの書き込み先となる Cloud StorageBigQueryPub/Sub などの Google Cloud サービスに登録する必要があります。

スタートガイド

  1. Cloud Console の [Stackdriver Logging] > [エクスポート] に移動します。

    [ログのエクスポート] に移動

  2. ページの上部にある既存の Google Cloud プロジェクトを選択します。

次のスクリーンショットは、[エクスポート] ページの例です。この例では、複数のログシンクがすでに構成されています。

エクスポート リストを示すユーザー インターフェース。

ログシンクをまだ 1 つも構成していない場合は、[ログシンクが設定されていません] というメッセージが表示されます。

ログのエクスポートのユーザー インターフェース

[ログのエクスポート] インターフェースには、エクスポートのテーブルサマリが含まれています。表の各行には、ログのエクスポートで説明されているシンク プロパティの一部に対応する情報が含まれています。

  • シンク名: 現在のプロジェクトのシンクの識別子です。
  • 出力先: エクスポートされたログエントリの宛先。
  • 書き込み ID: Logging がログエントリをエクスポート先に書き込むために使用するサービス アカウント。このサービス アカウントには、シンクのエクスポート先への書き込み権限が必要です。

表の各行の右端には、メニュー があり、次のオプションを利用できます。

  • シンクを編集: シンクのパラメータを変更できる [エクスポートの編集] パネルを開きます。
  • シンクを削除: シンクを削除し、ログのエクスポートを停止します。
  • フィルタを表示: シンクのクエリを表示します。[編集] をクリックすると、シンクのプロパティまたはクエリを変更できます。

表の上にある検索クエリボックスでは、テキスト検索またはシンク名エクスポート先書き込み ID などのシンク プロパティを使用してシンクをクエリできます。たとえば、次のスクリーンショットは、[エクスポート先] に bigquery を指定した検索結果と、OR(デフォルトは AND)を使用して引数に他のシンク プロパティを連結するオプションを表示しています。

検索クエリを表示するユーザー インターフェース。

さらに、いずれかの列名をクリックすると、昇順または降順でデータを並べ替えることができます。表の一番下では、表示する行数を選択することもできます。

シンクを作成する

エクスポート シンクを作成するには、[ログのエクスポート] ページの上部にある [エクスポートを作成] をクリックします。これは、[ログビューア] ページの上部で行うこともできます。

プロジェクトのエクスポートを作成する権限がサービス アカウントにない場合、このオプションは使用できません。詳細については、上記の始める前にをご覧ください。

次のスクリーンショットは、いくつかのフィールドが入力された状態の [エクスポートの編集] パネルを示しています。

[エクスポートの編集] パネルを表示するユーザー インターフェース。

シンクを作成するには、[エクスポートの編集] パネルに以下の情報を入力します。

  1. (フィルタ): 高度なログクエリを入力します。クエリを引用符で囲む必要はなく、複数の行を使用できます。[エクスポートを作成] をクリックしたときに表示されるログエントリによって、最初のクエリが決まります。

    クエリを編集したら、[クエリを送信する] をクリックします。該当するログエントリが表示されます。最新のログをフェッチするには、[最新のログを表示します] をクリックします。

    基本表示インターフェースを使用してログを選択するには、検索クエリボックスでプルダウン メニュー を使用します。

  2. シンク名: シンクに割り当てる識別子を入力します。

  3. シンクサービス: エクスポート先のサービスとして [Cloud Storage]、[Pub/Sub]、[BigQuery]、または [独自のエクスポート先] を選択します。

    独自のエクスポート先は、Cloud Storage、BigQuery、または Pub/Sub 内である必要がありますが、これを選択することで、別の Google Cloud プロジェクトのシンクにログを送信できます。シンクのソースとエクスポート先は、同じ Google Cloud 組織内にある必要はありません。

  4. シンクのエクスポート先:

    1. Cloud Storage: エクスポートされたログを受信する特定のバケットを選択または作成します。
    2. Pub/Sub: エクスポートされたログを受信する特定のトピックを選択または作成します。
    3. BigQuery: エクスポートされたログを受信する特定のデータセットを選択または作成します。パーティション分割テーブルを使用することもできます。
    4. 独自のエクスポート先: Cloud Storage、Pub/Sub、または BigQuery の Google Cloud プロジェクトを文字列として追加します。プロジェクト名のフォーマットについては、シンクのプロパティをご覧ください。
  5. [シンクを更新] をクリックして、シンクを作成します。

    シンクの作成の一環として、Logging はシンクの書き込み ID にエクスポート先への書き込み権限を付与しようとします。ログを所有しているプロジェクト以外のプロジェクトのエクスポート先にエクスポートする場合は、新しいエクスポート先の管理者が権限を付与する必要があります。管理者にシンクの書き込み ID を送信してください。この ID は、[エクスポート] ページにシンクとともに表示されます。

シンクに一致する新しいログエントリのエクスポートが開始します。BigQuery や Pub/Sub に渡されるログエントリは、すぐにそれらのエクスポート先にストリーミングされます。Cloud Storage へのログエントリは、約 1 時間ごとにまとめて送信されます。詳しくは、エクスポートしたログの使用をご覧ください。

ログをエクスポート先にエクスポートしようとしたときに Logging でエラーが発生した場合、エラーはプロジェクトのアクティビティ ストリームに表示されます。Google Cloud Console でプロジェクトのホームページの上部にある [アクティビティ] を選択します。一般的なエラーを診断するには、下記のトラブルシューティングをご覧ください。

シンクを更新する

シンクを更新するには、シンクの名前の右側にあるメニュー から [シンクを編集] コマンドを選択します。次のパラメータを変更できます。

  • エクスポート先
  • クエリ

シンクのその他のパラメータを変更するには、projects.sinks.update API メソッドを使用します。

シンクを削除する

シンクを削除するには、[エクスポート] ページでシンクを選択し、ページの上部にある [削除] をクリックします。シンクを更新するには、シンクの名前の右側にあるメニュー から [シンクを削除] を選択します。

エクスポート先の権限

このセクションでは、エクスポートされたログをシンクのエクスポート先に書き込むための Cloud Identity and Access Management 権限を Logging に付与する方法について説明します。

シンクを作成すると、Logging によって一意の書き込み ID と呼ばれるシンクのサービス アカウントが新規に作成されます。このサービス アカウントは Stackdriver Logging によって所有、管理されているため、直接管理できません。シンクが削除されると、このサービス アカウントは削除されます。

エクスポート先では、このサービス アカウントにログエントリの書き込みを許可する必要があります。この権限を設定するには、次の手順に従います。

  1. Cloud Console、gcloud logging コマンドライン インターフェース、または Logging API で新しいシンクを作成します。

  2. Cloud Console でシンクを作成し、エクスポート先へのオーナー アクセス権がある場合は、Stackdriver Logging で必要な権限が設定されているはずです。設定が行われている場合は完了です。そうでない場合は続行します。

  3. 新しいシンクからシンクの書き込み ID(メールアドレス)を取得します。

    • Cloud Console を使用している場合は、[エクスポート] ページのシンクのリストに書き込み ID が表示されます。
    • Logging API を使用している場合は、LogSink オブジェクトから書き込み ID を取得できます。
    • gcloud logging を使用している場合は、シンクを一覧表示すると書き込み ID が表示されます。
  4. エクスポート先へのオーナー アクセス権がある場合は、次の方法でエクスポート先にサービス アカウントを追加します。

    • Cloud Storage のエクスポート先の場合は、シンクの書き込み ID をバケットに追加し、ストレージのオブジェクト作成者の役割を付与します。
    • BigQuery のエクスポート先の場合は、シンクの書き込み ID をデータセットに追加し、BigQuery データ編集者の役割を付与します。
    • Cloud Pub/Sub の場合は、シンクの書き込み ID をトピックに追加し、Pub/Sub パブリッシャーの役割を付与します。

    これで、権限の付与は完了です。

  5. エクスポート先へのオーナー アクセス権がない場合は、書き込み ID のサービス アカウント名をその権限を持つ人に送信します。送信された担当者は、前のステップの指示に従って、書き込み ID をエクスポート先に追加する必要があります。

承認遅延

シンクは、ログエントリをエクスポートしようとしたときにエクスポート先への適切な Cloud IAM 権限がない場合、エラーを報告してログエントリをスキップします。これは、権限が付与されてシンクが新しいログエントリのエクスポートを開始するまで続きます。

シンクを作成してから、シンクの新しいサービス アカウントを使用してエクスポート先への書き込みを許可するまで、遅延が発生します。シンクの作成から 24 時間以内に、プロジェクトの [アクティビティ] ページにシンクからのアクセス許可関連のエラー メッセージが表示されることがあります。これらのエラー メッセージは無視して差し支えありません。

利点と制限事項

Cloud Console には、Logging API を使用する場合に比べて次の利点があります。

  • Cloud Console ではすべてのシンクが 1 か所に表示されます。
  • Cloud Console では、シンクを作成する前にシンククエリによって照合されたログエントリが表示されます。
  • Cloud Console では、シンクのエクスポート先を作成して承認できます。

ただし、Cloud Console を使用する場合は、プロジェクトでのみシンクを作成または表示できます。組織、フォルダ、請求先アカウントにシンクを作成するには、集約エクスポートをご覧ください。

トラブルシューティング

以下では、ログのエクスポートで発生する可能性がある一般的な問題とその対処方法を説明します。

  • エクスポート先からのエラー: シンク内のエクスポート先の指定を確認します。projects.sinks.get を使用して、シンクの書き込み ID を検索し、ID がエクスポート先への書き込みを許可されていることを確認します。

  • ログがエクスポートされない: 考えられる理由は次のとおりです。

    • クエリが正しくありません。エクスポート クエリをチェックして、クエリに一致するログエントリが最近 Logging に到着していることを確認します。スペルミスやフォーマット エラーを修正します。

    • シンクを作成または更新してから一致するログエントリが受信されていません。新しいログエントリのみがエクスポートされます。

      エクスポートされたログをエクスポート先で表示するまで時間がかかります。これは特に Cloud Storage のエクスポート先に当てはまります。詳しくは、エクスポートしたログの可用性をご覧ください。

      エクスポート システムの指標を確認することもできます。エクスポート システムの指標では、エクスポートされるログエントリの数と、エラーによってドロップされたログエントリの数がわかります。

エラーが修正されると、シンクはログのエクスポートを開始します。

ログビューアを使用してシンクエラーを表示する方法は次のとおりです。

  1. シンクが作成されたプロジェクトまたは他のリソースのアクティビティ ストリームに移動します。

    アクティビティ ストリームに移動

  2. [Filters] パネルで、[アクティビティ タイプ] > [設定]、[リソースの種類] > [ロギング エクスポート シンク] をそれぞれ選択します。

  3. [Date/time] を調整して、該当する期間のシンクエラーを表示します。

    シンクエラーが表示されます。

次のセクションでは、サービス固有の発生する可能性のあるエラーと予期しない結果の一覧を示し、それらに対処する方法を説明します。

Cloud Storage にエクスポートするとき発生するエラー

Cloud Storage にログをエクスポートするときによく発生するエラーを次の表に示します。

エラー 原因 解決方法
バケット [YOUR_BUCKET] の権限では、ロググループで新しいオブジェクトを作成できません。 シンクの書き込み ID に、バケットに対する正しい権限がありません。 バケットに必要な権限を追加するか、別のバケットを使用するようにシンクを更新します。エクスポート先の権限をご覧ください。
[YOUR_BUCKET] という名前のバケットはありません。 バケット名にエラーがあるか、バケットが削除された可能性があります。 正しいバケット エクスポート先でシンクを更新してください。
シンクは正常に作成されましたが、エクスポート先に適切な権限を付与できませんでした。 バケットの作成時にバケットのアクセス制御モデルが [均一] に設定されました。

このエラー メッセージは、サービス アカウントの追加後も引き続き表示されます。
バケットの作成中に [きめ細かい管理] アクセス制御モデルを選択します。既存のバケットの場合、バケットの作成後 90 日以内に [権限] タブを使用してアクセス制御モデルを変更できます。

BigQuery にエクスポートするとき発生するエラー

BigQuery にログをエクスポートするときによく発生するエラーを次の表に示します。

エラー 原因 解決方法
データセット [YOUR_DATASET] の権限では、ロググループで新しいテーブルを作成できません。 シンクの書き込み ID に、データセットに対する十分な権限がありません。 データセットに権限を追加します。エクスポート先の権限をご覧ください。
[YOUR_DATASET] という名前のデータセットはありません。 シンクのエクスポート先にエラーがあるか、誰かがデータセットを削除した可能性があります。 データセットを再作成するか、別のデータセットを使用するようにエクスポート シンクを更新します。
データセット [YOUR_DATASET] 内のテーブル [YOUR_TABLE] にストリーム出力されたログが、テーブル スキーマと一致しません。 エクスポートしようとしているログが現在のテーブルのスキーマに適合していません。 ログエントリがテーブル スキーマと一致することを確認します。一般的な問題としては、異なるデータ型のログエントリを送信することが考えられます。たとえば、ログエントリのフィールドの 1 つが整数値で、スキーマで対応する列が文字列型になっている場合があります。アクティビティ ストリームには、無効なログエントリに対するリンクが含まれています。エラーの原因を修正したら、現在のテーブルの名前を変更して、Logging で再度テーブルを作成します。
データセット [YOUR_DATASET] 内のテーブル [YOUR_TABLE] について、テーブルごとのストリーミング挿入の割り当てを超えています。 短時間に大量のログをエクスポートしようとしています。ログのストリーミングに適用される BigQuery のデフォルトの割り当て上限をご覧ください。 シンクが生成するログデータの量を減らします。一致するログエントリの数が少なくなるようにシンクのクエリを更新したり、sample() 関数を使用したりします。
パーティション分割テーブル [YOUR_TABLE] にストリーミングされたログは、許可されている期間に含まれていません。 BigQuery では、許容された期間とかけ離れているログを受け入れません。 許可されている期間に含まれていないログをシンクでエクスポートすることはできません。これらのログを Cloud Storage にエクスポートすることで、代わりに BigQuery の読み込みジョブを使用できます。詳細については、BigQuery のドキュメントをご覧ください。
組織のポリシーで禁止されているため、データセット [YOUR_DATASET] にログをストリーミングできません。 選択したデータセットへの書き込みを禁止する組織のポリシーが存在します。組織のポリシーの詳細については、ドキュメントを参照してください。 エクスポート シンクを変更して、ポリシーに準拠したデータセットを使用します。

Pub/Sub にログをエクスポートするとき発生するエラー

Pub/Sub にログをエクスポートするときによく発生するエラーを次の表に示します。

エラー 原因 解決方法
[PROJECT] で [ACCOUNT] に編集アクセス権がないため、[TOPIC] に情報を公開できません。 シンクの書き込み ID に、トピックに対する正しい権限がありません。 プロジェクトに必要な権限を追加します。エクスポート先の権限をご覧ください。
トピック [TOPIC] は存在しません。 エクスポートしたログを受け取るように構成したトピックを削除してしまった可能性があります。 同じ名前のトピックを作り直すか、エクスポートの構成を変更して別のトピックを使います。

次のステップ