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

Журнал Nginx в системный журнал на TCP-порту

Мне нужно перенаправить доступ Nginx и журналы ошибок на удаленный сервер системного журнала. Из http://nginx.org/en/docs/syslog.html Я увидел, что могу:

error_log syslog:server=192.168.1.1;

Однако мне нужно перенаправить на конкретный порт TCP (не UDP!), И я пробовал:

error_log syslog:server=192.168.1.1:3000;

но это не проходит. Как указать Nginx, что порт должен быть TCP, а не UDP?

Большое спасибо!

Невозможно отправить через TCP таким способом, который является довольно распространенным способом отправки журналов в сети, поскольку вы хотите, чтобы доставка сообщений была надежной (см. Модуль RELP для доказательства этой необходимости).

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

Я бы хотел собрать журналы на сервере nginx с помощью rsyslog и перенаправить их на центральный сервер вместо того, чтобы полагаться на nginx, который сделает всю работу. Вы можете выбрать протокол и порт для отправки.

Вы можете отправить его в udp, а затем запустить socat на 192.168.1.1

socat UDP4-RECVFROM:192.168.1.1:3000,fork,reuseaddr TCP4-SENDTO:192.168.1.1:3000