Então imagine que existem cerca de 100 servidores com fusos horários diferentes (nem todos diferentes, mas muitos fusos horários). Existem saídas nos logs do servidor como:
server1:BFE4C025 0420201413 P H sysplanar0 UNDETERMINED ERROR
server2:BFE4C025 0421032413 P H sysplanar0 UNDETERMINED ERROR
-> então eles estão no horário do servidor (fusos horários diferentes) ->
0420201413 = 2013.04.20. 20:14
0421032413 = 2013.04.21 03:24
Converter ex.: 0421032413 para 2013.04.21 03:24 é trivial. Mas: novamente, o horário do servidor é diferente, se eu fornecer o comando "data" nesses dois servidores exatamente ao mesmo tempo:
server1:Tue Apr 23 07:23:24 EDT 2013
server2:Tue Apr 23 13:23:24 MESZ 2013
Eu entendi isso. Mas preciso dos logs mencionados (apenas algumas linhas/servidor) em um fuso horário. Por que? Porque é muito útil saber quando exatamente as coisas aconteceram no seu fuso horário, ex.: CET TZ.
P: como posso converter a hora dos logs do servidor para a hora da Europa Central?
Responder1
Se você deseja apenas converter arquivos syslog existentes, você pode, por exemplo, usar um pequeno programa python/perl/ruby para alterar Tue Apr 23 07:23:24 EDT 2013
algo com UTC (ou CET).
Se você quiser ter mais controle sobre o formato de hora escrito no arquivo de log, você pode querer dar uma olhada em syslog-ng
. Sua tsformat()
função permite configurar o formato da hora, por exemplo, para iso8601.
Tendo tido que trabalhar com servidores em 5 fusos horários, recomendo fortemente usar carimbos de data e hora UTC. Como o horário de verão não começa ao mesmo tempo, acompanhar o que é CET (ou CEST) no PST (ou já é PDT) é um pesadelo.
Responder2
Você pode usar date
para imprimir o carimbo de data e hora e armazená-lo com a mensagem de log.
$ 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
Use tzselect
para encontrar fusos horários.