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

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

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

始める前に

このクイックスタートを完了するには、課金が有効になっている Google Cloud プロジェクトが必要です。Google Cloud プロジェクトがない場合、または Google Cloud プロジェクトに対して課金が有効になっていない場合は、次の手順を実行します。
  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

ご利用にあたって

gcloud CLI にある gcloud logging というコマンドグループは、Cloud Logging API のコマンドライン インターフェースを提供します。

このクイックスタートの gcloud CLI コマンドには、Cloud Shell 環境や Compute Engine 仮想マシン(VM)インスタンスを使用できます。Cloud Shell 環境には、gcloud CLI があらかじめインストールされています。

Cloud Shell

gcloud CLI が正しい Google Cloud プロジェクトを使用するように構成されていることを確認します。

  1. Google Cloud コンソール で、 [Cloud Shell をアクティブにする] をクリックします。

    Cloud コンソールの Cloud Shell ボタンのスクリーンショット。

    Cloud Shell のウィンドウが開き、ウェルカム メッセージが表示されます。ウェルカム メッセージは、構成されたプロジェクト ID を確認表示します。

    ウェルカム メッセージを表示する Cloud Shell のスクリーンショット。

  2. ウェルカム メッセージに表示されている Google Cloud プロジェクトとは異なるものを使用する場合は、PROJECT_ID をそのプロジェクト ID に置き換えて、次のコマンドを実行します。

       gcloud config set project PROJECT_ID
       

    プロジェクト ID を取得するには、プロジェクトの特定をご覧ください。

VM インスタンス

Google Cloud コンソールで Compute Engine VM インスタンスを作成するには、次の手順に沿って操作します。

  1. Google Cloud コンソールで [Compute Engine] を選択し、[VM インスタンス] を選択します。

  2. [インスタンスを作成] を選択します。

  3. [ID と API へのアクセス] の [アクセス スコープ] で、[API ごとにアクセス権を設定] を選択します。

  4. Stackdriver Logging API が見つかるまでリスティングをスクロールします。アクセスを [Full] に切り替えます。

  5. その他の設定はデフォルト値のままにして、[作成] をクリックします。VM インスタンスを使用する準備ができました。

  6. [SSH] をクリックして、VM インスタンス シェルに接続します。しばらくすると、Debian GNU / Linux シェルのウィンドウが開き、ウェルカム メッセージが表示されます。

  7. 次のコマンドを実行して、gcloud CLI が Compute Engine プロジェクト用に構成されていることを確認します。

    gcloud config list
    
  8. 別の Google Cloud プロジェクトを使用する場合は、PROJECT_ID をプロジェクト ID に置き換えてから、次のコマンドを実行します。

      gcloud config set project PROJECT_ID
      

    プロジェクト ID を取得するには、プロジェクトの特定をご覧ください。

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

Logging では、構造化データを含むログエントリと非構造化データを含むログエントリがサポートされています。構造化データは、JSON データ構造で構成されます。例: {"weather": "partly cloudy"}。非構造化データは文字列です。例: "A simple entry"。次の手順では、gcloud CLI を使用して、非構造化データを含むログエントリと構造化データを含むログエントリを書き込みます。

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

    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'

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 コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログ エクスプローラ] を選択します。

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

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

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

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

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

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

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

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

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

  1. Google Cloud コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログ エクスプローラ] を選択します。

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

  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 アカウントにログインして API Explorer にアカウントへのアクセスを許可するように求められる場合があります。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

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

    gcloud logging logs delete my-test-log
    

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

次のステップ