Назад | Перейти на главную страницу

rsyslog udp forwarding усекает до 2048 символов

Rsyslog на сервере RHEL 6 получает сообщения локально через порт 514 UDP. Эти сообщения иногда намного больше, чем обычные сообщения системного журнала. Я вижу, что rsyslog отлично обрабатывает все сообщения, он без проблем записывает в локальные файлы. Однако, когда я добавляю удаленный хост в конфигурацию rsyslog, эти же большие сообщения обрезаются примерно до 2048 символов.

Я использую версию rsyslogd: 5.8.10

rsyslogd 5.8.10, compiled with:
  FEATURE_REGEXP:               Yes
  FEATURE_LARGEFILE:            No
  GSSAPI Kerberos 5 support:        Yes
  FEATURE_DEBUG (debug build, slow code):   No
  32bit Atomic operations supported:    Yes
  64bit Atomic operations supported:    Yes
  Runtime Instrumentation (slow code):  No

Единственные изменения, которые я внес в rsyslog conf, - это следующие две вещи:

Это в самом верху моего файла конфигурации rsyslog:

 $MaxMessageSize 64k

Это в самом низу моего файла конфигурации rsyslog:

$template RemoteHost,"<%%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%
*.* @my-rsyslog-central-logger:514; RemoteHost

Кто-нибудь знает, почему rsyslog обрезает журналы по UDP на удаленный хост, но может обрабатывать журналы при их записи в локальные файлы?

** Обратите внимание, что я дважды проверял, что этого не происходит на удаленном хосте rsyslog, используя netcat для прослушивания локального порта, на который rsyslog пересылает через UDP.

** Обратите внимание, что я пробовал TCP, но он не усекал большое перенаправленное сообщение, поэтому теперь вопрос в том, почему UDP усекает. (Я предполагаю, что ответ может быть связан со свойствами UDP, но я все еще хочу знать и, возможно, исправить это, если возможно, для пересылаемых сообщений UDP)

UDP не имеет порядковых номеров, не было бы возможности связно объединить сообщения (если они приходят не по порядку)

Syslog UDP Transport - http://tools.ietf.org/html/rfc5426

3.1. Одно сообщение на дейтаграмму

Каждая дейтаграмма syslog UDP ДОЛЖНА содержать только одно сообщение syslog, которое МОЖЕТ быть полным или усеченным. Сообщение ДОЛЖНО быть отформатировано и усечено в соответствии с RFC 5424 [2]. Дополнительные данные НЕ ДОЛЖНЫ присутствовать в полезной нагрузке дейтаграммы.