¿Cómo manejan los archivos de registro de Linux el horario de verano? Cuando retroceda, no solo obtendrá valores fuera de orden, sino que también posiblemente duplicará valores.
Estoy pensando que debería configurar la hora del sistema en UTC y luego procesar los archivos de registro en la zona horaria local antes de pasarlos a un visor de archivos de registro.
Respuesta1
Los archivos de registro son archivos de texto sin formato y cada línea se agrega al final. Por lo tanto, no hay pérdida de datos cuando se utiliza una zona horaria que no es UTC.
Por supuesto, puede ver los archivos utilizando una herramienta que puede resultar confusa. Sin embargo, la razón habitual para utilizar UTC es evitar la ambigüedad: no es necesario saber cuál es la zona horaria local para interpretar los datos.
Entonces sí, usar UTC en archivos de registro es unaBuena cosa, yhecho a menudo, pero los archivos de registro no pierden datos si no lo hace.
Respuesta2
Los archivos de registro no "manejan" zonas horarias, simplemente registran lo que alguna aplicación o servicio escribió allí. Entonces, si una aplicación escribe "sólo los mensajes" y "directamente en el archivo de registro", no tendrá suerte.
Algunos servidores syslog (como syslog-ng) le permiten "decorar" los datos de registro "sin procesar" mediante marcas de tiempo, dondetúPuede optar por utilizar UTC o la hora local con o sin compensación.
También hay programas de registro disponibles (p. ej., logger), que se pueden utilizar como intermediario para los servicios de registro estándar y syslog.
Respuesta3
Los archivos de registro pueden utilizar un formato de hora como ISO 8601 o su primo RFC 3339 que muestra la hora local como un ajuste de UTC.
Si las entradas de hora terminan en Z o si terminan en un guión (8601), menos o más seguido de un valor de compensación, entonces está usando un formato basado en UTC.
Cuando el registro se basa en UTC, la luz del día se muestra como un cambio en el desplazamiento. El desplazamiento permite indicar la hora local y la luz del día sin ambigüedad.
Las entradas posteriores aún pueden tener superposiciones en el tiempo si se ajusta el reloj.
Respuesta4
Como otros han explicado, está en la naturaleza de los archivos de registro que uno no obtengafuera de servicioentradas, sin importar lo que suceda con las marcas de tiempo. El problema que estás planteando esambigüedad, donde un mecanismo de marca de tiempo mal elegido no denota de forma única un único punto en el tiempo.
Esto dificulta que el administrador del sistema deficiente que lee los registros determine cuándo sucedieron las cosas. Después del hecho, una entrada de registro que (digamos) solo tiene una marca de tiempo de Apr 3 02:14:57
no indica si es hora local o UTC, ni (suponiendo, por ejemplo, que es hora local, y específicamente hora del este de Australia) si son 02 :14:57 AEST o 02:14:57 AEDT.
Pero esto es suponer injustamente que existe una cosa única llamada "archivos de registro de Linux". No todos los archivos de registro funcionan de la misma manera y la gente se ha ido alejando de este tipo de marca de tiempo desde la década de 1980.
Por ejemplo: aquellos de nosotros que hemos estado usando daemontools y similares durante muchos años hemosArchivos de registro de Linuxque utilizan marcas de tiempo TAI64N. Una entrada de registro se ve así:
@40000000577d024d2d10bb6d ¡Hola!
La larga cadena de dígitos hexadecimales es una marca de tiempo TAI64N. No es más que un conteo de segundos de 64 bits desde un punto en el pasado muy remoto (2 62 segundos antes de 1970-01-01 00:00:00 Hora Atómica Internacional) seguido de un conteo de nanosegundos de 32 bits.
TAI no tiene variantes de zona horaria diferentes. Ni siquiera tiene segundos "saltos" repetidos. Cada segundo tiene un número fijo único.
Y, de hecho, procesar esas marcas de tiempo en una hora local legible por humanos es exactamente el trabajo del tai64nlocal
programa:
jdebp % echo @40000000577d024d2d10bb6d ¡Hola! | TZ=UTC0 tai64nlocal 2016-07-06 13:05:45.756071277 ¡Hola! jdebp % echo @40000000577d024d2d10bb6d ¡Hola! | TZ=PST8PDT tai64nlocal 2016-07-06 06:05:45.756071277 ¡Hola! jdebp%
Las zonas horarias y los cambios de horario de verano no tienen ningún efecto enmi"Archivos de registro de Linux", y puedo leer los archivos de registro en cualquier zona horaria que desee. (También puedo hacer cosas como fusionar y ordenar varios archivos de registro en uno con sort
la -m
opción).