Appearance
Настройка журналирования NATS в Syslog (подсистема ЖУРНАЛЛИСТ)
Сервер NATS поддерживает вывод журналов в стандартный поток (stdout) и в файл. Прямой отправки в syslog из NATS нет, поэтому для интеграции с подсистемой ЖУРНАЛЛИСТ используется системный syslog (rsyslog / syslog-ng), который собирает и пересылает журналы.
Общая схема
NATS:
- пишет логи (stdout или файл)
- syslog (rsyslog / syslog-ng) собирает данные
- syslog пересылает сообщения в ЖУРНАЛЛИСТ
Варианты интеграции
Доступны два основных подхода:
- Через stdout (рекомендуется для systemd и контейнеров)
- Через файл логов (универсальный вариант)
Вариант 1. Использование stdout (systemd)
Если NATS запущен как сервис systemd, его вывод попадает в journald и далее может быть передан в syslog.
Пример systemd unit
ini
[Service]
ExecStart=/usr/local/bin/nats-server -c /etc/nats/nats.conf
StandardOutput=journal
StandardError=journalПросмотр логов
bash
journalctl -u nats-serverПересылка через rsyslog
Включение приема из journald:
bash
module(load="imjournal")Фильтр:
bash
if $programname == 'nats-server' then @@journalist-server:514
& stopВариант 2. Использование файлов логов
Настройка NATS
Файл конфигурации:
bash
/etc/nats/nats.confПример:
conf
log_file: "/var/log/nats/nats.log"
logtime: true
debug: false
trace: falseПерезапуск NATS
bash
systemctl restart nats-serverНастройка rsyslog (imfile)
bash
# /etc/rsyslog.d/nats.conf
input(type="imfile"
File="/var/log/nats/nats.log"
Tag="nats"
Facility="local0")Пересылка в ЖУРНАЛЛИСТ
bash
local0.* @@journalist-server:514Перезапуск
bash
systemctl restart rsyslogsyslog-ng (альтернатива)
bash
source s_nats {
file("/var/log/nats/nats.log");
};
destination d_journalist {
tcp("journalist-server" port(514));
};
log {
source(s_nats);
destination(d_journalist);
};Проверка
- Проверить локальный лог:
bash
tail -f /var/log/nats/nats.logили:
bash
journalctl -u nats-server- Проверить поступление событий в ЖУРНАЛЛИСТ
Какие события попадают
- запуск и остановка сервера
- подключения клиентов
- ошибки аутентификации
- проблемы маршрутизации
- события кластеризации
- ошибки сети
Рекомендации
- использовать файловый лог для стабильности
- назначать отдельный facility (например, local0)
- использовать TCP для передачи
- ограничивать debug/trace в production
Особенности NATS
- нет нативного syslog output
- логирование минималистичное и высокопроизводительное
- важно контролировать уровень детализации
Когда использовать данный подход
Рекомендуется:
- для production-сред
- при интеграции с другими компонентами (Kafka, MongoDB, приложения)
- для построения полной картины событий
Краткий вывод
NATS легко интегрируется с подсистемой ЖУРНАЛЛИСТ через системный syslog. Несмотря на отсутствие нативной поддержки syslog, стандартные механизмы Linux позволяют включить события NATS в централизованную систему анализа и автоматизации.