web-dev-qa-db-ja.com

puppetdbクエリとmysqlクエリによるタイムスタンプの違い

ノードからのレポートをpuppetdbに保存します。次のクエリを介して特定のノードからレポートを受信した時刻を確認したい:

curl -sk http://pdb:8080/v3/reports --data-urlencode 'query=["=", "certname", "Host.mydomain.com"]' | grep "receive-time"

次の出力が得られます。

"receive-time" : "2015-12-05T11:57:13.882Z",
"receive-time" : "2015-12-05T11:46:26.826Z",
"receive-time" : "2015-12-05T11:17:15.702Z",
"receive-time" : "2015-12-05T13:13:56.060Z",

したがって、09:32:15から11:32:13までに4つのレポートがあると結論付けることができます。そしてこれは間違っています(2時間のオフセット)

一方、postgresdbバックエンドを直接クエリする場合

select certname,puppet_version,start_time, status_id from reports where certname = 'Host.mydomain.com' order by start_time desc; i get different times:

 Host.mydomain.com | 3.8.1   | 2015-12-05 13:57:07.079+02 |    2
 Host.mydomain.com | 3.8.1   | 2015-12-05 13:46:19.658+02 |    2
 Host.mydomain.com | 3.8.1   | 2015-12-05 13:17:07.056+02 |    2
 Host.mydomain.dom | 3.8.1   | 2015-12-05 13:13:56.608+02 |    2

そして、これらはレポートの正しい時間です。 puppetdbが実行されるサーバーのタイムゾーンのすべての設定が正しい。 postgresdbのすべての設定は同じタイムゾーンに設定されています。

カールレポートを介して正しい時刻にクエリを実行するにはどうすればよいですか?

1
Dima Zyuryaev

首都 Z2015-12-05T11:32:13.718Zなどのタイムスタンプの後は Zul 時間、UTCを表します。

もう1つのタイムスタンプ2015-12-05 13:57:07.079+02 +2 UTCより2時間進んだ、ローカルタイムゾーンに対して修正された時間です。

したがって、どちらも絶対的な意味で正しいのですが、時計と一致させるには、UTCのタイムスタンプに2時間を追加する必要があります。

1
HBruijn