따라서 서로 다른 시간대(모두 다르지는 않지만 매우 많은 시간대)를 가진 ~100개의 서버가 있다고 상상해 보십시오. 서버 로그에는 다음과 같은 출력이 있습니다.
server1:BFE4C025 0420201413 P H sysplanar0 UNDETERMINED ERROR
server2:BFE4C025 0421032413 P H sysplanar0 UNDETERMINED ERROR
-> 서버 시간(다른 시간대)에 있습니다. ->
0420201413 = 2013.04.20. 20:14
0421032413 = 2013.04.21 03:24
예: 0421032413을 2013.04.21 03:24로 변환하는 것은 간단합니다. 그러나 이 두 서버에서 정확히 동일한 시간에 "date" 명령을 실행하면 서버 시간이 다릅니다.
server1:Tue Apr 23 07:23:24 EDT 2013
server2:Tue Apr 23 13:23:24 MESZ 2013
나는 이것을 이해한다. 하지만 한 시간대에는 언급된 로그(그 몇 줄/서버만)가 필요합니다. 왜? 귀하의 시간대(예: CET TZ)에서 정확히 언제 일이 발생했는지 아는 것은 매우 유용하기 때문입니다.
큐: 서버 로그 시간을 중앙 유럽 시간으로 어떻게 변환할 수 있나요?
답변1
기존 syslog 파일을 변환하려는 경우 예를 들어 작은 python/perl/ruby 프로그램을 사용하여 Tue Apr 23 07:23:24 EDT 2013
UTC(또는 CET)로 무언가를 변경할 수 있습니다.
로그 파일에 기록되는 시간 형식을 더 효과적으로 제어하려면 를 살펴보세요 syslog-ng
. 이 tsformat()
기능을 사용하면 iso8601과 같은 시간 형식을 구성할 수 있습니다.
5개 시간대의 서버를 직접 작업해야 했기 때문에 UTC 타임스탬프를 사용하는 것이 좋습니다. 일광 절약 시간제가 동시에 시작되지 않으면 CET(또는 CEST)가 PST에 있는지(또는 이미 PDT인지) 추적하는 것은 악몽입니다.
답변2
date
날짜 타임스탬프를 인쇄하고 로그 메시지와 함께 저장할 수 있습니다 .
$ TZ='Europe/Warsaw' date
wto, 23 kwi 2013, 17:11:48 CEST
$ TZ='America/Los_Angeles' date
wto, 23 kwi 2013, 08:11:56 PDT
$ date --universal
wto, 23 kwi 2013, 15:13:14 UTC
tzselect
시간대를 찾는 데 사용합니다 .