Я храню отчеты с узлов в 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, чтобы она соответствовала вашим часам.