Вики / Логи и аудит
rsyslog (системные логи)
Текстовые логи в /var/log, правила маршрутизации и пересылка на удалённый сервер.
rsyslog пишет классические текстовые логи в /var/log (syslog, auth.log,
mail.log). Работает рядом с journald: journald — структурированный
журнал, rsyslog — текстовые файлы и пересылка логов по сети на центральный сервер.
ls /var/log/ # syslog, auth.log, kern.log, ...
tail -f /var/log/syslog # общий системный лог
tail -f /var/log/auth.log # вход/sudo/ssh (см. fail2ban)
Правила — /etc/rsyslog.conf и /etc/rsyslog.d/*.conf. Формат
facility.severity назначение:
auth,authpriv.* /var/log/auth.log
mail.* -/var/log/mail.log # «-» = не делать fsync на каждую строку
*.emerg :omusrmsg:* # всем терминалам
:programname, isequal, "myapp" /var/log/myapp.log # property-фильтр по имени программы
# пересылка на удалённый сервер:
*.* @@logserver.example.com:514 # @@ = TCP, @ = UDP
facility: auth, cron, daemon, kern, mail, local0..7; severity:
debug<info<notice<warning<err<crit<alert<emerg.
sudo rsyslogd -N1 # проверить синтаксис конфигурации
sudo systemctl restart rsyslog
logger -p auth.info "тест" # отправить запись в syslog (проверка)
Приёмник (central log server) — включить модуль приёма:
# /etc/rsyslog.d/10-server.conf
module(load="imtcp")
input(type="imtcp" port="514")
# раскладывать по хостам:
template(name="perhost" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* ?perhost
Открой порт 514 в firewall. На отправителе — *.* @@logserver:514. Защита от
флуда — $imjournalRatelimitInterval/RatelimitBurst (иначе шумный сервис забьёт лог).
Лог не пишется
Служба активна (systemctl status rsyslog)? Правило без опечатки? Проверь:
rsyslogd -N1 (синтаксис) и logger -p auth.info "test" (доходит ли).
Логи растут, забивают диск
Ротация — это logrotate (rsyslog сам не чистит). Проверь /etc/logrotate.d/rsyslog
и см. disk-usage.
Не приходят логи на центральный сервер
На приёмнике включён модуль приёма (imtcp/imudp, порт 514) и открыт порт
(firewall, nc -zv host 514). На отправителе — правило @@host:514.
Дубли строк / «logged twice»
journald пересылает в rsyslog (imjournal) и тот же facility пишется в несколько
файлов. Уточни правила; решай, что где (journalctl -u vs текстовые файлы).
journald vs rsyslog — где смотреть
Структурный поиск по службам — journalctl (-u, _COMM=); привычные текстовые
файлы и пересылка — /var/log/* (rsyslog).
tail -f /var/log/syslog ; tail -f /var/log/auth.log
sudo rsyslogd -N1 # проверить конфиг
logger -p auth.info "msg" # записать в syslog (тест)
# /etc/rsyslog.d/*.conf: facility.severity путь | @@host:514 (TCP) | @host (UDP)
sudo systemctl restart rsyslog
См. также
- journalctl — Логи и аудит
- logrotate (ротация логов) — Логи и аудит