Я храню отчеты с узлов в 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",
Итак, я могу сделать вывод, что у меня есть 4 отчета с 09:32: 15 до 11:32:13. И это неправильно (смещение 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, пожалуйста, верное время?
Заглавная Z после отметки времени, например 2015-12-05T11: 32: 13.718Z
означает зулусское время, UTC.
Другая отметка времени 2015-12-05 13: 57: 07.079 + 02
с + 2 - это время, скорректированное для вашего местного часового пояса, два часа впереди UTC.
Итак, они оба верны в абсолютном смысле, но вам нужно добавить два часа к отметке времени в UTC, чтобы она соответствовала вашим часам.