В современных системах логи ведутся через сервис journald.
Просмотр последних сообщений в логах
journalctl -e
то же, но с подробной информацией о событиях
journalctl -ex
При наличии каталога /var/log/journal - файлы журнала создаются в нем и сохраняются при перезагрузке. В противном случае журнал хранится в каталоге /run/log/journal/, который отображается в ОЗУ и теряется при перезагрузке.
Для совместимости с существующими системами journald пересылает все сообщения в классический syslogd. Этот поведение можно отключить в конфигурации /etc/systemd/journald.conf установив параметр
ForwardToSyslog=no
Полезные опции:
Приоритет: emerg=0, alert=1, crit=2, err=3, warning=4, notice=5, info=6, debug=7
Типы сообщений: kern=0, user=1, mail=2, daemon=3, auth=4, syslog=5, lpr=6, news=7, uucp=8, cron=9, authpriv=10, ftp=11
Набор скриптов Logwatch предназначен для выделения из логов наиболее значимой информации.
Структура пакета практически не зависит от используемой операционной системы и ориентирована на популярные сервисы, такие как веб-сервер apache, почтовый сервер sendmail, антивирус clamav и т.п. Благодаря этому всегда можно обновить версию Logwatch, взяв tar-архив прямо с сайта проекта http://www.logwatch.org. Тонкие отличия для системных модулей, таких как pam_unix, учтены в самих скриптах.
Основные скрипты располагаются в каталоге /usr/share/logwatch При необходимости тонких настроек или внесения изменений в скрипты, необходимо скопировать соответствующие файлы в каталог /etc/logwatch с сохранением вложенной структуры каталогов.
При загрузке logwatch вначале просматривает /etc/logwatch, а затем /usr/share/logwatch. При этом скрипты с совпадающими именами берутся только из /etc/logwatch, а переменные конфигурации, описанные в /etc/logwatch либо перекрывают описанные /usr/share/logwatch, либо, в случаях когда формируется список значений, добавляются к описанным в /usr/share/logwatch.
Если у вас выдаются избыточные безвредные сообщения, нераспознанные модулями Logwatch, то в /etc/logwatch/conf/ignore.conf можно прописать набор регулярных выражений, которые будут отфильтровывать лишние строки. При настройке этого фильтра следует соблюдать осторожность, чтобы не заблокировать оповещение о важных событиях в системе.
Запись логов ведётся специальным приложением syslogd или его современной версией rsyslogd. Для отправки сообщений демону используется сетевой протокол, который может использовать либо TCP/IP, либо Unix сокет /dev/log. Программист на Си может воспользоваться для записи в лог стандартной функцией syslog(3), а разработчик скриптов или обычный пользователь – утилитой logger.
Особенностью протокола syslog является доверие к клиенту, что приводит к возможности генерировать записи любого содержания в любом логе от имени любой службы (в том числе от имени ядра ОС).
Сообщение, передаваемое в syslogd, содержит класс сообщения, состоящий из категории и важности, идентификатор (имя программы) и произвольный текст. syslogd на основе класса сообщения выбирает файл для записи и сохраняет в этот файл время получения сообщения, идентификатор и текст.
По категориям: authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog, user, uucp, local0...local7
authpriv – данные могут содержать приватную информацию, например пароли при логировании процесса аутенификации. Такие данные должны сохраняться в файле, недоступном на чтение для обычных пользователей.
cron, ftp, lpr, mail, news, uucp – различные службы (в том числе устаревшие), которые генерируют большой поток сообщений. В CentOS отдельно настроены mail и cron
daemon – любая служба
user – обычный пользователь
syslog – сообщения самого syslogd
local0...local7 – отданы на усмотрение местного администратора. В CentOS local7 используется для записи сообщений во время загрузки
По важности: emerg, alert, crit, err, warning, notice, info, debug
emerg – критическая ошибка, затрагивающая всю систему (отказ диска, отключение электропитания и т.п.)
alert, crit – проблемы различной степени тяжести. Используются редко
err, warning, notice, info – диапазон, обычно используемый приложениями
debug – отладочные сообщения. Обычно нигде не сохраняются
В зависимости от используемого демона конфигурация может находиться в /etc/syslog.conf или /etc/rsyslog.conf. rsyslog.conf имеет более развитый синтаксис, однако правила, описывающие сортировку сообщений по категориям, имеют одинаковый формат. Эти правила состоят из строк вида:
фильтр действие
фильтр – описывает класс сообщений, для которых будет выполняться действие, и состоит из шаблонов, разделённых точкой с запятой. Каждый шаблон состоит из полей категории и важности, разделённых точкой. Фильтр выбирает те сообщения, категория и важность которых соответствуют всем шаблонам фильтра. Т.е. условия-шаблоны объединяются логическим оператором И.
Примеры фильтров:
mail.info – категория mail, важность info и выше
*.=debug – любая категория, важность – только debug
*.* – все сообщения
*.*;authpriv.none – все, кроме категории authpriv
действие – имя файла, FIFO, программы или IP адрес удаленного компьютера.
Формат записи действий:
/var/log/messages – файл
/dev/console – консоль (root'а?)
/dev/ttyS0 – последовательный порт
|/tmp/debug-log – FIFO. Удобно для отладки
@192.168.1.0 – IP адрес
* – сообщение всем залогированным пользователям
Пример из реального файла syslog.conf
# Всё (кроме mail и cron) важности info и выше
# Прячем сведения об аутенификации пользователей!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# authpriv в отдельный файл с ограниченным доступом
authpriv.* /var/log/secure
# Все сообщения почты в отдельный файл
mail.* /var/log/maillog
# то же с сообщениями от crond
cron.* /var/log/cron
# Сообщения уровня emerg рассылаются всем
*.emerg *
logger -t идентификатор -p категория.важность текст
По умолчанию logger подставляет в качестве идентификатора имя пользователя, а в качестве класса сообщения user.notice, однако любой, даже непривилегированный, пользователь может изменить эти значения с помощью соответствующих опций.