gcloud CLI を使用したログエントリの書き込みとクエリ

このドキュメントでは、Cloud Logging のいくつかの機能を紹介し、以下の内容の実行方法について説明します。

  • Google Cloud CLI を使用してログエントリを書き込む。
  • gcloud CLI を使用してログエントリをリスト表示する。
  • Logging API を使用してログエントリをリスト表示する。
  • ログ エクスプローラを使用してログエントリを表示、クエリする。

始める前に

このクイックスタートを完了するには、課金が有効になっている Trusted Cloud プロジェクトが必要です。 Trusted Cloud プロジェクトがない場合、または Trusted Cloud プロジェクトに対して課金が有効になっていない場合は、次の操作を行います。

  1. Install the Google Cloud CLI.

  2. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Trusted Cloud project.

    • Create a Trusted Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Trusted Cloud project you are creating.

    • Select the Trusted Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Trusted Cloud project name.

  5. Make sure that billing is enabled for your Trusted Cloud project.

gcloud CLI を使用してログエントリを書き込む

Logging では、構造化データを含むログエントリと非構造化データを含むログエントリがサポートされています。構造化データは、JSON データ構造で構成されます。例: {"weather": "partly cloudy"}。非構造化データは文字列です。例: "A simple entry"

次の手順では、gcloud CLI を使用して、非構造化データを含むログエントリと構造化データを含むログエントリを書き込みます。gcloud CLI は、Cloud Logging API へのコマンドライン インターフェースを提供します。

  1. 非構造化データを含むログエントリをログ my-test-log に書き込みます。gcloud logging write コマンドを実行します。

    gcloud logging write my-test-log "A simple entry."
    

    コマンドが完了すると、次のメッセージが表示されます。Created log entry

  2. 構造化データを含むログエントリをログ my-test-log に書き込みます。

    gcloud logging write --payload-type=json my-test-log '{ "message": "My second entry", "weather": "partly cloudy"}'
    

    構造化データを含むログエントリを書き込む場合は、--payload-type=json を含める必要があります。このフィールドを省略すると、Logging はペイロードを非構造化データとして解釈します。

ログ my-test-log が存在しない場合、ログエントリの受信時にログが作成されます。

gcloud CLI を使用してログエントリをリスト表示する

gcloud CLI を使用して、Logging からログエントリを取得して表示できます。たとえば、リソースタイプが global のログエントリを取得して表示するには、次のコマンドを実行します。

gcloud logging read "resource.type=global"

このコマンドは次のような結果を返します。

---
insertId: jpj9zjf73t1mn
jsonPayload:
  message: My second entry
  weather: partly cloudy
logName: projects/myloggingproject/logs/my-test-log
receiveTimestamp: '2018-11-01T18:39:31.114507977Z'
resource:
  labels:
    project_id: myloggingproject
  type: global
timestamp: '2018-11-01T18:39:31.114507977Z'
---
insertId: vd4m1if7h7u1a
logName: projects/myloggingproject/logs/my-test-log
receiveTimestamp: '2018-11-01T18:39:19.718100792Z'
resource:
  labels:
    project_id: myloggingproject
  type: global
textPayload: A simple entry
timestamp: '2018-11-01T18:39:19.718100792Z'

ログの読み取りの詳細については、gcloud logging read リファレンス ドキュメントをご覧ください。

ログ エクスプローラでログエントリを表示する

Trusted Cloud コンソールでログエントリを表示するには、ログ エクスプローラを使用します。ほとんどの Trusted Cloud プロジェクトは多数のログを保存しています。クエリを作成することで、特定のログエントリを選択できます。

