С чего начать Первые шаги трек · 15 ступеней
Linux Labs

rsyslog — системные логи

3 мин Ubuntu 24.04 · rsyslog

Пишет текстовые логи в /var/log и пересылает их по сети; ротацией сам не занимается, за неё отвечает logrotate.

Шпаргалка

5 команд Версия для печати
  • tail -f /var/log/syslog общий системный лог в реальном времени
  • tail -f /var/log/auth.log вход, sudo, ssh в реальном времени
  • sudo rsyslogd -N1 проверить синтаксис конфига
  • logger -p auth.info "msg" записать тестовую запись в syslog
  • sudo systemctl restart rsyslog применить изменения конфига

Обзор

rsyslog пишет классические текстовые логи в /var/log (syslog, auth.log, mail.log). Работает рядом с journald: journald — структурированный журнал, rsyslog — текстовые файлы и пересылка логов по сети на центральный сервер.

bash
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.

bash
sudo rsyslogd -N1                 # проверить синтаксис конфигурации
sudo systemctl restart rsyslog
logger -p auth.info "тест"        # отправить запись в syslog (проверка)

Рецепты

1

Централизация и rate-limit

Приёмник (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 (иначе шумный сервис забьёт лог).

Неполадки

5

Лог не пишется

Служба активна (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).

См. также

  • journalctl — Чтение журнала systemd (journald) — фильтры по службе, времени, приоритету.
  • logrotate — Чтобы логи не съели диск — ротация, сжатие, хранение; проверка конфигов.
Загрузка…