Skip to content

Настройка журналирования NATS в Syslog (подсистема ЖУРНАЛЛИСТ)

Сервер NATS поддерживает вывод журналов в стандартный поток (stdout) и в файл. Прямой отправки в syslog из NATS нет, поэтому для интеграции с подсистемой ЖУРНАЛЛИСТ используется системный syslog (rsyslog / syslog-ng), который собирает и пересылает журналы.

Общая схема

NATS:

  • пишет логи (stdout или файл)
  • syslog (rsyslog / syslog-ng) собирает данные
  • syslog пересылает сообщения в ЖУРНАЛЛИСТ

Варианты интеграции

Доступны два основных подхода:

  1. Через stdout (рекомендуется для systemd и контейнеров)
  2. Через файл логов (универсальный вариант)

Вариант 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 rsyslog

syslog-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);
};

Проверка

  1. Проверить локальный лог:
bash
tail -f /var/log/nats/nats.log

или:

bash
journalctl -u nats-server
  1. Проверить поступление событий в ЖУРНАЛЛИСТ

Какие события попадают

  • запуск и остановка сервера
  • подключения клиентов
  • ошибки аутентификации
  • проблемы маршрутизации
  • события кластеризации
  • ошибки сети

Рекомендации

  • использовать файловый лог для стабильности
  • назначать отдельный facility (например, local0)
  • использовать TCP для передачи
  • ограничивать debug/trace в production

Особенности NATS

  • нет нативного syslog output
  • логирование минималистичное и высокопроизводительное
  • важно контролировать уровень детализации

Когда использовать данный подход

Рекомендуется:

  • для production-сред
  • при интеграции с другими компонентами (Kafka, MongoDB, приложения)
  • для построения полной картины событий

Краткий вывод

NATS легко интегрируется с подсистемой ЖУРНАЛЛИСТ через системный syslog. Несмотря на отсутствие нативной поддержки syslog, стандартные механизмы Linux позволяют включить события NATS в централизованную систему анализа и автоматизации.