Skip to main content

Логгирование

Journalctl

sudo journalctl Просмотреть системный журнал
sudo journalctl -u ssh Логи конкретной службы
sudo journalctl -f Последние логи (как tail -f) 
sudo journalctl -p err Только ошибки

Journalctl по умолчанию сохраняет логи в ОП

Rsyslog

Rsyslog нужен:

  • нужны обычные текстовые файлы /var/log/auth.log, /var/log/syslog;
  • необходима ротацию логов через logrotate;
  • нужно отправлять логи на внешний syslog-сервер (например, в SIEM).

Установка: 

sudo apt install rsyslog
sudo systemctl enable --now rsyslog

Настройка

/etc/rsyslog.conf Основной файл настроек. Дополнительные файлы настроек подключаются в алфавитном порядке из /etc/rsyslog.d/*.conf
/etc/rsyslog.d/50-default.conf Создается при установке. Базовые правила. Можно комментировать. Например 
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none  -/var/log/syslog
mail.*                  -/var/log/mail.log
cron.*                  -/var/log/cron.log
Рекомендованные файлы
10-base.conf Базовые глобальные настройки 
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
20-remote.conf Отправка логов на удалённый сервер 
*.* @@syslog.example.com:514
30-ssh.conf Логи от sshd 
if ($programname == 'sshd' or $programname == 'sudo') then /var/log/security.log
& stop
40-sudo.conf Логи sudo 
if ($programname == 'sudo') then /var/log/sudo.log
99-local.conf Локальные мелкие правки, фильтры, формат вывода

Для изменения формата сообщений изменяем файл sudo nano /etc/rsyslog.conf 

$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%\n" #добавляем шаблон
auth,authpriv.*                 /var/log/auth.log;RFC3164fmt #привязываем шаблон к лог файлу

Приоритет syslog считается по формуле facility * 8 + severity. Facility имеет заданные значения, и определяет к какому типу относится событие. Например, facility #0 относится к событиям ядра, а #4 - к событиям систем безопасности.

Severity отвечает за уровень критичности событий, где 0 это максимум(emergency), а уровень 7 - малоинформативные данные, используемые для отладки(debug).

В нашем примере число 38 получается за счет facility 4 и severity 6 (info).