【Google Cloud】 gcloud CLI を使って App Engine についてのログを取得する方法

 この記事で出てくるコマンドはいずれもWindows上で実行しています。

 Google Cloud は、Google の提供するクラウドサービスでウェブサイトのホスティングやデータの管理など様々なことができます。自分が使う時は App Engine を使用してウェブサイトを運用することが多いです。Google Cloud はウェブページ上で操作することが可能ですが、gcloud CLI を使用してコンソールから操作することもできます。この記事では、gcloud CLI を使用したログの取得方法について紹介します。

クラウド コンピューティング サービス |Google Cloud | Google Cloud
gcloud CLI の概要  |  Google Cloud CLI Documentation

 gcloud CLI からログを取るための機能はgcloud logging readにまとまっています。これに欲しいログの条件を付け足していい感じにログを集めます。リファレンスは次リンクです。

gcloud logging read  |  Google Cloud CLI Documentation
Logging のクエリ言語  |  Google Cloud

よく使うオプション

 よくとりあえず使うオプションとして project, limit, format があります。project はログの発生源の属するプロジェクト、limit は件数、 format は出力形式です。例えば次のように使えます。

gcloud logging read  --limit 10 --format json --project=my-project

 project に関しては gcloud の設定でデフォルト値をセットすることもできます。自分は対象のプロジェクトを誤るのを防ぐ意味合いも込めてデフォルト値をセットしていませんが、長期間扱うプロジェクトが一つだけの場合はセットしておいた方がよさそうです。

gcloud config set project my-project
# 解除は↓です。
gcloud config unset project

 また gcloud とは別ですがリダイレクトでファイルにログを残すと後で確認しやすいです。

# 現在日時をファイル名に含めてjsonファイルに保存する
# PowerShell
gcloud logging read --limit 10 --format json --project=my-project > logs_$(Get-Date -Format 'yyyyMMdd_HHmmss').json
# shell
gcloud logging read --limit 10 --format json --project=my-project > logs_$(date +%Y%m%d_%H%M%S).json

一定期間内のログを取得するクエリ

以下のコマンドは、特定の期間内のログを取得するためのクエリの例です。このクエリでは日本時間の2024年5月31日の19:00から20:00までのログを取得しています。

gcloud logging read 'timestamp >= \"2024-05-31T19:00:00+09:00\" AND timestamp < \"2024-05-31T20:00:00+09:00\"' --limit 10 --format json --project=my-project

このコマンドを実行すると、指定した期間内のログが `log.json` ファイルに保存されます。ついさっき行った処理の結果をログに

特定のバージョンの App Engine のログを取得

特定のバージョンの App Engine のログを取得する場合、次のように resource.labels.version_id を指定できます。

gcloud logging read 'resource.labels.version_id=20240626t110132 ' --limit 10 --format json --project=my-project
# 今どのバージョンがどうなってるかの一覧は次のコマンドで見れます
gcloud app versions list --project my-project

500エラーのみを取得

レスポンスのステータスが500の時のログを取るのは次のコマンドでできます。500以外でも同様に指定できますし、不等号を使うことで範囲指定もできます。

gcloud logging read 'httpRequest.status=500' --limit 10 --format json --project=my-project

エラーログのみを取得

特定のプロジェクトのエラーログのみを取得するには、次のコマンドを使用します。

gcloud logging read "severity=ERROR"  --limit 10 --format json --project=my-project

リアルタイムで監視

アクセスされた時や何か起きた時にすぐに手元のコンソールでログを見れます。

gcloud app logs tail --service default --project my-project

これらのクエリやその組み合わせを用いるとログをまとめたり、調査するのが幾分か楽になります。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG