web-dev-qa-db-ja.com

TCPポート上のsyslogへのNginxログ

Nginxのアクセスログとエラーログをリモートのsyslogサーバーにリダイレクトする必要があります。 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;

しかし、それは通過しません。ポートがTCPで、UDPではない)であることをNginxにどのように指定できますか?

どうもありがとう!

7
int 2Eh

この方法でTCP=を介して送信する方法はありません。これは、ネットワークでログを送信するための非常に一般的な方法です。その必要性の証拠)。

ただし、ログを送信できるのはUDPのみが一般的であり、多くのネットワークデバイス(スイッチやルーターなど)はUDPでしか送信できないため、syslogゲートウェイへの送信が解決策になる場合があります。希望するポートのsyslogサーバーにリスナーを追加できません。それはあなたのUDPログを受け取り、代わりにTCPを介してそれらを中央サーバーに送ります。

私自身は、すべての作業をnginxに依存する代わりに、rsyslogを使用してnginxサーバーでログを収集し、中央サーバーに転送することを検討しました。送信先のプロトコルとポートを選択できます。

2
Rumbles

それをudpに送信し、192.168.1.1でsocatを実行できます。

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