ノードからのレポートを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のすべての設定は同じタイムゾーンに設定されています。
カールレポートを介して正しい時刻にクエリを実行するにはどうすればよいですか?
首都 Z2015-12-05T11:32:13.718Z
などのタイムスタンプの後は Zul 時間、UTCを表します。
もう1つのタイムスタンプ2015-12-05 13:57:07.079+02
+2 UTCより2時間進んだ、ローカルタイムゾーンに対して修正された時間です。
したがって、どちらも絶対的な意味で正しいのですが、時計と一致させるには、UTCのタイムスタンプに2時間を追加する必要があります。