Tocmai am instalat haproxy server de testare.

Există o modalitate de a-l face să își scrie jurnalele într-un fișier local, mai degrabă decât syslog?

Acest lucru este doar pentru testare, așa că nu vreau să încep să deschid ports / aglomerarea syslog-ului cu toate datele mele de testare.

Din păcate, singurele informații pe care le pot găsi se referă la conectarea la un server syslog.

Am încercat să folosesc:

log /home/user/ha.log local0 

în config. Dar asta mi-a spus:

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2) 

Când am repornit. Așa că am creat fișierul cu touch /home/user/ha.log și am repornit moment în care am primit:

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111) 

Este posibil sau va trebui să configurez syslog etc. pentru a-mi vedea datele de testare?

Comentarii

  • Nu ‘ nu cred că HAProxy se poate conecta la un fișier și bănuiesc că motivul este că scrierea pe disc este o operație de blocare. De ce chiar nu doriți să utilizați syslog? Configurarea nu este atât de complicată. Puteți atribui o facilitate locală HAProxy și puteți configura daemonul dvs. syslog pentru a scrie acele intrări într-un fișier diferit și nu în alte fișiere syslog (sau fluxuri de rețea), dacă nu ‘ nu dorind ca jurnalele HAProxy să nu fie amestecate cu orice altceva.

Răspuns

Haproxy pur și simplu nu acceptă înregistrare în fișiere. După cum se menționează în documentație ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), instrucțiunea „log” ia ca prim parametru un adresa. Dacă acel „fișier, este” un socket unix și HAProxy va vorbi în format syslog la acest socket. Haproxy este conceput astfel deoarece responsabilitatea sa este să solicite proxy, nu să scrie fișiere, delegă scrierea fișierelor jurnal către syslog . Dacă nu doriți să vă încurcați cu mașina dvs., puteți, de exemplu, să instalați logstash și să rulați: logstash -e "input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }" și să adăugați: log /tmp/haprxoy_log.sock În haproxy.cfg pentru a-l testa.

Comentarii

  • Am ‘ primesc ” E: Nu se poate localiza jurnalul pachetului „. A fost eliminat logstash din Ubuntu?
  • @ user568021 pare logstash nu este furnizat în Ubuntu, dar elastic (logstash ‘ s) oferă o sursă apt. De asemenea, logstash este un software java, deci este posibil să îl puteți rula descărcând un fișier jar care îl rulează cu un JRE (care este furnizat de ubuntu)

Răspuns

Puteți modifica fișierul de configurare a jurnalului haproxy în /etc/rsyslog.d/ pentru a indica fișierul către calea care vă place. Nu sunt sigur de alte distribuții. Pentru mine, „folosesc Debian. Am schimbat /etc/rsyslog.d/49-haproxy.conf pentru a indica spre /var/log/haproxy/haproxy.log,

# Create an additional socket in haproxy"s chroot in order to allow logging via # /dev/log to chroot"ed HAProxy processes $AddUnixListenSocket /var/lib/haproxy/dev/log # Send HAProxy messages to a dedicated logfile if $programname startswith "haproxy" then /var/log/haproxy/haproxy.log &~ 

De asemenea, ar trebui să actualizați calea jurnalului din /etc/logrotate.d/haproxy la noua cale. Astfel încât să se rotească și să comprime fișierul jurnal în calea nou configurată utilizând gzip.

Apoi reporniți rsyslog.service.

sudo systemctl restart rsyslog.service 

Acum haproxy.log.* fișierul va fi în directorul /var/log/haproxy/.

Comentarii

  • Cum creez separat jurnal pentru erori precum /var/log/haproxy-errors.log fără a afecta haproxy.log original?

Răspuns

Întrucât versiunea 1.9 HAProxy acceptă înregistrarea la stdout și stderr.

Având în vedere acest lucru, este destul de banal să îl conectați la un fișier.

# change haproxy.cfg file with the following global log stdout local0 debug defaults log global option httplog 

Și apoi poți pur și simplu să rulezi HAProxy astfel:

haproxy -f haproxy.cfg > haproxy.log 2>&1 & 

După cum probabil știi > conducte stdout la fișierul haproxy.log și apoi 2>&1 pipe stderr, de asemenea, în același fișier. Se termină cu & care va pune procesul în fundal.

Puteți deveni mai amatori și puteți încerca să configurați un script pentru a ucide instanța anterioară a haproxy făcând așa ceva:

#!/bin/bash # mini launcher kill -9 `cat /home/user/haproxy.pid` /home/user/haproxy -f /home/haproxy.cfg > /home/user/haproxy.log 2>&1 & echo $! > /home/user/haproxy.pid 

Dur, după cum probabil puteți spune … nerecomandat.

Editare: Conectarea la fișiere a fost un eveniment de blocare și, prin urmare, nu recomandat, special pentru ceva de genul HAProxy. Echipa HAProxy a precizat din plin în postarea de lansare legată mai sus că acest lucru nu mai este nu mai este cazul .

Am primit destul de puțin această solicitare și am petrecut ceva timp planificând cel mai bun mod de a o implementa – fără blocare – și suntem încântați să anunțăm că am a găsit o soluție!

Comentarii

  • de ce conectarea la stdout / err ” nu este recomandat „? aceasta este părerea dvs. sau există documentație oficială cu privire la problemele cu asta?
  • @Florian, aveți dreptate. Am fost înșelat de comportamentul din trecut. Nu blochează recențele recente, astfel propoziția a fost opinivă (și greșită). Am editat răspunsul. Mulțumesc!

Răspuns

Ați încercat să configurați în directorul de acasă al utilizatorului, haproxy nu are permisiunea pentru a accesa directorul de acasă al utilizatorului, astfel încât să cauzeze problema.

Încercați în schimb în altă locație, creați directorul în /var/<directory>

log /var/<directory>/ha.log 

Comentarii

  • Am încercat sudo touch /var/log/ha.log și am adăugat log /var/log/ha.log local0 la configurarea mea, dar am primit aceeași eroare ca mai sus connection refused.
  • În jurnal, de ce dați local0 în cele din urmă?
  • Am încercat să o las, dar când am repornit am primit eroarea 'log' expects <address> and <facility> as arguments. așa că am nevoie de ceva acolo. Conform instrucțiunilor <facility> must be one of the 24 standard syslog facilities (care cred că ar putea face parte din problemă)

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *