Syslog-ng - это мощная система логирования, которая позволяет централизованно собирать, фильтровать и анализировать логи с различных устройств и серверов. В этой статье мы разберем, как правильно установить и настроить Syslog-ng для максимальной эффективности и безопасности.
Что такое Syslog-ng и зачем он нужен?
Syslog-ng (Next Generation Syslog) - это усовершенствованная версия классического syslogd, которая предоставляет:

- ✅ Гибкую фильтрацию и маршрутизацию логов
- ✅ Поддержку шифрования (TLS/SSL)
- ✅ Возможность работы с различными форматами данных
- ✅ Высокую производительность даже при больших нагрузках
Установка Syslog-ng на Linux
Для Debian/Ubuntu
- Обновите список пакетов:
sudo apt update - Установите Syslog-ng:
sudo apt install syslog-ng - Проверьте версию:
syslog-ng --version
Для CentOS/RHEL
- Добавьте EPEL-репозиторий:
sudo yum install epel-release - Установите Syslog-ng:
sudo yum install syslog-ng - Запустите сервис:
sudo systemctl start syslog-ng
Совет эксперта
Всегда устанавливайте последнюю стабильную версию Syslog-ng, так как в новых релизах исправляются уязвимости и добавляются важные функции.

Базовая настройка Syslog-ng
Основной конфигурационный файл находится в /etc/syslog-ng/syslog-ng.conf. Рассмотрим ключевые параметры:
| Параметр | Описание | Пример |
|---|---|---|
| source | Определяет источники логов | source s_local { system(); internal(); }; |
| destination | Указывает куда отправлять логи | destination d_file { file("/var/log/messages"); }; |
| filter | Фильтрует сообщения | filter f_error { level(err..emerg); }; |
| log | Связывает компоненты | log { source(s_local); filter(f_error); destination(d_file); }; |
Пример конфигурации для сбора логов с удаленных серверов
source s_network { syslog(ip(0.0.0.0) port(514) transport("udp")); }; destination d_remote { file("/var/log/remote/${HOST}/messages"); }; log { source(s_network); destination(d_remote); }; Частая ошибка
Не настраивайте парольную аутентификацию для удаленного доступа. Всегда используйте TLS-шифрование для защиты передаваемых логов.
Продвинутые настройки Syslog-ng
Настройка TLS-шифрования
Для безопасной передачи логов необходимо:
- Сгенерировать SSL-сертификаты
- Настроить источник и приемник с указанием путей к сертификатам
- Проверить соединение с помощью tcpdump или Wireshark
Интеграция с внешними системами
Syslog-ng поддерживает интеграцию с:
- ✅ Elasticsearch для анализа логов
- ✅ Grafana для визуализации
- ✅ SIEM-системами для мониторинга безопасности
Проверка и мониторинг работы Syslog-ng
После настройки обязательно проверьте:
- ✅ Статус службы:
systemctl status syslog-ng - ✅ Логи самой Syslog-ng:
tail -f /var/log/syslog-ng/syslog-ng.log - ✅ Наличие новых сообщений в указанных файлах назначения
Профессиональная помощь по Syslog-ng
Если вам нужна помощь с установкой, настройкой или оптимизацией Syslog-ng, наши специалисты готовы:
- ✅ Провести аудит существующей системы логирования
- ✅ Оптимизировать конфигурацию для ваших задач
- ✅ Настроить безопасную передачу логов между серверами
- ✅ Интегрировать Syslog-ng с другими системами мониторинга
Мы работаем с Syslog-ng более 10 лет и помогли десяткам компаний настроить надежную систему логирования.
Популярные вопросы
Что такое Syslog-ng и для чего он используется?
Он обеспечивает:
- Гибкую фильтрацию сообщений
- Поддержку шифрования при передаче логов
- Возможность записи в базы данных
- Надежную буферизацию
Используется для централизованного логирования в корпоративных сетях, анализа безопасности и мониторинга систем.Как установить Syslog-ng на Ubuntu/Debian?
sudo apt update sudo apt install syslog-ng
После установки:
- Проверьте статус службы:
- Активируйте автозагрузку:
- Запустите сервис:
Для CentOS/RHEL используйте yum install syslog-ng.systemctl status syslog-ng
systemctl enable syslog-ng
systemctl start syslog-ng
Как настроить пересылку логов на удаленный сервер?
1. В файле
/etc/syslog-ng/syslog-ng.conf
добавить:destination remote_server { tcp("192.168.1.100" port(514)); }; log { source(s_src); destination(remote_server); };
2. На удаленном сервере разрешить прием соединений в
sources { network(ip(0.0.0.0) port(514)); };
3. Перезапустить службу:
systemctl restart syslog-ng
Для шифрования используйте транспорт TLS с сертификатами.
Какие форматы хранения логов поддерживает Syslog-ng?
- Текстовые файлы — классический формат с ротацией
- SQL базы — MySQL, PostgreSQL, SQLite через драйверы
- Elasticsearch — для интеграции с ELK-стеком
- HDFS — хранение больших объемов данных
- Cloud-хранилища — AWS S3, Google Cloud Storage
Пример записи в файл:destination d_file { file("/var/log/custom.log"); };
Как фильтровать логи по приоритету и тегам?
filter f_error { level(err..emerg) or program("kernel"); }; destination d_errors { file("/var/log/critical.log"); }; log { source(s_src); filter(f_error); destination(d_errors); };
Доступные операторы:
Как обеспечить безопасность передачи логов?
- Использование TLS-шифрования:
- Настройка аутентификации через сертификаты
- Ограничение доступа по IP в firewall
- Регулярный аудит правил конфигурации
- Хранение sensitive-логов в изолированном хранилище
Для генерации сертификатов используйте OpenSSL или certbot.destination d_secure { syslog("logs.example.com" transport(tls) port(6514)); };
Как интегрировать Syslog-ng с Zabbix/Grafana?
Для Zabbix:
- Настройте парсер для ключевых событий
- Используйте zabbix_sender для отправки триггеров
Для Grafana:- Направьте логи в Elasticsearch/Loki
- Настройте источник данных в Grafana
- Создайте dashboards с важными метриками
Пример парсера для ошибок:filter f_nginx_errors { match("500 Internal Server Error" value("MESSAGE")); };
Какие преимущества Syslog-ng перед стандартным rsyslog?
1. Гибкость фильтрации: Syslog-ng поддерживает сложные условия фильтрации с использованием регулярных выражений и логических операторов.
2. Поддержка множества форматов: В отличие от rsyslog, Syslog-ng может работать с JSON, XML и другими структурированными форматами.
3. Надежная пересылка логов: Поддержка TLS-шифрования и буферизации при передаче данных.
4. Масштабируемость: Оптимизирован для работы с большими объемами данных.
Пример конфигурации для фильтрации логов:
filter f_http { match("http" value("MESSAGE")); };
Как настроить парсинг пользовательских логов в Syslog-ng?
1. Шаблоны позволяют определить формат вывода. Например:
template t_custom { template("${HOST} ${MESSAGE}\n"); };
2. Парсеры (например, csv-parser или regexp) разбивают сообщения на структурированные поля. Пример:
parser p_csv { csv-parser(columns("col1", "col2") delimiters(",")); };
Эти инструменты особенно полезны для интеграции с SIEM-системами и анализаторами логов.
Как оптимизировать производительность Syslog-ng для высоконагруженных систем?
1. Используйте буферизацию: Настройка
flush_lines()
иtime_reopen()
уменьшает нагрузку на диск.2. Распределяйте логи: Разделяйте логи по файлам или базам данных для параллельной обработки.
3. Настройте threading: Включите многопоточность в конфигурации:
options { threaded(yes); };
4. Фильтрация на ранней стадии: Отсеивайте ненужные логи до обработки с помощью
filter()
.Для серверов с 10K+ сообщений/сек рекомендуется выделить отдельный SSD под логи.
Какие лучшие практики резервного копирования конфигурации Syslog-ng?
1. Версионный контроль: Храните конфиги в Git с историей изменений.
2. Автоматизированные бэкапы: Используйте cron-задачи для копирования
/etc/syslog-ng/
на удаленный сервер.3. Проверка конфигурации: Перед применением изменений всегда выполняйте:
syslog-ng -s -f /etc/syslog-ng/syslog-ng.conf
4. Шаблонизация: Разделяйте конфиги на модули через
@include
для упрощения восстановления.Для критичных систем настройте репликацию конфигурации на standby-сервер.
Как мониторить работоспособность Syslog-ng в реальном времени?
1. Встроенные метрики: Включите статистику в конфиге:
options { stats(freq(60)); };
2. Интеграцию с Prometheus: Экспортируйте метрики через
prometheus()
источник.3. Алертинг: Настройте проверку процесса через systemd или мониторинг очереди сообщений.
4. Логирование ошибок: Отдельный файл для ошибок Syslog-ng:
destination d_errors { file("/var/log/syslog-ng-errors.log"); };
Для визуализации подойдут Grafana или Kibana с дашбордами по ключевым метрикам.
Какие альтернативы Syslog-ng существуют для централизованного логирования?
1. Fluentd: Подходит для Docker-сред и облачных решений, поддерживает 500+ плагинов.
2. Logstash: Часть стека ELK, идеален для анализа через Elasticsearch.
3. Vector: Высокопроизводительный сборщик логов с минимальным потреблением CPU.
4. Graylog: Готовое решение с веб-интерфейсом и алертингом.
Однако Syslog-ng остается лучшим выбором для:
- Систем с жесткими требованиями к безопасности