Logging ツールを使用したクイックスタート

このクイックスタートでは、Cloud Logging のいくつかの機能を紹介し、以下の実行方法について説明します。

  • gcloud コマンドライン ツールを使用して、ログエントリを書き込む。
  • gcloud コマンドライン ツールを使用して、ログエントリをリスト表示する。
  • Logging API を使用してログエントリをリスト表示する
  • ログ エクスプローラを使用してログエントリを表示、クエリする。

始める前に

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

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

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

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

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

  5. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

始めに

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

このクイックスタートの gcloud コマンドライン ツール コマンドには、Cloud Shell 環境または Compute Engine 仮想マシン(VM)インスタンスが使用できます。

Cloud Shell

  1. Cloud SDK は、Cloud Shell 環境にあらかじめインストールされています。他のソフトウェアのインストールや構成を行う必要はありません。

  2. Cloud Shell を開き、プロジェクトの構成を確認します。

    1. Cloud Console で、[Cloud Shell をアクティブにする] をクリックします。

      Cloud Shell をアクティブにする

      Cloud Shell のウィンドウが開き、ウェルカム メッセージが表示されます。

      Welcome to Cloud Shell

    2. ウェルカム メッセージでは、構成されたプロジェクト ID がエコーされます。この ID が、使用するプロジェクトのものでない場合は、[PROJECT_ID] を目的のプロジェクト ID に置き換えて、次のコマンドを実行します。

       gcloud config set project [PROJECT_ID]
      

VM インスタンス

  1. Compute Engine VM インスタンスを作成します。

    1. Cloud Console で、[Compute Engine] > [VM インスタンス] を選択します。[作成] を選択します。次のメッセージが表示されたら、続行する前に Compute Engine が準備できるまで待ちます。

      Compute の準備

    2. [ID と API へのアクセス] で、[各 API にアクセス権を設定] を選択します。Cloud Logging API が見つかるまでリスティングをスクロールします。[書き込みのみ] から [フル] にアクセスを切り替えます。

      Compute の準備

    3. その他の設定はデフォルト値のままにして、[作成] をクリックします。しばらくすると、VM インスタンスを使用できるようになります。

  2. VM インスタンス シェルに接続するには、[SSH] > [ブラウザ ウィンドウで開く] に移動します。しばらくすると、Debian GNU / Linux シェルのウィンドウが開き、ウェルカム メッセージが表示されます。

  3. Cloud SDK は、GCM VM インスタンスにあらかじめインストールされています。Cloud SDK が Compute Engine プロジェクト用に構成されていることを確認するには、次のコマンドを実行します。

     gcloud config list
    
  4. リストされているプロジェクトが使用するプロジェクトでない場合は、[PROJECT_ID] を目的のプロジェクト ID に置き換えて、次のコマンドを実行します。

     gcloud config set project [PROJECT_ID]
    

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

Logging では、構造化データを含むログエントリと非構造化データを含むログエントリがサポートされています。構造化データは、JSON データ構造で構成されます。例: {"weather": "partly cloudy"}。非構造化データは文字列です。例: "A simple entry"。次のステップでは、非構造化データのログエントリと構造化データのログエントリを作成するツール gcloud を使用します。

  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 ツールを使用してログエントリを一覧表示する

gcloud ツールを使用して 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 を使用してログエントリをリスト表示する

API Explorer を使用すると、コードを書かずに Logging API メソッドを実行できます。Logging からログエントリのリストを読み取るには次のようにします。

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

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

  2. API Explorer ウィジェットが表示されます。「この API を試す」という見出しがあります。次のテキストをコピーして、リクエストの本文に貼り付けます。[実行] をクリックする前に [PROJECT_ID] を置き換えてください。

      "resourceNames": [
        "projects/[PROJECT_ID]"
      ],
      "filter": "resource.type=global",
      "orderBy": "timestamp desc"
    

    これらの設定が完了したリクエストの本文の例を以下に示します。

    この API を試す

  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"
        }
      ]
    }
    

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

ログ エクスプローラは、ログエントリを表示、クエリ、ダウンロードするためのツールです。ログ エクスプローラでログを表示する方法は次のとおりです。

  1. Google Cloud Console のログ エクスプローラに移動します。

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

    [ログ エクスプローラ] ページが表示されます。

    以前のログビューア

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

  2. リソースタイプのプルダウン リストで [グローバル] を選択して、先ほど書き込んだログエントリを表示します。

    以前のログビューア グローバル

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

  3. ログエントリを展開するには、[メニュー] をクリックします。

    以前のログビューア

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

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

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

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

  1. 検索クエリボックスに文字列 simple を入力します。ログにはログエントリ A simple entry. のみが表示されます。

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

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

  1. 高度なクエリモードに切り替えるには、クエリボックスのプルダウン メニューをクリックし、[高度なフィルタに変換] を選択します。
  2. クエリボックスには、resource.type="global" の行が含まれています。その行の下に次の行を入力します。

    jsonPayload.weather:partly
    
  3. [フィルタを送信] をクリックします。結果は My second entry の単一のログエントリです。

    ログエントリの高度なクエリ

クエリの詳細については、高度なログクエリをご覧ください。

トラブルシューティング

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

     ERROR: (gcloud.logging.read) INVALID_ARGUMENT: Field not found: 'resourcetype'.
    
  • Cloud Logging に必要なアクセス権限が付与されていない場合、gcloud ツールのコマンドが権限がありませんのメッセージを返して終了します。たとえば、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 を使用できるようになります。
  • 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
    

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

次のステップ

  • Logging のコマンドライン インターフェースの詳細については、gcloud logging コマンド グループをご覧ください。
  • Logging API に関するドキュメントについては、Cloud Logging API を参照してください。
  • ログ エクスプローラの詳細については、ログ エクスプローラをご覧ください。
  • Logging で VM インスタンスからログエントリを収集する方法については、Logging エージェントについてをご覧ください。
  • DevOps に関するリソースを読む。また、研究プログラムについて確認する。