hostprofi.ru
Подобрать хостинг
Термин·буква S

syslog

краткое определение

Стандартный протокол и демон для сбора и маршрутизации системных сообщений в Unix-системах.

Syslog — стандарт и протокол для передачи и хранения системных сообщений в Unix-системах. Определяет формат сообщений, уровни важности (severity) и категории (facility). Большинство Linux-сервисов пишут логи через syslog-интерфейс.

Как работает

Процессы отправляют сообщения демону syslog (rsyslog, syslog-ng) через Unix-сокет /dev/log. Демон принимает, фильтрует по facility.severity и записывает в файлы. Правила маршрутизации задают: куда писать ядерные сообщения (kern.*), куда — сообщения аутентификации (auth.*), куда — всё остальное.

Syslog-сообщение содержит: priority (facility + severity), timestamp, hostname, имя программы, PID, текст. Формат RFC 5424 добавил структурированные данные в квадратных скобках.

Уровни важности (Severity)

КодНазваниеОписание
0emergСистема неработоспособна
1alertТребуется немедленное действие
2critКритическое условие
3errОшибка
4warningПредупреждение
5noticeНормальное, но значимое событие
6infoИнформационное
7debugОтладочные сообщения

История

Syslog разработан Эриком Оллманом в 1980 году для Sendmail, затем распространился на все Unix-компоненты как универсальный механизм логирования. RFC 3164 (2001) документировал де-факто стандарт. RFC 5424 (2009) — современный формат с структурированными данными и Unicode. rsyslog (2004) добавил TCP-транспорт, TLS-шифрование, фильтрацию по регулярным выражениям и вывод в базы данных. syslog-ng (1998) — более гибкая альтернатива с богатым языком конфигурации.

Конфигурация rsyslog

# /etc/rsyslog.conf
# Все kernel-сообщения в kern.log
kern.*    /var/log/kern.log

# Ошибки авторизации
auth,authpriv.*    /var/log/auth.log

# Критические ошибки всех сервисов
*.crit    /var/log/critical.log

# Форвардинг на удалённый log-сервер (TCP)
*.* @@log-server:514

# Форвардинг с TLS
*.* action(type="omfwd"
    target="log-server"
    port="6514"
    protocol="tcp"
    StreamDriver="gtls")

Syslog vs journald

systemd journald заменяет традиционный syslog на современных системах, но rsyslog часто работает параллельно: journald пишет бинарный журнал, rsyslog получает сообщения через journald-сокет и дублирует в текстовые файлы. Это обеспечивает совместимость со скриптами, работающими с /var/log/*. Централизованный log-сервер получает данные через rsyslog-форвардинг или Promtail/Filebeat.

На что обращать внимание

Традиционный syslog (UDP, порт 514) не шифрует трафик — не используйте для передачи логов через интернет. rsyslog поддерживает TLS через gtls-модуль. Ротацию лог-файлов настраивает logrotate: /etc/logrotate.d/rsyslog задаёт частоту, количество хранимых копий и метод сжатия. Без ротации /var/log/ переполнит диск на нагруженном сервере за несколько недель.

Практические сценарии

Форвардинг логов Nginx через rsyslog на централизованный log-сервер:

# /etc/rsyslog.d/nginx.conf
module(load="imfile" PollingInterval="10")
input(type="imfile"
      File="/var/log/nginx/access.log"
      Tag="nginx_access"
      Severity="info")
*.* @@log-server:514

Анализ в реальном времени через journalctl с форвардингом в rsyslog: journalctl -f | logger -t journald — все journald-сообщения попадают в syslog-поток.

Другие термины