Nginx-Protokoll zu Syslog am TCP-Port


7

Ich muss Nginx-Zugriffs- und Fehlerprotokolle auf einen Remote-Syslog-Server umleiten. Von http://nginx.org/en/docs/syslog.html habe ich gesehen, dass ich Folgendes tun kann:

error_log syslog:server=192.168.1.1;

Ich muss jedoch zu einem bestimmten TCP-Port (nicht UDP!) Umleiten und habe Folgendes versucht:

error_log syslog:server=192.168.1.1:3000;

aber es geht nicht durch. Wie kann Nginx festgelegt werden, dass der Port TCP und nicht UDP sein soll?

Danke vielmals!


Ich denke, Nginx kann sich nicht über TCP bei Syslog anmelden.
Alexey Ten

2
Es ist eine schreckliche Idee, sich bei TCP anzumelden. Der Grund dafür ist, dass bei einem Ausfall dieses Servers jede Verbindung zu nginx blockiert wird und darauf gewartet wird, dass die TCP-Verbindung hergestellt wird. Außerdem ist TCP langsamer als UDP. Wenn es aktiv ist, fügen Sie Nginx Latenz hinzu. UDP ist Feuer und Vergessen. Es wartet nicht auf einen Handschlag
Mike

3
Sie können auf localhost ein Syslog einrichten, das UDP (oder sogar Unix-Socket) überwacht und Protokolle an den Remote-Server sendet.
Alexey Ten

Antworten:


2

Es gibt keine Möglichkeit, auf diese Weise über TCP zu senden. Dies ist eine weit verbreitete Methode zum Senden von Protokollen in einem Netzwerk, da die Nachrichtenübermittlung zuverlässig sein soll (siehe RELP-Modul für Beweise für diese Notwendigkeit).

Es ist jedoch durchaus üblich, dass nur Protokolle über UDP gesendet werden können. Einige Netzwerkgeräte (z. B. Switches oder Router) können nur per UDP senden. Wenn Sie dies tun, kann das Senden an ein Syslog-Gateway daher eine Lösung sein Auf dem Syslog-Server des gewünschten Ports kann kein Listener hinzugefügt werden. Das würde Ihre UDP-Protokolle empfangen und sie stattdessen über TCP an Ihren zentralen Server weiterleiten.

Ich selbst würde versuchen, die Protokolle auf dem Nginx-Server mit rsyslog zu sammeln und sie an den zentralen Server weiterzuleiten, anstatt mich auf Nginx zu verlassen, um die ganze Arbeit zu erledigen. Sie können das Protokoll und den Port auswählen, an den gesendet werden soll.


0

Sie können es an udp senden und dann socat unter 192.168.1.1 ausführen

socat UDP4-RECVFROM:192.168.1.1:3000,fork,reuseaddr TCP4-SENDTO:192.168.1.1:3000
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.