arquivos de log e horário de verão

arquivos de log e horário de verão

Como os arquivos de log do Linux lidam com o horário de verão? Ao recuar, você não apenas obterá valores fora de ordem, mas também poderá duplicar valores.

Estou pensando que devo definir a hora do sistema para UTC e, em seguida, processar os arquivos de log no fuso horário local antes de passar para um visualizador de arquivos de log.

Responder1

Os arquivos de log são arquivos de texto simples e cada linha é anexada no final. Portanto, não há perda de dados ao usar fuso horário diferente do UTC.

Claro, você pode visualizar os arquivos usando uma ferramenta que pode ficar confusa. No entanto, o motivo usual para usar o UTC é evitar ambiguidade: você não precisa saber qual é o fuso horário local para interpretar os dados.

Então sim, usar UTC em arquivos de log é umacoisa boa, emuitas vezes feito, mas os arquivos de log não perderão dados se você não fizer isso.

Responder2

Os arquivos de log não “tratam” de fusos horários, eles apenas registram o que algum aplicativo ou serviço escreveu lá. Portanto, se um aplicativo gravar "apenas as mensagens" e "diretamente no arquivo de log", você estará sem sorte.

Alguns servidores syslog (como o syslog-ng) permitem "decorar" os dados de log "brutos" por carimbos de data e hora, ondevocêpode optar por usar UTC ou hora local com ou sem deslocamento.

Existem também programas de registro disponíveis (por exemplo, logger), que podem ser usados ​​como intermediários para serviços de registro stdout e syslog.

Responder3

Os arquivos de log podem usar um formato de hora como ISO 8601 ou seu primo RFC 3339, que mostra a hora local como um ajuste do UTC.

Se as entradas de hora terminarem com Z ou terminarem com um hífen (8601), menos ou mais seguido por um valor de deslocamento, então está usando um formato baseado em UTC.

Quando o log é baseado em UTC, a luz do dia aparece como uma alteração no deslocamento. O deslocamento permite que a hora local e a luz do dia sejam indicadas sem ambiguidade.

As entradas subsequentes ainda poderão ter sobreposições de tempo se o relógio for ajustado.

Responder4

Como outros explicaram, é da natureza dos arquivos de log que não se obtenhafora de serviçoentradas, não importa o que aconteça com os carimbos de data/hora. O problema que você está imaginando éambiguidade, onde um mecanismo de carimbo de data/hora mal escolhido não denota exclusivamente um único ponto no tempo.

Isso torna difícil para o pobre administrador do sistema ler os logs para determinar quando as coisas aconteceram. Após o fato, uma entrada de log que (digamos) tenha apenas um carimbo de data/hora Apr 3 02:14:57não indica se é a hora local ou UTC, nem (presumindo, por exemplo, que seja a hora local e, especificamente, o horário do leste da Austrália) se é 02 :14:57 AEST ou 02:14:57 AEDT.

Mas isso é presumir injustamente que existe algo como "arquivos de log do Linux". Nem todos os arquivos de log funcionam da mesma maneira, e as pessoas têm se afastado desse tipo de carimbo de data/hora desde a década de 1980.

Por exemplo: Aqueles de nós que usam daemontools e similares há muitos anos têmArquivos de log do Linuxque usam carimbos de data/hora TAI64N. Uma entrada de log é semelhante a esta:

@40000000577d024d2d10bb6d Olá!

A longa sequência de dígitos hexadecimais é um carimbo de data/hora TAI64N. Nada mais é do que uma contagem de segundos de 64 bits desde um ponto no passado muito remoto (2 62 segundos antes de 01-01-1970 00:00:00 Hora Atômica Internacional) seguida por uma contagem de nanossegundos de 32 bits.

TAI não possui variantes de fuso horário diferentes. Ele nem sequer tem segundos "saltos" repetidos. Cada segundo tem um número fixo único.

E, de fato, processar esses carimbos de data e hora em uma hora local legível é exatamente a tarefa do tai64nlocalprograma:

jdebp % echo @40000000577d024d2d10bb6d Olá\! | TZ=UTC0 tai64nlocal
06-07-2016 13:05:45.756071277 Olá!
jdebp % echo @40000000577d024d2d10bb6d Olá\! | TZ=PST8PDT tai64nlocal
06-07-2016 06:05:45.756071277 Olá!
% jdebp

As alterações de fuso horário e horário de verão não têm efeito sobremeu"Arquivos de log do Linux", e posso ler os arquivos de log em qualquer fuso horário que desejar. (Também posso fazer coisas como mesclar vários arquivos de log em um com a opção sortde -m.)

informação relacionada