Где пакет / opt должен записывать логи?


13

Я устанавливаю пользовательский пакет /opt/package_name, сохраняю файлы конфигурации /etc/opt/package_nameи статические файлы /var/opt/package_name/static/- все в соответствии с соглашениями, предложенными FHS. [ 1 ] [ 2 ] [ 3 ]

Мне также нужно хранить несколько лог-файлов. Я хочу, чтобы их можно было обнаружить с помощью инструментов анализа, поэтому они также должны находиться в обычном месте. Должны ли они войти в:

  • /var/log/package_name (как системный пакет, даже если это пользовательский пакет)
  • /var/opt/package_name/log(следуя /var/optсоглашению - но это обнаруживаемый?)
  • что-то другое?

У вас есть пример инструмента анализа, который сканирует / var / log?
sourcejedi

5
Почему ответ не системный журнал?
Джошуа

Ответы:


19

Я бы поместил их в /var/log/package_name; это удовлетворяет принципу наименьшего удивления лучше, чем /var/opt/package_name/log. У меня нет на это цитаты; это просто соответствует тому, где я буду искать журналы.

Я мог бы также отказаться от написания своих собственных файлов журнала и вместо этого входить в систему syslogс помощью соответствующего тега и средства; если я ищу чистую интеграцию с устоявшимися инструментами анализа, я не верю, что смогу добиться большего успеха для канала связи:

  • Каждый общий инструмент с «анализом журнала» в качестве перечисленной функции уже отслеживает syslog .
  • Семантика выпуска и ротации файла журнала обрабатывается для меня; Мне не нужно настраивать механизм, logrotateчтобы сказать мне отпустить файл и открыть новый. Мне даже не нужно рассказыватьlogrotate о новых файлах для поворота!
  • Разгрузка журналов на центральные серверы журналов обрабатывается для меня, если этого требует сайт; Существующие установленные инструменты, такие какrsyslog будут использоваться в случае необходимости, поэтому мне не нужно задумываться о реализации этой функции самостоятельно.
  • Контроль доступа (POSIX и, например, SELinux) к файлам журналов уже обработан, поэтому мне не нужно обращать так много внимания на семантику безопасности для конкретного распределения.

Если я не использую какой-либо специальный двоичный формат для своего журнала, и даже тогда я предпочитаю удобные для syslog текстовые форматы, разбираемые машиной, такие как JSON. Мне трудно оправдать свои собственные отдельные файлы журнала; инструменты анализа уже смотрят syslogкак ястреб.


8

Следуя правилам FHS для файлов конфигурации вашего пакета, вы должны соблюдать согласованность и хранить файлы журналов в /var/opt/package_name/log .

FHS заявляет:

Переменные данные пакетов в / opt должны быть установлены в / var / opt /

а также заявляет

Никакие другие файлы пакетов не могут существовать вне иерархий / opt, / var / opt и / etc / opt, за исключением тех файлов пакетов, которые должны находиться в определенных местах в дереве файловой системы, чтобы функционировать должным образом. Например, файлы блокировки устройства должны быть помещены в / var / lock, а устройства должны быть расположены в / dev.

Наличие файлов журналов /var/optне мешает правильной работе пакета, поэтому использование/var/log вместо этого явно нарушает стандарт.

Неясно, что вы подразумеваете под "это обнаруживается?" поскольку ваши пользовательские журналы, скорее всего, будут обрабатываться пользовательскими инструментами в любом случае, но при условии, что для их обработки предназначен универсальный инструмент, он должен изучить стандартное расположение таких пакетов, как ваш.

Обратите внимание, что syslogэто полезное средство для централизации и настройки конфигурации журналирования, но не полностью решает вопрос о том, где хранить журналы, когда вы должны делать это в простых файлах с хорошо известным путем. Некоторые файлы, которые иногда хранятся в каталоге журналов приложений, предназначены для обеспечения доступности по ожидаемому пути самим приложением или связанными программами, например файлом, хранящим идентификатор процесса, поэтому syslogони не будут работать для них.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.