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!
Antworten:
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.
quelle
Sie können es an udp senden und dann socat unter 192.168.1.1 ausführen
quelle