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

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

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

始める前に

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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

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

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

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

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

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

  6. Install the Google Cloud CLI.
  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

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

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  9. Make sure that billing is enabled for your Google 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 リファレンス ドキュメントをご覧ください。

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

コードを記述せずに Logging API メソッドを実行するには、API Explorer の使用をご覧ください。Logging からログエントリのリストを読み取るには、次の操作を行います。

  1. entries.list API メソッドの API リファレンス ページに移動します。

    entries.list API ページに移動する

  2. API コマンドを構成して実行します。

    1. 次のテキストの PROJECT_ID を置き換えます。

      "resourceNames": [
      "projects/PROJECT_ID"
      ],
      "filter": "resource.type=global",
      "orderBy": "timestamp desc"
      
    2. 前のステップで更新したテキストをコピーし、API Explorer の [Request body] フィールドに貼り付けます。

    3. [実行] をクリックします。

    次のようなレスポンスが返されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Google 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 に読み取り権限を付与します。

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

    • 200 レスポンス コードとエントリなし: nextPageToken というメッセージが表示される場合は、API Explorer が時間内に検索を完了できなかったことを示します。pageToken をリクエストに追加し、キー nextPageToken で指定された値と同じ値に設定して、コマンドを再試行します。
    • 400 レスポンス コード: クエリの値が無効です。たとえば、globalgloobal としてスペルミスした場合は、メッセージは Unsupported resource type: gloobal です。
    • レスポンス コード 404: プロジェクト ID が無効です。プロジェクト ID のスペルを確認してください。
    • Google Cloud プロジェクトにログインして、API Explorer にアカウントへのアクセスを許可するように求められる場合があります。

クリーンアップ

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

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

    gcloud logging logs delete my-test-log
    

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

次のステップ

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