узнать об общей регистрации / logrotation на Linux?

13

Предположим, что кроме журналов веб-сервера Apache у меня никогда не было контактов с какими-либо (профессиональными) журналами в любой операционной системе. Таким образом, ведение журнала, хотя я понимаю некоторые основы, все вместе - довольно новая тема. В настоящее время инвестиции, чтобы полностью изучить эту тему, кажутся достаточно большими, но я даже пока не знаю, стоит ли даже знать больше, чем самые абстрактные понятия.

Какие ресурсы вы могли бы предложить, если кто-то в этой ситуации потребляет (учебные руководства, справочные страницы, книги), чтобы узнать о ведении журнала?

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

Что должен знать обычный пользователь * nix и разработчик программного обеспечения об этих журналах?

Что нужно знать о ротации журналов, если вы не собираетесь управлять профессиональными веб-серверами с огромным количеством событий?

erikbwork
источник
Вы не возражаете, если я (или вы) отредактируете заголовок так, чтобы он читался в «Linux» вместо «в Ubuntu», поскольку это по сути один и тот же вопрос (см. Мой ответ)? Таким образом, у нас будет меньше шансов получить закрытые повторяющиеся вопросы об «обучении ведению журнала на Arch», «обучении ведении журнала на CentOS» и т. Д.
goldilocks
Я не против таких изменений, если ответы хорошие :)
erikbwork

Ответы:

18

[Это было написано за несколько лет до широкого внедрения journald в системных системах и не затрагивает его. В настоящее время (в конце 2018 года) как journald, так и (r) syslog, описанные ниже, используются в таких дистрибутивах, как Debian. В других случаях вам может понадобиться установить rsyslog, если вы хотите использовать его вместе, но интеграция с journald проста.]

Я не буду особо обсуждать ведение журналов в отношении ubuntu, так как эта тема стандартизирована для linux в целом (и я полагаю, что большинство или все то, что я хочу сказать, также верно в целом для любого варианта * nix, но не поверь мне на слово). Я также не буду много говорить о том, «как читать логи», кроме ответа на этот вопрос:

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

Я предполагаю, что это зависит от приложения, но в целом, по крайней мере, в отношении того, что входит в системный журнал (см. Ниже), они должны быть удобочитаемыми для человека. «Значимым для меня» является еще одна проблема, лол. Однако они также могут быть структурированы таким образом, чтобы упростить их синтаксический анализ стандартными инструментами (grep, awk и т. Д.) Для конкретных целей.

В любом случае, во-первых, существует различие между приложениями, которые ведут свою собственную регистрацию, и приложениями, которые используют системный регистратор. Apache по умолчанию является первым, хотя он может быть настроен для более позднего (что, я думаю, большинство людей сочло бы нежелательным). Приложения, которые ведут свою собственную регистрацию, могут делать это любым способом, используя любое место для файла (файлов), поэтому об этом особо нечего сказать. Системный регистратор обычно упоминается как syslog.

системный журнал

«Syslog» - это действительно стандарт , реализованный с помощью процесса-демона, обычно называемого syslogd (d - для демона!). Преобладающим демоном syslog, который в настоящее время используется в Linux, включая Ubuntu, является rsyslogd. Rsyslogd может многое, но в большинстве дистрибутивов он настроен «из коробки», эмулируя традиционный системный журнал, который сортирует вещи в простые текстовые файлы /var/log. Вы можете найти документацию для этого в /usr/share/doc/rsyslog-doc-[version](будьте осторожны, также есть /usr/share/doc/rsyslog-[version], но это только уведомления из пакета с исходным кодом, такие как NEWSи ChangeLog). Если он есть, это html, но Stack Exchange не позволяет встраивать ссылки на локальные файлы:

file://usr/share/doc/rsyslog-doc/index.html

Таким образом, вы можете попробовать скопировать это. Если его там нет, он может быть частью отдельного пакета, который не установлен. Запросите вашу упаковочную систему (например, apt-cache search rsyslog | grep doc).

В конфигурации есть /etc/rsyslog.confстраница справочника man rsyslog.conf, хотя хотя на странице справочника есть хорошая ссылка, она может быть менее понятной в качестве введения. К счастью, основа stock rsyslog.conf соответствует основам традиционного syslog.conf, для которого существует множество введений и учебных пособий. Этот , например; что вы хотите , чтобы забрать из этого, в то время как вглядываясь в местном rsyslog.conf, является понимание объектов и приоритетов ( «приоритет» иногда называют LogLevel), так как они являются частью вышеупомянутого стандарта системного журнала. Причина, по которой этот стандарт важен, заключается в том, что rsyslog на самом деле получает свои данные через ядро, а то, что ядро ​​реализует, является стандартом.

Что касается $директив в rsyslog.conf, то они специфичны для rsyslog, и если вы установите этот дополнительный пакет doc, вы найдете руководство по ним rsyslog_conf_global.html.

Веселитесь ... если вам интересно, как приложения используют системный регистратор, посмотрите на man loggerи man 3 syslog.

Вращение журнала

Нормативные средства ротации бревен через инструмент, который называется logrotate(и есть man logrotate). Нормативный метод использования logrotate - с помощью демона cron , хотя это не обязательно делать таким образом (например, если вы склонны выключать свой рабочий стол каждый день, вы можете просто сделать это один раз при загрузке, прежде чем запускать syslog, но, очевидно, после того, как файловая система смонтирована rw).

Там это введение хорошо LogRotate здесь . Обратите внимание, что logrotate не только для системного журнала , он может использоваться с любым файлом вообще. Базовый файл конфигурации есть /etc/logrotate.conf, но, поскольку конфигурация имеет директиву «include», обычно большинство вещей идет в отдельные файлы в /etc/logrotate.dкаталоге (здесь d для каталога, а не для демона; logrotate не является демоном).

При использовании logrotate важно учитывать, как приложение будет реагировать, когда его файл журнала будет «повернут» - другими словами, перемещен - во время работы приложения. WRT (r) syslogd, он просто прекратит запись в этот журнал (я думаю, для этого есть оправдание безопасности). Обычный способ справиться с этим - попросить syslog перезапустить (и заново открыть все его файлы), поэтому вы увидите postrotateдирективу в файлах logrotate conf, отправляющую SIGHUP демону syslog.

лютик золотистый
источник
2
Если вы syslog-ngтоже упомянули , вы написали все, что можно сказать о linux-logging. Отличный ответ.
Нильс
Я многому научился и имею больше источников для чтения. Благодарность! Btw. Почему было бы плохо использовать системное журналирование для apache? И какие журналы я хочу читать?
erikbwork
@ erikb85 1) В основном потому, что apache генерирует много выходных данных. Мне не приходилось настраивать apache в течение длительного времени, поэтому я не могу вспомнить, насколько гибкий WRT для отправки определенных вещей в системный журнал (но я бы сказал, очень гибкий) 2) Журналы WRT, которые вы хотите прочитать, посмотрите на логику в вашем /etc/rsyslog.conf. Например: часто вещи выше определенного приоритета войдут в /var/log/messages, и вещи ниже, в которые войдут /var/log/notice. Мне также нравится иметь журнал, который содержит все, что делает для двойного и тройного перекрытия, но если вы держите их повернутыми, это не имеет большого значения.
Златовласка
Просто чтобы подтвердить, rsyslogразве не демон-обертка вокруг logrotate, верно? Почему так ?
Томас
@Thomas Они выполняют разные цели, хотя (r) syslog может реализовать ротацию, чтобы избавить от необходимости logrotate. Однако, имея их отдельно, вы можете использовать logrotate для других вещей, кроме файлов системного журнала.
Златовласка