Skip to content

Настройка Linux для отправки Syslog в LOGG ​

Назначение ​

Эта инструкция описывает настройку Linux-сервера для централизованной отправки системных и прикладных журналов в LOGG.

LOGG принимает стандартные Syslog-сообщения и поддерживает как классический BSD Syslog / RFC 3164, так и современный RFC 5424, включая Structured Data и распространённые варианты форматов.

По умолчанию используются:

ТранспортПорт LOGGРекомендация
UDP514Простая передача, когда допустима потеря отдельных сообщений
TCP601Рекомендуется для серверов и критичных журналов

В примерах ниже:

text
LOGG_SERVER = 192.0.2.10

Замените этот адрес на IP-адрес или DNS-имя вашего сервера LOGG.


Перед началом настройки ​

Убедитесь, что Linux-сервер имеет сетевой доступ к LOGG.

Для TCP можно выполнить проверку:

bash
nc -vz 192.0.2.10 601

Для проверки UDP:

bash
nc -zvu 192.0.2.10 514

Проверка UDP показывает возможность отправки datagram, но не подтверждает её получение сервером.

Если используется межсетевой экран, необходимо разрешить исходящие соединения:

text
TCP → LOGG_SERVER:601

или:

text
UDP → LOGG_SERVER:514

Вариант 1. rsyslog ​

rsyslog является стандартным средством журналирования во многих Linux-дистрибутивах и рекомендуемым способом подключения Linux-сервера к LOGG.

Проверить наличие rsyslog:

bash
rsyslogd -v

Проверить состояние службы:

bash
systemctl status rsyslog

Если rsyslog установлен и работает, достаточно добавить правило удалённой отправки.

Отправка по TCP ​

Создайте файл:

bash
sudo nano /etc/rsyslog.d/60-logg.conf

Добавьте:

text
*.* @@192.0.2.10:601

Здесь:

  • *.* — передавать сообщения всех facility и severity;
  • @@ — использовать TCP;
  • 192.0.2.10 — адрес LOGG;
  • 601 — TCP-порт LOGG.

Проверьте конфигурацию:

bash
sudo rsyslogd -N1

При отсутствии ошибок перезапустите службу:

bash
sudo systemctl restart rsyslog

Отправка по UDP ​

Для UDP используется один символ @:

text
*.* @192.0.2.10:514

После изменения конфигурации:

bash
sudo rsyslogd -N1
sudo systemctl restart rsyslog

TCP или UDP? ​

Для большинства серверов рекомендуется использовать TCP:

text
*.* @@192.0.2.10:601

UDP:

text
*.* @192.0.2.10:514

может использоваться для некритичных журналов или устройств, поддерживающих только UDP Syslog.

TCP обеспечивает более надёжную передачу, однако для действительно гарантированной доставки необходимо дополнительно использовать локальную очередь rsyslog.


Рекомендуемая конфигурация rsyslog с очередью ​

Для промышленной эксплуатации рекомендуется использовать omfwd и локальную очередь.

Пример /etc/rsyslog.d/60-logg.conf:

text
action(
    type="omfwd"
    target="192.0.2.10"
    port="601"
    protocol="tcp"

    action.resumeRetryCount="-1"

    queue.type="LinkedList"
    queue.filename="logg-forward"
    queue.saveOnShutdown="on"
)

Такая конфигурация предпочтительнее короткой записи @@server:port.

Если LOGG временно недоступен, rsyslog сможет повторить передачу накопленных сообщений после восстановления соединения.

Для особо важных серверов рекомендуется дополнительно настроить дисковую очередь и ограничения её размера в соответствии с объёмом журналов и требованиями вашей организации.


Использование RFC 5424 ​

При наличии возможности рекомендуется передавать в LOGG сообщения в формате RFC 5424.

Например:

text
template(
    name="LOGG-RFC5424"
    type="string"
    string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% - - %msg%\n"
)

action(
    type="omfwd"
    target="192.0.2.10"
    port="601"
    protocol="tcp"
    template="LOGG-RFC5424"
)

RFC 5424 предпочтителен, поскольку позволяет однозначно передавать:

  • hostname;
  • приложение;
  • process ID;
  • timestamp с часовым поясом;
  • severity;
  • facility;
  • Structured Data.

