我将来自节点的报告存储在 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 的所有设置都设置为相同的时区。
请问我怎样才能通过 curl 查询报告正确的时间?
答案1
时间戳Z后面的大写字母2015-12-05T11:32:13.718Z
代表祖鲁语时间,UTC。
另一个时间戳2015-12-05 13:57:07.079+02
是根据+2您当地时区校正的时间,比 UTC 早两个小时。
因此,从绝对意义上讲,它们都是正确的,但您需要在 UTC 时间戳上添加两个小时才能与您的手表匹配。