Rsyslog теряет сообщение при отправке через TCP

Я пытался создать собственный сервер Syslog на платформе Windows, для чего я, для начала, реализую базовый TCP-прослушиватель (сервер). Я столкнулся с проблемой, и я задал это на StackOverflow: Вопрос.

Позже я понял, что проблема существует, даже когда я использую два Rsyslogs на двух отдельных машинах Linux.

Это rsyslog.conf на клиентском компьютере:

local3.*    @@192.168.1.199:514

Это rsyslog.conf на сервере:

local3.*    /var/log/test.log

Это скрипт (на клиенте) для отправки сообщений журнала:

#!/bin/dash

for i in 1 2 3 4 5 6 7 8 9 10
do
logger -i -t Test -p local3.debug "This is test $i"
done

Это выходной файл, полученный на сервере (test.log):

2016-08-02T00:10:33-07:00 ubuntu Test[37023]: This is test 2
2016-08-02T00:10:33-07:00 ubuntu Test[37024]: This is test 3
2016-08-02T00:10:33-07:00 ubuntu Test[37025]: This is test 4
2016-08-02T00:10:33-07:00 ubuntu Test[37026]: This is test 5
2016-08-02T00:10:33-07:00 ubuntu Test[37027]: This is test 6
2016-08-02T00:10:33-07:00 ubuntu Test[37028]: This is test 7
2016-08-02T00:10:33-07:00 ubuntu Test[37029]: This is test 8
2016-08-02T00:10:33-07:00 ubuntu Test[37030]: This is test 9
2016-08-02T00:10:33-07:00 ubuntu Test[37031]: This is test 10

Судя по всему, первое сообщение This is test 1 это тот, который запускает соединение TCP, и он был отброшен.

Есть ли какие-либо настройки на rsyslog, которые я могу установить, чтобы предотвратить это?

Редактировать:

Я хочу отметить, что это происходит только в том случае, если соединение еще не установлено; если я запускаю скрипт второй раз сразу после первого, второй запуск скрипта сгенерирует This is test 1,

Я также рад, что у меня есть положительные отзывы на этот вопрос, но мне кажется странным, что не так много людей заметили эту проблему и пытались ее исправить. Люди, которые входят в систему, - это, как правило, люди, которые серьезно относятся к пониманию того, где их система работает правильно и неправильно, и все же они предполагают, что все будет работать правильно, если они правильно настроят конфигурации? Я хотел попробовать больше вещей, но я действительно очень плохо знаком с системами Unix, поэтому я не знаю, как решить эту проблему.

Обновить:

Я сделал дальнейшие тесты. Кажется, я был не совсем прав. Кажется, это произойдет, только если я systemctl restart rsyslog на сервере (получающем), но делающем это на клиентском компьютере.

Я предполагаю, что клиент думает, что он все еще подключен (тогда как на стороне сервера нет), и пытается отправить следующее сообщение. Это когда клиент понимает, что соединение было разорвано, и пытается восстановить новое соединение.

Странно то, что я понятия не имею, почему клиент подумает, что потерянное сообщение доставлено.

Я знаю, что есть RELP, но в итоге у меня будет центральный сервер системного журнала на платформе Windows. Как мне использовать TCP без этой проблемы или получить (или собрать) сервер системного журнала (сборщик), работающий в Windows с поддержкой RELP?

0 ответов

Другие вопросы по тегам