logfiles e horário de verão

2

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

Estou pensando que devo definir a hora do sistema como UTC e processar os arquivos de log no fuso horário local antes de entregá-los a um visualizador de arquivo de log.

    
por dpetican 25.06.2016 / 19:44

4 respostas

6

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 o fuso horário não UTC.

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

Então, sim, usar o UTC em arquivos de log é uma coisa boa, e muitas vezes feitos, mas os arquivos de log não perdem dados se você não fizer isso.

    
por 25.06.2016 / 19:55
2

Os arquivos de log não "manipulam" os 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 do registro "bruto" por registros de data e hora, onde você pode optar por usar o UTC ou a hora local com ou sem deslocamento.

Também há programas de registro disponíveis (por exemplo, registrador), que podem ser usados como um meio-termo para serviços de registro de log e de syslog.

    
por 25.06.2016 / 20:09
0

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

Se as entradas de tempo terminarem com Z ou se terminar em um hífen (8601), menos ou mais seguido por um valor de deslocamento, ele estará 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 ambigüidade.

Entradas subseqüentes ainda podem ter sobreposições no tempo se o relógio for ajustado.

    
por 25.06.2016 / 21:01
0

Como outros explicaram, é da natureza dos arquivos de log que não se obtêm entradas fora de ordem , não importa o que aconteça com os timestamps. O problema que você está visualizando é ambigüidade , onde um mecanismo timestamp mal escolhido não denota exclusivamente um único ponto no tempo.

Isso dificulta que os logs de leitura do administrador do sistema consigam determinar quando as coisas aconteceram. Após o fato, uma entrada de log que (digamos) tenha apenas um timestamp de Apr 3 02:14:57 não indica se é a hora local ou UTC, nem (presumindo por exemplo que é a hora local e, especificamente, a Hora do Leste da Austrália) é 02:14:57 AEST ou 02:14:57 AEDT.

Mas isso é injustamente presumir que existe uma coisa tão simples como "arquivos de log do Linux". Nem todos os arquivos de log funcionam da mesma maneira, e as pessoas estão se afastando desse tipo de registro de data e hora desde os anos 80.

Por exemplo: Aqueles de nós que têm usado daemontools e sua história há muitos anos têm arquivos de log do Linux que usam timestamps TAI64N. Uma entrada de log se parece com isso:

@40000000577d024d2d10bb6d Hello there!

A longa cadeia de dígitos hexadecimais é um timestamp TAI64N. Não é nada mais do que uma contagem de 64 bits de segundos desde um ponto no passado muito remoto (2 62 segundos antes 1970-01-01 00:00:00 Tempo Atômico Internacional) seguido por um 32- contagem de bits de nanossegundos.

O TAI não tem variantes diferentes de fuso horário. Nem sequer repetiu os segundos "saltos". Cada segundo tem um número fixo único.

E, de fato, processar esses timestamps em uma hora local legível para humanos é exatamente o trabalho do programa tai64nlocal :

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

Fusos horários e mudanças de DST têm efeito nulo em meus "arquivos de log do Linux", e eu posso ler os arquivos de log em qualquer fuso horário que eu queira. (Também posso fazer coisas como mesclar classificar vários arquivos de log em um com a opção sort -m .)

    
por 06.07.2016 / 20:21