При использовании собственной конфигурации rsyslog необходимо учитывать особенности версии rsyslog, установленной в вашей операционной системе.


Проверка отправки ​

После настройки отправьте тестовое сообщение.

Через logger ​

TCP:

bash
logger --tcp --server 192.0.2.10 --port 601 \
  --priority user.info \
  "LOGG test message from $(hostname)"

UDP:

bash
logger --udp --server 192.0.2.10 --port 514 \
  --priority user.info \
  "LOGG test message from $(hostname)"

Для некоторых версий logger используется сокращённая запись:

bash
logger -n 192.0.2.10 -P 601 -T -p user.info "LOGG TCP test"

или:

bash
logger -n 192.0.2.10 -P 514 -d -p user.info "LOGG UDP test"

После отправки найдите сообщение в интерфейсе LOGG.


Быстрая проверка через nc ​

Тестовое RFC 5424-сообщение можно отправить непосредственно через TCP:

bash
echo '<14>1 2026-08-17T18:00:00+03:00 linux-test test-app 123 TEST - LOGG connection test' \
  | nc 192.0.2.10 601

Этот способ удобен для диагностики сетевого соединения, но для постоянной передачи журналов следует использовать rsyslog, syslog-ng или другой специализированный агент.


Вариант 2. syslog-ng ​

Если на сервере используется syslog-ng, добавьте destination для LOGG.

Пример для TCP:

text
destination d_logg {
    network(
        "192.0.2.10"
        port(601)
        transport("tcp")
    );
};

Затем определите маршрут:

text
log {
    source(s_src);
    destination(d_logg);
};

Название source (s_src) зависит от существующей конфигурации syslog-ng.

Проверить конфигурацию:

bash
syslog-ng --syntax-only

После проверки:

bash
sudo systemctl restart syslog-ng

syslog-ng и RFC 5424 ​

Для передачи современного Syslog можно использовать:

text
destination d_logg {
    syslog(
        "192.0.2.10"
        transport("tcp")
        port(601)
    );
};

Конкретный синтаксис может отличаться между версиями syslog-ng, поэтому при изменении существующей промышленной конфигурации рекомендуется учитывать документацию установленной версии.


systemd-journald ​

На большинстве современных Linux-систем значительная часть событий первоначально поступает в systemd journal.

Проверить журнал можно командой:

bash
journalctl

Последние события:

bash
journalctl -n 50

Следить за поступлением:

bash
journalctl -f

В типичной конфигурации Linux цепочка выглядит следующим образом:

text
systemd-journald
       │
       ▼
    rsyslog
       │
       │ TCP 601
       ▼
      LOGG

Поэтому устанавливать дополнительный агент обычно не требуется: достаточно настроить существующий rsyslog.


Передача Journal Export ​

LOGG также поддерживает структурированный формат systemd Journal Export.

Для диагностических или специализированных сценариев поток можно сформировать:

bash
journalctl -o export -f

и передать в LOGG по TCP.

Пример:

bash
journalctl -o export -f | nc 192.0.2.10 601

В этом случае LOGG может получить дополнительные поля journald, включая:

  • _HOSTNAME;
  • _COMM;
  • SYSLOG_IDENTIFIER;
  • PRIORITY;
  • SYSLOG_FACILITY;
  • __REALTIME_TIMESTAMP;
  • MESSAGE.

Для постоянной промышленной передачи рекомендуется использовать специализированный агент или Syslog-сервис с буферизацией, а не постоянный процесс journalctl | nc.


Отправка только определённых журналов ​

Необязательно передавать в LOGG все события Linux-сервера.

Например, только сообщения уровня warning и выше:

text
*.warning @@192.0.2.10:601

Только сообщения facility auth:

text
auth.* @@192.0.2.10:601

Только local0:

text
local0.* @@192.0.2.10:601

Несколько правил можно использовать одновременно.


Отправка сообщений приложением ​

Linux-приложения могут записывать события в локальный Syslog, после чего rsyslog автоматически передаст их в LOGG.

Пример из shell-скрипта:

