gcloud CLI を使用したログエントリの書き込みとクエリ
このドキュメントでは、Cloud Logging のいくつかの機能を紹介し、以下の内容の実行方法について説明します。
- Google Cloud CLI を使用してログエントリを書き込みます。
- gcloud CLI を使用してログエントリをリスト表示する
- Logging API を使用してログエントリをリスト表示する
- ログ エクスプローラを使用してログエントリを表示、クエリする。
始める前に
このクイックスタートを完了するには、課金が有効になっている Google Cloud プロジェクトが必要です。Google Cloud プロジェクトがない場合、または Google Cloud プロジェクトに対して課金が有効になっていない場合は、次の手順を実行します。- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
ご利用にあたって
gcloud CLI にある gcloud logging
というコマンドグループは、Cloud Logging API のコマンドライン インターフェースを提供します。
このクイックスタートの gcloud CLI コマンドには、Cloud Shell 環境や Compute Engine 仮想マシン(VM)インスタンスを使用できます。Cloud Shell 環境には、gcloud CLI があらかじめインストールされています。
Cloud Shell
gcloud CLI が正しい Google Cloud プロジェクトを使用するように構成されていることを確認します。
Google Cloud コンソール で、 [terminalCloud Shell をアクティブにする] をクリックします。
Cloud Shell のウィンドウが開き、ウェルカム メッセージが表示されます。ウェルカム メッセージは、構成されたプロジェクト ID を確認表示します。
ウェルカム メッセージに表示されている Google Cloud プロジェクトとは異なるものを使用する場合は、PROJECT_ID をそのプロジェクト ID に置き換えて、次のコマンドを実行します。
gcloud config set project PROJECT_ID
プロジェクト ID を取得するには、プロジェクトの特定をご覧ください。
VM インスタンス
Google Cloud コンソールで Compute Engine VM インスタンスを作成するには、次の手順に沿って操作します。
Google Cloud コンソールで、[Compute Engine] を選択し、[VM インスタンス] を選択します。
[インスタンスを作成] を選択します。
[ID と API へのアクセス] の [アクセス スコープ] で、[API ごとにアクセス権を設定] を選択します。
Stackdriver Logging API が見つかるまでリスティングをスクロールします。アクセスを [フル] に切り替えます。
その他の設定はデフォルト値のままにして、[作成] をクリックします。VM インスタンスを使用する準備ができました。
[SSH] をクリックして、VM インスタンス シェルに接続します。しばらくすると、Debian GNU / Linux シェルのウィンドウが開き、ウェルカム メッセージが表示されます。
次のコマンドを実行して、gcloud CLI が使用中の Compute Engine プロジェクトで構成されていることを確認します。
gcloud config list
別の Google Cloud プロジェクトを使用する場合は、PROJECT_ID をプロジェクト ID に置き換えてから、次のコマンドを実行します。
gcloud config set project PROJECT_ID
プロジェクト ID を取得するには、プロジェクトの特定をご覧ください。
gcloud CLI を使用してログエントリを書き込む
Logging では、構造化データを含むログエントリと非構造化データを含むログエントリがサポートされています。構造化データは、JSON データ構造で構成されます。例: {"weather": "partly cloudy"}
。非構造化データは文字列です。例: "A simple entry"
。次の手順では、gcloud CLI を使用して、非構造化データを含むログエントリと構造化データを含むログエントリを書き込みます。
非構造化データを含むログエントリをログ
my-test-log
に書き込みます。gcloud logging write my-test-log "A simple entry."
コマンドが完了すると、次のメッセージが表示されます。
Created log entry
。構造化データを含むログエントリをログ
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 からログエントリのリストを読み取るには、次の操作を行います。
entries.list
API メソッドの API リファレンス ページに移動します。API コマンドを構成して実行します。
次のテキストの PROJECT_ID を置き換えます。
"resourceNames": [ "projects/PROJECT_ID" ], "filter": "resource.type=global", "orderBy": "timestamp desc"
前のステップで更新したテキストをコピーし、API Explorer の [Request body] フィールドに貼り付けます。
[実行] をクリックします。
次のようなレスポンスが返されます。
{ "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 プロジェクトは多数のログを保存しています。クエリを作成することで、特定のログエントリを選択できます。
ログ エクスプローラを使用して書き込んだログエントリを表示するには、次の操作を行います。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
Google Cloud のナビゲーション バーで Google Cloud プロジェクトが選択されていることを確認します。必要に応じて、Google Cloud プロジェクトのプルダウン リストを使用して Google Cloud プロジェクトを選択します。
[リソース] メニューで [グローバル] を選択します。
[グローバル] メニュー オプションが表示されない場合や、該当するログエントリが表示されない場合は、数分待ってからページを更新します。Logging でログエントリが受信されるまでに数分かかることがあります。
ログエントリの詳細を表示するには、その chevron_right メニューをクリックします。
1 つ目のログエントリのデータは
textPayload
に格納されています。2 つ目のログエントリには構造化データが含まれているため、データがjsonPayload
に格納されています。構造化ペイロードにはmessage
とweather
というキーが含まれています。
ログエントリのデータ形式の詳細については、LogEntry
タイプをご覧ください。
ログ エクスプローラのクエリログ エントリ
クエリエディタと、構造化ログではキーと値を使用してログエントリをクエリできます。たとえば、テキスト simple
を含むすべてのログエントリを表示するには次のようにします。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
[リソース] メニューで [グローバル] を選択します。
クエリエディタで、文字列
simple
を引用符で囲んで入力します。ログにはログエントリA simple entry.
のみが表示されます。ログを表示したら、追加したクエリ文字列を削除して、[クエリを実行] をクリックします。両方のログエントリが画面に再表示されます。
キー weather
を持ち、value
フィールドに partly
が含まれる構造化データを含むすべてのログエントリを表示するには、次のようにします。
クエリエディタには、
resource.type="global"
という行が含まれます。次のコマンドを入力します。jsonPayload.weather:partly
[クエリを実行] をクリックします。結果は
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 に読み取り権限を付与します。
- VM インスタンスの [VM インスタンスの詳細] ページに移動します。[停止] をクリックします。完了までに 1~2 分かかることがあります。
- 構成を変更するには、[編集] をクリックします。
- [Cloud API アクセス スコープ] という見出しを見つけて、[詳細] をクリックします。各 API の設定が表示されます。Cloud Logging API のエントリを [フル] に変更して、[保存] をクリックします。
- VM インスタンスを再起動するには、[開始] をクリックします。しばらくすると、VM を使用できるようになります。
API Explorer では、コマンドを完了できない場合や、追加の承認が必要な場合に、次のメッセージまたはエラーコードが表示されます。
- 200 レスポンス コードとエントリなし:
nextPageToken
というメッセージが表示される場合は、API Explorer が時間内に検索を完了できなかったことを示します。pageToken
をリクエストに追加し、キーnextPageToken
で指定された値と同じ値に設定して、コマンドを再試行します。 - 400 レスポンス コード: クエリの値が無効です。たとえば、
global
をgloobal
としてスペルミスした場合は、メッセージはUnsupported resource type: gloobal
です。 - レスポンス コード 404: プロジェクト ID が無効です。プロジェクト ID のスペルを確認してください。
- Google Cloud プロジェクトにログインして、API Explorer にアカウントへのアクセスを許可するように求められる場合があります。
- 200 レスポンス コードとエントリなし:
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
(オプション)作成したログエントリを削除するには、次の
gcloud
コマンドを実行します。gcloud logging logs delete my-test-log
ログエントリを削除しない場合、ログエントリは期限切れとなり削除されます。保持情報については、割り当てと制限をご覧ください。
次のステップ
- Logging のコマンドライン インターフェースの詳細については、
gcloud logging
コマンド グループをご覧ください。 - Logging API に関するドキュメントについては、Cloud Logging API を参照してください。
- ログ エクスプローラの詳細については、ログ エクスプローラの使用をご覧ください。
- Logging で VM インスタンスからログエントリを収集する方法については、Google Cloud Observability エージェントをご覧ください。