Jeg har nettopp installert haproxy på min testserver.

Er det en måte å få den til å skrive loggene til en lokal fil, i stedet for syslog?

Dette er bare for testing, så jeg vil ikke begynne å åpne porter / rot på syslog med alle testdataene mine.

Dessverre, den eneste informasjonen jeg kan finne, dreier seg om å logge på en syslog-server.

Jeg prøvde å bruke:

log /home/user/ha.log local0 

i konfigurasjonen min. Men det fortalte meg:

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

Da jeg startet på nytt. Så jeg opprettet filen med touch /home/user/ha.log og startet på nytt da jeg fikk:

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

Er dette mulig, eller må jeg konfigurere syslog osv. for å se testdataene mine?

Kommentarer

  • Jeg don ' t tror HAProxy kan logge på en fil, og jeg mistenker at årsaken til dette er at skriving til disk er en blokkeringsoperasjon. Hvorfor vil du virkelig ikke bruke syslog? Config er ikke så vanskelig. Du kan tilordne et lokalt anlegg til HAProxy og konfigurere syslog-demonen din til å skrive disse oppføringene til en annen fil, og ikke til andre syslog-filer (eller nettverksstrømmer), hvis du ' ikke ønsker at HAProxy-loggene ikke skal blandes inn med alt annet.

Svar

Haproxy støtter ganske enkelt ikke logge til filer. Som det fremgår av dokumentasjonen ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), tar «log» -utsagnet som første parameter en adresse. Hvis den «sa-filen, den» er en unix-kontakt og HAProxy vil snakke i syslog-formatet til denne kontakten. Haproxy er utformet slik dette fordi dens ansvar er å proxy-forespørsler, ikke skrive filer, delegerer den skriving av loggfiler til syslog . Hvis du ikke vil rote med maskinen din, kan du for eksempel installere logstash og kjøre: logstash -e "input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }" og legge til: log /tmp/haprxoy_log.sock I haproxy.cfg for å teste det.

Kommentarer

  • Jeg ' Jeg får " E: Kan ikke finne pakke logstash ". Ble logstash fjernet fra ubuntu?
  • @ user568021 synes logstash ikke er gitt i ubuntu, men elastisk (logstash ' s vedlikeholder) gir en passende kilde. Logstash er også en java-programvare, så du kan kanskje kjøre den ved å laste ned en jar-fil som kjører den med en JRE (som leveres av ubuntu)

Svar

Du kan endre konfigurasjonsfilen for haproxy-logg under /etc/rsyslog.d/ for å peke filen mot banen du liker. Ikke sikker på om annen distribusjon. For meg bruker jeg Debian. Jeg endret /etc/rsyslog.d/49-haproxy.conf for å peke på /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 &~ 

Du bør også oppdatere loggbanen i /etc/logrotate.d/haproxy til den nye banen. Slik at den roterer og komprimerer loggfilen i nylig konfigurert sti ved hjelp av gzip.

Start deretter på nytt rsyslog.service.

sudo systemctl restart rsyslog.service 

haproxy.log.* -filen vil være i /var/log/haproxy/ -katalogen.

Kommentarer

  • Hvordan lager jeg separat logg på feil som /var/log/haproxy-errors.log uten å påvirke den opprinnelige haproxy.log?

Svar

Siden versjon 1.9 støtter HAProxy logging til stdout og stderr.

Med tanke på det er det ganske trivielt å pipe det til en fil.

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

Og så kan du bare kjøre HAProxy slik:

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

Som du sikkert vet > rør stdout til filen haproxy.log og deretter 2>&1 rør stderr også til samme fil. Det ender med & som vil sette prosessen i bakgrunnen.

Du kan bli bedre og prøve å sette opp et skript for å drepe den forrige forekomsten av haproxy ved å gjøre noe som dette:

#!/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 

Tøft, som du sikkert kan fortelle … anbefales ikke.

Rediger: Logging til filer pleide å være en blokkerende hendelse og dermed ikke anbefalt, spesielt for noe sånt som HAProxy. HAProxy-teamet gjorde det klart på utgivelsesposten lenket ovenfor at dette ikke er tilfelle lenger .

Vi har mottatt denne forespørselen ganske mye og har brukt litt tid på å planlegge den beste måten å implementere den på – uten å blokkere – og vi er glade for å kunngjøre at vi har fant en løsning!

Kommentarer

  • hvorfor logger du på stdout / err " anbefales ikke "? er dette din mening, eller er det offisiell dokumentasjon om problemer med det?
  • @Florian, har du rett. Jeg ble villedet av tidligere oppførsel. Det blokkerer ikke for nylige utgivelser, så setningen var meningsfull (og feil). Redigerte svaret. Takk!

Svar

Du har prøvd å konfigurere i brukerens hjemmekatalog, haproxy har ikke tillatelse for å få tilgang til brukerens hjemmekatalog, slik at problemet oppstår.

I stedet prøv et annet sted, opprett katalog i /var/<directory>

log /var/<directory>/ha.log 

Kommentarer

  • Jeg prøvde sudo touch /var/log/ha.log og la til log /var/log/ha.log local0 til konfigurasjonen min, men fikk den samme feilen som ovenfor connection refused.
  • I logg hvorfor gir du local0 til slutt?
  • Jeg prøvde å utelate det, men da jeg startet på nytt, fikk jeg feilen 'log' expects <address> and <facility> as arguments. så krevde noe der. I henhold til instruksjonene <facility> must be one of the 24 standard syslog facilities (som jeg tror kan være en del av problemet)

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *