Puncte:0

syslog-ng / telegraf: EOF a apărut când inactiv - incompatibil?

drapel al

Aceasta este o întrebare care urmează întrebarea anterioară, creat pentru că am aflat mai multe informații și este mai curat să pun asta ca o întrebare nouă.

Folosesc syslog-ng OSE v3.31.2 pentru a primi mesaje syslog RFC3164 prin portul UDP 514 de la o grămadă de clienți și le scriu în ambele fișiere și le transmit către telegraf prin portul TCP 601 non-TLS RFC5424 pentru inserare într-un Baza de date InfluxDB.

Configurația mea syslog-ng este:

@versiunea: 3.29
@include „scl.conf”

Opțiuni {
    linii de culoare (1);
};
    
sursă s_network {
    udp(ip(0.0.0.0) port(514));
};

destinație d_file {
    fisier("/var/log/messages");
};
    
destinație d_telegraf {
    syslog(portul „telegraf”(601) transport(tcp));
};
    
Buturuga {
    sursa(s_network);
    destinație(d_telegraf);
    destinație(d_file);
};

Partea relevantă a configurației mele telegraf arată astfel:

[global_tags]

[agent]
  interval = "100 ms"
  round_interval = adevărat
  metric_buffer_limit = 10000
  flush_buffer_when_full = adevărat
  collection_jitter = "0s"
  flush_interval = "100 ms"
  flush_jitter = "0s"
  depanare = adevărat
  quiet = fals

[[outputs.influxdb]]
  urls = ["http://influxdb:8086"]
  baza de date = "logs_db"

[[inputs.syslog]]
  server = "tcp://telegraf:601"

În esență, syslog-ng este configurat pentru a redirecționa intrările syslog printr-o conexiune TCP către telegraf.

Problema este că văd că syslog-ng suferă deconectări frecvente TCP de la telegraf. Acestea apar în jurnalul syslog-ng ca:

[2021-11-17T02:55:32.662972] EOF a avut loc în timpul inactiv; fd='12'
[2021-11-17T02:55:32.663102] Conexiune Syslog închisă; fd='12', server='AF_INET(192.168.0.6:601)', time_reopen='60'
[2021-11-17T02:56:32.719139] Conexiune Syslog stabilită; fd='12', server='AF_INET(192.168.0.6:601)', local='AF_INET(0.0.0.0:0)'

Această deconectare este de obicei declanșată atunci când trimit un jurnal la syslog-ng cu:

logger -i -d --server test localhost

Dar dacă las totul inactiv, voi primi și:

[2021-11-17T02:57:05.392356] EOF pe canal de control, închidere conexiune;

În aceste cazuri, 192.168.0.6 este serverul telegraf.

Deși pot seta opțiunea timp de redeschidere (1) pentru a accelera reconectarea, aș prefera să găsesc cauza principală și să previn deconectarea în primul rând.

Este posibil să existe o incompatibilitate între syslog-ng și telegraf, care cauzează acest EOF și o deconectare necurată?

Toate acestea rulează într-o stivă docker-compose pe o singură gazdă.


EDIT: Am început să caut RFC5424 și RFC6587. Folosind Wireshark pentru a adulmeca pachetele din syslog-ng, destinate telegrafului, am stabilit că acestea folosesc umplutura de octeți (denumită încadrare netransparentă), mai degrabă decât numărătoarea de octeți, pe care telegraf o așteaptă implicit. Sarcina utilă a fiecărui mesaj syslog către telegraf începe cu un caracter „<” mai degrabă decât cu un număr întreg.

Presupun că telegraf acceptă aceste mesaje, dar se blochează analizându-le și, prin urmare, închide conexiunea. Primul FIN care închide conexiunea vine de la telegraf.

Din păcate, când am setat telegraful să accepte încadrarea netransparentă, respinge întreaga intrare și încă nu am înțeles de ce.

De asemenea, încă nu mi-am dat seama cum să configurez syslog-ng pentru a afișa mesaje cu încadrare de numărare a octeților.

Dar cel puțin mesajul EOF și deconectarea au încetat să mai apară. Dar nu sunt sigur că asta înseamnă mult dacă Telegraf respinge toate mesajele.

Puncte:0
drapel al

Am stabilit că syslog-ng este trimiterea de mesaje încadrate cu numărarea octeților către telegraf.

Cauza acestei probleme este că telegraf deconectează conexiunea TCP de la syslog-ng după 5 secunde fără a primi un mesaj. Acest lucru este contrar documentației furnizate cu pluginul telegraf syslog, care afirmă că acest timeout se aplică numai timpului de primire a unui singur mesaj, și nu intervalului dintre mesaje. Totuși, poate fi o problemă de limba engleză/interpretare. Setare read_timeout la 0 în configurația telegraf este suficientă pentru a preveni deconectarea telegrafului.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.