Сбор логов по сети: знакомство с протоколом Syslog

Когда у вас работает десятки или сотни серверов, мониторинг каждого из них по отдельности становится невозможным. Решение — централизованный сбор логов с помощью протокола Syslog. В этой статье мы подробно разберем, как он работает и как его настроить.

Что такое Syslog?

Syslog — это стандартный протокол для передачи сообщений журнала системного уровня по сети. Он позволяет собирать логи с различных устройств и систем на одном центральном сервере. Это особенно важно для:

  • Корпоративных сетей
  • Распределенных систем
  • Облачных инфраструктур
  • Мониторинга безопасности

История Syslog

Протокол Syslog был разработан в 1980-х годах Эриком Алмквистом для BSD Unix. С тех пор он стал де-факто стандартом для передачи сообщений журнала в IP-сетях. В 2009 году был принят RFC 5424, который определяет современную версию протокола.

Архитектура Syslog

Система Syslog состоит из трех основных компонентов:

  1. Syslog-клиент (originator) — устройство или приложение, которое генерирует сообщения
  2. Syslog-сервер (collector) — получатель сообщений
  3. Сеть — канал передачи (обычно UDP или TCP)

Формат сообщения Syslog

Каждое сообщение Syslog состоит из трех частей:

PRI (Priority)

Содержит информацию о приоритете сообщения: <PRI> PRI вычисляется по формуле: facility * 8 + severity, где: - facility — источник сообщения (0-23) - severity — важность сообщения (0-7)

HEADER

Содержит: - TIMESTAMP — время события - HOSTNAME — имя хоста отправителя - APP-NAME — имя приложения - PROCID — ID процесса - MSGID — ID сообщения

MSG

Содержит: - STRUCTURED-DATA — структурированные параметры - MESSAGE — текст сообщения

Пример полного сообщения: <34>1 2026-03-03T15:00:00.123Z myserver app 12345 ID47 [exampleSD@32473 iut="3" event="start"] Starting up...

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

Syslog определяет 8 уровней важности:

  • 0 — Emergency (чрезвычайная ситуация)
  • 1 — Alert (требуется немедленное вмешательство)
  • 2 — Critical (критическая ошибка)
  • 3 — Error (ошибка)
  • 4 — Warning (предупреждение)
  • 5 — Notice (обычное, но значимое событие)
  • 6 — Informational (информационное сообщение)
  • 7 — Debug (отладочное сообщение)

Facility коды

Facility определяют источник сообщения:

  • 0 — kernel messages
  • 1 — user-level messages
  • 2 — mail system
  • 3 — system daemons
  • 4 — security/authorization messages
  • 5 — messages generated internally by syslogd
  • 6 — line printer subsystem
  • 7 — network news subsystem
  • 8 — UUCP subsystem
  • 9 — clock daemon
  • 10 — security/authorization messages
  • 11 — FTP daemon
  • 12 — NTP subsystem
  • 13 — log audit
  • 14 — log alert
  • 15 — clock daemon
  • 16-23 — local use facilities

Настройка Syslog-сервера

В Linux

rsyslog

Rsyslog — это улучшенная версия классического syslog. Установите его:

```bash

Ubuntu/Debian

sudo apt-get install rsyslog

CentOS/RHEL

sudo yum install rsyslog ```

Включите прием сетевых сообщений, отредактировав /etc/rsyslog.conf:

```

Включить модуль UDP

module(load="imudp") input(type="imudp" port="514")

Включить модуль TCP

module(load="imtcp") input(type="imtcp" port="514") ```

Создайте отдельный файл для сетевых сообщений: ```

Все сетевые сообщения в отдельный файл

. @remote-server-ip:514 ```

Перезапустите сервис: bash sudo systemctl restart rsyslog

syslog-ng

Альтернативный вариант:

bash sudo apt-get install syslog-ng

Конфигурационный файл /etc/syslog-ng/syslog-ng.conf:

``` source s_network { udp(port(514)); tcp(port(514)); };

destination d_remote_logs { file("/var/log/remote/${FULLHOST}/messages.log"); };

log { source(s_network); destination(d_remote_logs); }; ```

В Windows

Windows не поддерживает Syslog из коробки, но есть несколько решений:

NXLog Community Edition

  1. Скачайте и установите NXLog
  2. Настройте конфигурационный файл /conf/nxlog.conf:

``` Module im_udp Host 0.0.0.0 Port 514 Protocol udp ParseFormat syslog

Module om_file File "/var/log/syslog.log"

Path in_syslog => out_file ```

Kiwi Syslog Server

Популярное коммерческое решение с графическим интерфейсом.

Настройка клиентов

Linux клиенты

Для отправки сообщений на удаленный сервер добавьте строку в /etc/rsyslog.conf:

```

Отправка всех сообщений на удаленный сервер

. @@remote-server-ip:514 ```

Для конкретных типов сообщений: ```

Только ошибки

*.err @@remote-server-ip:514

Только сообщения ядра

kern.* @@remote-server-ip:514 ```

Настройка приложений

Многие приложения могут отправлять логи через Syslog. Пример для Apache:

```

В файле конфигурации Apache

LogLevel warn ErrorLog "| /usr/bin/logger -t httpd -p local6.error" ```

Windows клиенты

Для отправки логов с Windows машин можно использовать:

  1. NXLog — отправка событий из Event Log
  2. SolarWinds Free Syslog Sender
  3. Custom PowerShell скрипты

Безопасность Syslog

Традиционный Syslog использует UDP без шифрования, что создает риски:

  • Перехват сообщений
  • Подделка источника
  • Нарушение целостности данных

Для решения этих проблем:

  • Используйте TCP вместо UDP
  • Внедрите TLS шифрование (RFC 5425)
  • Примените аутентификацию источника
  • Используйте VPN для передачи логов

Практические рекомендации

Выбор подходящего решения

  1. Для небольших сетей: rsyslog или syslog-ng
  2. Для корпоративных сред: Splunk, ELK Stack, Graylog
  3. Для облака: облачные решения логирования

Мониторинг производительности

  • Следите за объемом передаваемых данных
  • Мониторьте загрузку сетевых интерфейсов
  • Проверяйте производительность сервера логов

Архитектура высокой доступности

  • Настройте несколько серверов логов
  • Используйте балансировку нагрузки
  • Реализуйте резервное копирование логов

Заключение

Syslog — мощный инструмент для централизованного сбора логов. Правильно настроив эту систему, вы сможете эффективно мониторить и анализировать события в вашей инфраструктуре. Не забывайте о безопасности и масштабируемости при планировании архитектуры системы логирования.