bash
logger -t backup -p local0.info "Backup completed successfully"

В LOGG такое событие будет связано с программой backup.

Ошибка:

bash
logger -t backup -p local0.err "Backup failed"

Это предпочтительнее прямой отправки Syslog из каждого shell-скрипта: маршрутизацией и повторной доставкой занимается системный Syslog-сервис.


Проверка источника в LOGG ​

После подключения Linux-сервера рекомендуется убедиться, что LOGG корректно определяет:

ПараметрОжидаемое значение
Источникhostname Linux-сервера
Программаsshd, sudo, kernel, nginx и т. п.
Severityуровень исходного события
Facilityfacility исходного события
Timestampвремя возникновения события
Payloadтекст журнальной записи

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

bash
logger -p user.info "LOGG severity test: info"
logger -p user.warning "LOGG severity test: warning"
logger -p user.err "LOGG severity test: error"
logger -p user.crit "LOGG severity test: critical"

После этого проверьте их отображение и уровни критичности в LOGG.


Диагностика ​

Если сообщения не появляются в LOGG, последовательно проверьте следующие элементы.

1. Работает ли rsyslog ​

bash
systemctl status rsyslog

2. Корректна ли конфигурация ​

bash
sudo rsyslogd -N1

3. Доступен ли LOGG по TCP ​

bash
nc -vz 192.0.2.10 601

4. Нет ли блокировки firewall ​

Например:

bash
sudo nft list ruleset

или:

bash
sudo iptables -L -n

5. Что сообщает сам rsyslog ​

bash
journalctl -u rsyslog -n 100

Для наблюдения в реальном времени:

bash
journalctl -u rsyslog -f

6. Работает ли локальное журналирование ​

bash
logger "LOGG local test"

После этого проверьте локальные журналы:

bash
journalctl -n 20

Debian и Ubuntu ​

На Debian и Ubuntu обычно используется rsyslog.

Если он отсутствует:

bash
sudo apt update
sudo apt install rsyslog
sudo systemctl enable --now rsyslog

После установки создайте:

text
/etc/rsyslog.d/60-logg.conf

с рекомендуемой TCP-конфигурацией и перезапустите службу.


RHEL, Rocky Linux, AlmaLinux, CentOS и Oracle Linux ​

Проверить наличие rsyslog:

bash
rpm -q rsyslog

При необходимости установить:

bash
sudo dnf install rsyslog
sudo systemctl enable --now rsyslog

Для старых систем вместо dnf может использоваться:

bash
sudo yum install rsyslog

После установки создайте:

text
/etc/rsyslog.d/60-logg.conf

и настройте отправку на LOGG.


ALT Linux, Astra Linux и РЕД ОС ​

В российских Linux-дистрибутивах также может использоваться rsyslog или другой совместимый Syslog-сервис.

Перед изменением конфигурации определите активный сервис:

bash
systemctl status rsyslog

и:

bash
systemctl status syslog-ng

Если используется rsyslog, применяются те же правила:

text
*.* @@192.0.2.10:601

Если используется syslog-ng — используйте соответствующий раздел этой инструкции.

На защищённых конфигурациях ОС возможность сетевой отправки журналов также может определяться локальной политикой безопасности.


Рекомендованная конфигурация ​

Для большинства Linux-серверов рекомендуется следующая схема:

text
Linux application
       │
       ▼
systemd-journald / Syslog
       │
       ▼
     rsyslog
       │
       │ TCP
       │ port 601
       ▼
      LOGG

Для промышленных серверов дополнительно рекомендуется включить локальную очередь rsyslog.

Таким образом, приложения продолжают использовать штатный механизм журналирования Linux, а доставкой, буферизацией и повторными попытками занимается системный Syslog-сервис.


Краткая настройка ​

Если на Linux уже установлен и работает rsyslog, для подключения к LOGG обычно достаточно:

bash
echo '*.* @@192.0.2.10:601' | sudo tee /etc/rsyslog.d/60-logg.conf

sudo rsyslogd -N1
sudo systemctl restart rsyslog

logger -p user.info "LOGG connection test"

После выполнения команд проверьте появление тестового события в интерфейсе LOGG.