fluentdからBigQueryへのログ出力で日本時間(JST)をUTCに変換

2020年1月22日

BigQueryのTIMESTAMPはUTC時間にしか対応してません。
単純にログを出力すると日本時間がUTC時間としてBigQueryのデータができてしまいます。

前回の記事でfluentdに送信したログをBigQueryに出力について記載しました。
そこで td-agent.confにうまく変換してくれる設定を入れています。

具体的には以下の部分の設定になります。

  <inject>
    time_key time
    time_type unixtime
    time_format %Y-%m-%d %H:%M:%S
    timezone Asia/Tokyo
  </inject>

このようにtimeフィールドの型を「unixtime」として、タイムゾーンを「Asia/Tokyo」と設定してあげれば日本時間をUTC時間に変換した時間でBigQueryにデータが作成されます。

複数のTIMESTAMP型のフィールドには対応していないようで、
複数の<inject>セクションを書くとfluentdの起動時にエラーになってしまいました。

とりあえずBigQueryの分割テーブルへの対応ができ目的は達成されたので、
他の時間カラムは日本時間をそのままStringで保存することとしました。