この記事で出てくるコマンドはいずれも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
これらのクエリやその組み合わせを用いるとログをまとめたり、調査するのが幾分か楽になります。