Help us understand the problem. What is going on with this article?

gcloudで出力される日時項目のタイムゾーンをJSTに変換する

GCPのStackdriver Loggingは最高のプロダクトの一つですよね。

Stackdriverに限らずですがGCPのリソースを確認する際に、慣れてくるとgcloudのCLI経由で作業したいケースが増えてくると思います。その場合に、特にログ周りの出力日時は、国内サービスを運営している人からするとTimezoneがUTCだと脳内マッピングが発生して混乱する人が多いと思います。(というか私です)

...という訳で、JST(Japan Standard Time: 日本標準時)で出力する方法を調べました。

結論

日付項目に対して、--formatオプション内で .date(tz=Asia/Tokyo) を提供すればOKです。これで変換してくれるのは不思議ですね。当初は取得した文字列をawkとかで変換するかーとか思っていたのですが、gcloudのオプションでできました。凄い。

JST指定する例
$ gcloud logging read --project <Your GCP Project ID> "resource.type=<Your Resource Type>" \
  --format="table(receiveTimestamp.date(tz=Asia/Tokyo), textPayload)" \
  --order=asc
RECEIVE_TIMESTAMP    TEXT_PAYLOAD
2019-09-03T21:00:10  Function execution started
2019-09-03T21:00:27  Function execution took 17391 ms, finished with status: 'ok'
...省略...

デフォルトでは並び順がdescなので、--orderオプションで昇順に切り替えています。

ちなみに、日付フォーマットも変換できます。.date('%Y-%m-%d %H:%M:%S.%Z', tz=Asia/Tokyo) のように記載することでTimezone付きで出力することもできます。

日付フォーマットでTimezoneまで指定した例
$ gcloud logging read --project <Your GCP Project ID> "resource.type=<Your Resource Type>" \
  --format="table(receiveTimestamp.date('%Y-%m-%d %H:%M:%S%Z', tz=Asia/Tokyo), textPayload)" \
  --order=asc
RECEIVE_TIMESTAMP           TEXT_PAYLOAD
2019-09-03 21:00:10+09:00  Function execution started
2019-09-03 21:00:27+09:00  Function execution took 17391 ms, finished with status: 'ok'
...省略...

これでログをSlackなどで別の人に渡しても混乱が減りますね。

gcloudの--formatオプションは中々趣がある機能が満載です。もちろんそのままJSONでもCSVでも出力できますし、いい感じにパディングしてくれるtableオプションもあります。

フィールドの項目もjqで絞り込みを行わずgcloudで行ってしまうことが、コマンドをシンプルにする上でもおすすめです。

まとめ

  • gcloudの--formatオプションでTimezoneを始めとした日付整形が可能
  • 良いログライフを!

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした