LoginSignup
7
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-04

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を始めとした日付整形が可能
  • 良いログライフを!

参考

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0