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
Nå 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 tillog /var/log/ha.log local0
til konfigurasjonen min, men fikk den samme feilen som ovenforconnection 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)