файлы журналов и летнее время

файлы журналов и летнее время

Как файлы журналов Linux обрабатывают летнее время? При откате вы не только получите неупорядоченные значения, но и, возможно, дублирующие значения.

Я думаю, что мне следует установить системное время на UTC, а затем обработать файлы журналов в местном часовом поясе, прежде чем передавать их программе просмотра файлов журналов.

решение1

Файлы журналов — это простые текстовые файлы, и каждая строка добавляется в конец. Поэтому при использовании часового пояса, отличного от UTC, данные не теряются.

Конечно, вы можете просматривать файлы с помощью инструмента, который может запутаться. Однако обычная причина использования UTC — избежать двусмысленности: вам не обязательно знать местный часовой пояс, чтобы интерпретировать данные.

Так что да, использование UTC в лог-файлах — этохорошая вещь, ичасто делается, но файлы журналов не теряют данные, если этого не сделать.

решение2

Файлы журналов не "обрабатывают" часовые пояса, они просто записывают то, что там написало какое-то приложение или служба. Так что если приложение пишет "только сообщения" и "прямо в файл журнала", вам не повезло.

Некоторые серверы syslog (например, syslog-ng) позволяют «украшать» «сырые» данные журнала временными метками, гдетыможно выбрать использование UTC или местного времени со смещением или без него.

Также доступны программы ведения журналов (например, logger), которые можно использовать в качестве промежуточного звена между службами ведения журналов stdout и syslog.

решение3

Файлы журналов могут использовать такой формат времени, как ISO 8601 или его аналог RFC 3339, который отображает местное время как корректировку UTC.

Если запись времени заканчивается на Z или дефисом (8601), минусом или плюсом, за которыми следует значение смещения, то используется формат, основанный на UTC.

Если журнал основан на UTC, то дневное время отображается как изменение смещения. Смещение позволяет указывать местное время и дневное время без двусмысленности.

Последующие записи могут по-прежнему иметь перекрытия по времени, если часы будут скорректированы.

решение4

Как уже объясняли другие, природа файлов журналов такова, что их невозможно получитьвышел из строязаписи, независимо от того, что происходит с временными метками. Проблема, которую вы предполагаете, заключается в том,двусмысленность, где неудачно выбранный механизм временных меток не позволяет однозначно обозначить отдельную точку во времени.

Это затрудняет для бедного системного администратора, читающего логи, определение того, когда что-то произошло. После факта запись в журнале, которая (скажем) просто имеет временную метку, Apr 3 02:14:57не указывает, местное это время или UTC, и (предположим ради примера, что это местное время, и конкретно австралийское восточное время) 02:14:57 AEST или 02:14:57 AEDT.

Но это несправедливое предположение, что существует такая единая вещь, как "файлы журналов Linux". Не все файлы журналов работают одинаково, и люди отходят от этого типа временных меток с 1980-х годов.

Например: Те из нас, кто уже много лет использует daemontools и подобные программы,Файлы журналов Linuxкоторые используют временные метки TAI64N. Запись в журнале выглядит так:

@40000000577d024d2d10bb6d Привет!

Длинная строка шестнадцатеричных цифр — это временная метка TAI64N. Это не более чем 64-битный отсчет секунд с момента в очень далеком прошлом (2,62 секунды до 1970-01-01 00:00:00 по международному атомному времени), за которым следует 32-битный отсчет наносекунд.

TAI не имеет различных вариантов часовых поясов. У него даже нет повторяющихся «високосных» секунд. Каждая секунда имеет уникальный фиксированный номер.

И действительно, преобразование этих временных меток в понятное человеку местное время — это как раз и есть задача программы tai64nlocal:

jdebp % echo @40000000577d024d2d10bb6d Приветствую вас\! | TZ=UTC0 tai64nlocal
2016-07-06 13:05:45.756071277 Привет!
jdebp % echo @40000000577d024d2d10bb6d Приветствую вас\! | TZ=PST8PDT tai64nlocal
2016-07-06 06:05:45.756071277 Привет!
% дждебп

Изменения часовых поясов и летнего времени не оказывают никакого влияния намой«Файлы журналов Linux», и я могу читать файлы журналов в любом часовом поясе, в котором захочу. (Я также могу выполнять такие действия, как объединение или сортировка нескольких файлов журналов в один с помощью sortопции -m.)

Связанный контент