通过 puppetdb 查询和 mysql 查询得到的时间戳差异

通过 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 的所有设置都设置为相同的时区。

请问我怎样才能通过 curl 查询报告正确的时间?

答案1

时间戳Z后面的大写字母2015-12-05T11:32:13.718Z代表祖鲁语时间,UTC。

另一个时间戳2015-12-05 13:57:07.079+02是根据+2您当地时区校正的时间,比 UTC 早两个小时。

因此,从绝对意义上讲,它们都是正确的,但您需要在 UTC 时间戳上添加两个小时才能与您的手表匹配。

相关内容