Appearance
Настройка Linux для отправки Syslog в LOGG
Назначение
Эта инструкция описывает настройку Linux-сервера для централизованной отправки системных и прикладных журналов в LOGG.
LOGG принимает стандартные Syslog-сообщения и поддерживает как классический BSD Syslog / RFC 3164, так и современный RFC 5424, включая Structured Data и распространённые варианты форматов.
По умолчанию используются:
| Транспорт | Порт LOGG | Рекомендация |
|---|---|---|
| UDP | 514 | Простая передача, когда допустима потеря отдельных сообщений |
| TCP | 601 | Рекомендуется для серверов и критичных журналов |
В примерах ниже:
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 rsyslogTCP или UDP?
Для большинства серверов рекомендуется использовать TCP:
text
*.* @@192.0.2.10:601UDP:
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-ngsyslog-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 | уровень исходного события |
| Facility | facility исходного события |
| 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 rsyslog2. Корректна ли конфигурация
bash
sudo rsyslogd -N13. Доступен ли LOGG по TCP
bash
nc -vz 192.0.2.10 6014. Нет ли блокировки firewall
Например:
bash
sudo nft list rulesetили:
bash
sudo iptables -L -n5. Что сообщает сам rsyslog
bash
journalctl -u rsyslog -n 100Для наблюдения в реальном времени:
bash
journalctl -u rsyslog -f6. Работает ли локальное журналирование
bash
logger "LOGG local test"После этого проверьте локальные журналы:
bash
journalctl -n 20Debian и 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.