HAProxy supporta la registrazione in un file?


14

Ho appena installato haproxy sul mio server di prova.

C'è un modo per farlo scrivere i suoi log in un file locale, piuttosto che syslog?

Questo è solo per i test, quindi non voglio iniziare ad aprire porte / ingombrare syslog con tutti i miei dati di test.

Sfortunatamente, le uniche informazioni che posso trovare sono tutte relative alla registrazione su un server syslog.

Ho provato a usare:

log /home/user/ha.log local0

nella mia configurazione. Ma questo mi ha detto:

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

Quando ho riavviato. Quindi ho creato il file touch /home/user/ha.loge riavviato a quel punto ho ottenuto:

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

È possibile o dovrò configurare syslog ecc. Per vedere i miei dati di test?


2
Non penso che HAProxy possa accedere a un file e sospetto che la ragione sia che le scritture su disco sono un'operazione di blocco. Perché davvero non vuoi usare syslog? La configurazione non è poi così difficile. È possibile assegnare una funzione locale a HAProxy e configurare il demone syslog per scrivere quelle voci in un file diverso e non in altri file syslog (o flussi di rete), se non si desidera che i log HAProxy non vengano mescolati con tutto altro.
Michael - sqlbot

Risposte:


14

Haproxy semplicemente non supporta la registrazione in file. Come indicato nella documentazione ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), l'istruzione "log" accetta come primo parametro un indirizzo. Se questo è un file, è un socket unix e HAProxy parlerà nel formato syslog a questo socket. Haproxy è progettato in questo modo perché ha la responsabilità delle richieste proxy, non della scrittura di file, delega la scrittura dei file di registro a syslog. Se non vuoi fare confusione con il tuo computer, ad esempio puoi installare logstash ed eseguire: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' e aggiungere: log /tmp/haprxoy_log.sock nel tuo haproxy.cfg per testarlo.


Ricevo "E: impossibile trovare il logstash del pacchetto". Logstash è stato rimosso da Ubuntu?
user568021

@ user568021 sembra che logstash non sia fornito in Ubuntu, ma elastic (il manutentore di logstash) fornisce una fonte apt. Inoltre, logstash è un software java, quindi potresti essere in grado di eseguirlo scaricando un file jar eseguendolo con un JRE (che è fornito da Ubuntu)
user801247

7

È possibile modificare il file di configurazione del registro haproxy in modo /etc/rsyslog.d/da puntare il file sul percorso desiderato. Non sono sicuro dell'altra distribuzione. Per me sto usando Debian. Ho cambiato /etc/rsyslog.d/49-haproxy.confper indicare /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
&~

È inoltre necessario aggiornare il percorso di accesso /etc/logrotate.d/haproxyal nuovo percorso. In modo che ruoti e comprima il file di registro nel percorso appena configurato utilizzando gzip.

Quindi riavviare rsyslog.service.

sudo systemctl restart rsyslog.service

Ora il haproxy.log.*file sarà nella /var/log/haproxy/directory.


Come faccio a creare un registro separato per errori come /var/log/haproxy-errors.log senza influire sul file haproxy.log originale?
Khurshid Alam,

0

Hai provato a configurare nella home directory dell'utente, haproxy non ha i permessi per accedere alla home directory dell'utente, quindi ciò causa problemi.

Prova invece in un'altra posizione, crea la directory in /var/<directory>

log /var/<directory>/ha.log

2
Ho provato sudo touch /var/log/ha.loge aggiunto log /var/log/ha.log local0alla mia configurazione, ma ho ottenuto lo stesso errore di cui sopra connection refused.
IGGt

Nel log perché alla fine stai dando local0?
KKD

1
Ho provato a lasciarlo fuori, ma quando ho riavviato ho ricevuto l'errore, 'log' expects <address> and <facility> as arguments.quindi ho richiesto qualcosa lì. Secondo le istruzioni <facility> must be one of the 24 standard syslog facilities(che penso possano far parte del problema)
IGGt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.