ログ エクスプローラを使用して書き込んだログエントリを表示するには、次の操作を行います。

  1. Trusted Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

    Trusted Cloud by S3NSナビゲーション バーで Trusted Cloud プロジェクトが選択されていることを確認します。必要に応じて、 Trusted Cloud プロジェクトのプルダウン リストを使用して Trusted Cloud プロジェクトを選択します。

  2. [リソース] メニューで [グローバル] を選択します。

    [グローバル] メニュー オプションが表示されない場合や、該当するログエントリが表示されない場合は、数分待ってからページを更新します。Logging でログエントリが受信されるまでに数分かかることがあります。

  3. ログエントリの詳細を表示するには、その [メニュー] をクリックします。

    1 つ目のログエントリのデータは textPayload に格納されています。2 つ目のログエントリには構造化データが含まれているため、データが jsonPayload に格納されています。構造化ペイロードには messageweather というキーが含まれています。

ログエントリのデータ形式の詳細については、LogEntry タイプをご覧ください。

ログ エクスプローラのクエリログ エントリ

クエリエディタと、構造化ログではキーと値を使用してログエントリをクエリできます。たとえば、テキスト simple を含むすべてのログエントリを表示するには次のようにします。

  1. Trusted Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [リソース] メニューで [グローバル] を選択します。

  3. クエリエディタで、文字列 simple を引用符で囲んで入力します。ログにはログエントリ A simple entry. のみが表示されます。

  4. ログを表示したら、追加したクエリ文字列を削除して、[クエリを実行] をクリックします。両方のログエントリが画面に再表示されます。

キー weather を持ち、value フィールドに partly が含まれる構造化データを含むすべてのログエントリを表示するには、次のようにします。

  1. クエリエディタには、resource.type="global" という行が含まれます。次のコマンドを入力します。

    jsonPayload.weather:partly
    
  2. [クエリを実行] をクリックします。結果は My second entry の単一のログエントリです。

ログ エクスプローラでは、保存したクエリ、おすすめのクエリ、最近のクエリも使用できます。 クエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。

サンプルクエリについては、ログ エクスプローラを使用したサンプルクエリをご覧ください。

トラブルシューティング

  • 入力ミスや不明なフィールド名がある場合は、gcloud CLI コマンドが無効な引数のメッセージを返して終了します。たとえば、resource.type でピリオドを忘れたとすると、次のエラーが発生します。

     ERROR: (gcloud.logging.read) INVALID_ARGUMENT: Field not found: 'resourcetype'.
    
  • Cloud Logging に必要なアクセス権限が付与されていない場合、gcloud CLIのコマンドが権限がありませんのメッセージを返して終了します。たとえば、Compute Engine VM インスタンスがデフォルトの API 設定で構成されている場合、list コマンドは権限拒否エラーで終了します。

     ERROR: (gcloud.logging.read) PERMISSION_DENIED: Request had insufficient authentication scopes.
    

    この状態を解決するには、Compute Engine VM インスタンスの権限を変更して、Cloud Logging に読み取り権限を付与します。

    1. VM インスタンスの [VM インスタンスの詳細] ページに移動します。[停止] をクリックします。完了までに 1~2 分かかることがあります。
    2. 構成を変更するには、[編集] をクリックします。
    3. [Cloud API アクセス スコープ] という見出しを見つけて、[詳細] をクリックします。各 API の設定が表示されます。Cloud Logging API のエントリを [フル] に変更して、[保存] をクリックします。
    4. VM インスタンスを再起動するには、[開始] をクリックします。しばらくすると、VM を使用できるようになります。

クリーンアップ

このページで使用したリソースについて、 Trusted Cloud アカウントに課金されないようにするには、リソースを含む Trusted Cloud プロジェクトを削除します。

  1. (オプション)作成したログエントリを削除するには、次の gcloud コマンドを実行します。

    gcloud logging logs delete my-test-log
    

    ログエントリを削除しない場合、ログエントリは期限切れとなり削除されます。保持情報については、割り当てと制限をご覧ください。

次のステップ

  • Logging のコマンドライン インターフェースの詳細については、gcloud logging コマンド グループをご覧ください。
  • Logging API に関するドキュメントについては、Cloud Logging API を参照してください。
  • ログ エクスプローラの詳細については、ログ エクスプローラの使用をご覧ください。