Entonces imagine que hay ~100 servidores con diferentes zonas horarias (no todas diferentes, pero sí muchas, muchas zonas horarias). Hay resultados en los registros del servidor como:
server1:BFE4C025 0420201413 P H sysplanar0 UNDETERMINED ERROR
server2:BFE4C025 0421032413 P H sysplanar0 UNDETERMINED ERROR
-> para que estén en la hora del servidor (diferentes zonas horarias) ->
0420201413 = 2013.04.20. 20:14
0421032413 = 2013.04.21 03:24
Convertir por ejemplo: 0421032413 a 2013.04.21 03:24 es trivial. Pero: nuevamente, la hora del servidor difiere, si doy el comando "fecha" en estos dos servidores exactamente al mismo tiempo:
server1:Tue Apr 23 07:23:24 EDT 2013
server2:Tue Apr 23 13:23:24 MESZ 2013
Entiendo esto. Pero necesito los registros mencionados (solo esas pocas líneas/servidor) en una zona horaria. ¿Por qué? Porque es muy, muy útil saber cuándo sucedieron exactamente las cosas en tu zona horaria, por ejemplo: CET TZ.
q: ¿Cómo puedo convertir la hora de los registros del servidor a la hora de Europa Central?
Respuesta1
Si solo desea convertir archivos syslog existentes, puede, por ejemplo, utilizar un pequeño programa python/perl/ruby para cambiar Tue Apr 23 07:23:24 EDT 2013
algo con UTC (o CET).
Si desea tener más control sobre el formato de hora escrito en el archivo de registro, es posible que desee consultar syslog-ng
. Su tsformat()
función le permite configurar el formato de hora, por ejemplo, en iso8601.
Habiendo tenido que trabajar con servidores en 5 zonas horarias, recomiendo encarecidamente utilizar marcas de tiempo UTC. Dado que el horario de verano no comienza al mismo tiempo, hacer un seguimiento de lo que CET (o CEST) está en PST (o ya es PDT) es una pesadilla.
Respuesta2
Puede utilizarlo date
para imprimir la fecha y la hora y almacenarla con el mensaje de registro.
$ 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
Úselo tzselect
para buscar zonas horarias.