Jurnal Nginx la syslog pe portul TCP (Administrarea sistemului, Nginx, Logare, Tcp, Syslog, Rsyslog)

int 2Eh a intrebat.

Trebuie să redirecționez jurnalele de acces și de eroare Nginx către un server syslog la distanță. De la http://nginx.org/en/docs/syslog.html am văzut că pot face:

error_log syslog_server=192.168.1.1;

Cu toate acestea, am nevoie să redirecționez către un anumit port TCP (nu UDP!) și am încercat cu:

error_log syslog_server=192.168.1.1:3000;

dar nu trece prin. Cum pot specifica la Nginx că portul trebuie să fie TCP și nu UDP?

Mulțumesc mult!

Comentarii

  • Cred că, nginx nu poate face log la syslog prin TCP. –  > Por Alexey Ten.
  • Înregistrarea pe orice TCP este o idee oribilă. Motivul este că, dacă acel server este căzut, fiecare conexiune în nginx va fi blocată în așteptarea conexiunii tcp pentru a fi realizată. De asemenea, TCP este mai lent decât UDP, așa că atunci când este în funcțiune adăugați latență în nginx. UDP este de tip „foc și uitare”. Nu așteaptă o strângere de mână…  > Por Mike.
  • Ați putea configura syslog pe localhost care va asculta UDP (sau chiar socket unix) și va trimite jurnalele către serverul de la distanță. –  > Por Alexey Ten.
2 răspunsuri
Rumbles

Nu există nici o modalitate de a trimite prin TCP în acest mod, care este o modalitate destul de comună de a trimite jurnale într-o rețea, deoarece doriți ca livrarea mesajelor să fie fiabilă (uitați-vă la modulul RELP pentru dovezi ale acestei nevoi).

Dar, de asemenea, posibilitatea de a trimite jurnale doar prin UDP este destul de comună, o serie de dispozitive de rețea (switch-uri sau routere, de exemplu) sunt capabile să trimită doar prin UDP, astfel încât trimiterea către un gateway syslog ar putea fi o soluție, dacă nu sunteți în măsură să adăugați un ascultător pe serverul syslog pe portul pe care îl doriți. Acesta ar primi jurnalele UDP și, în schimb, le-ar trimite către serverul central prin TCP.

Eu însumi aș căuta să colectez jurnalele de pe serverul nginx cu rsyslog și să le transmit la serverul central, în loc să mă bazez pe nginx pentru a face toată treaba. Puteți alege protocolul și portul către care să trimiteți.

Victor Zhuravlyov

Puteți să le trimiteți la udp și apoi să rulați socat pe 192.168.1.1.1

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