Ik “heb zojuist haproxy geïnstalleerd op mijn testserver.

Is er een manier om het zijn logboeken naar een lokaal bestand te laten schrijven in plaats van naar syslog?

Dit is alleen voor testen, dus ik wil niet beginnen met openen ports / syslog vol te proppen met al mijn testgegevens.

Helaas draait de enige informatie die ik allemaal kan vinden om inloggen op een syslog-server.

Ik heb geprobeerd om:

log /home/user/ha.log local0 

in mijn configuratie. Maar dat vertelde me:

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

Toen ik opnieuw opstartte. Dus ik heb het bestand gemaakt met touch /home/user/ha.log en opnieuw gestart op welk punt ik kreeg:

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

Is dit mogelijk, of moet ik syslog etc. configureren om mijn testgegevens te zien?

Reacties

  • Ik don ‘ Ik denk niet dat HAProxy in een bestand kan loggen, en ik vermoed dat de reden hiervoor is dat schrijven naar schijf een blokkerende bewerking is. Waarom wil je echt syslog niet gebruiken? Config is niet zo lastig. U kunt een lokale faciliteit aan HAProxy toewijzen en uw syslog-daemon configureren om die items naar een ander bestand te schrijven, en niet naar andere syslog-bestanden (of netwerkstreams), als u ‘ niet willen dat de HAProxy-logboeken niet met al het andere worden gemengd.

Answer

Haproxy ondersteunt eenvoudigweg niet logboekregistratie naar bestanden. Zoals vermeld in de documentatie ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), neemt de instructie “log” als eerste parameter een adres. Als dat “een bestand is, is het een unix-socket en HAProxy spreekt in de syslog-indeling met deze socket. Haproxy is zo ontworpen omdat het verantwoordelijk is voor proxyverzoeken, niet voor het schrijven van bestanden, het delegeert het schrijven van logbestanden naar syslog . Als u niet met uw machine wilt rotzooien, kunt u bijvoorbeeld logstash installeren en uitvoeren: logstash -e "input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }" en toevoegen: log /tmp/haprxoy_log.sock In uw haproxy.cfg om het te testen.

Reacties

  • Ik ‘ m krijg ” E: Kan pakketlogstash niet vinden “. Is logstash verwijderd uit ubuntu?
  • @ user568021 lijkt logstash niet in ubuntu aanwezig te zijn, maar elastic (logstash ‘ s onderhouder) biedt een geschikte bron. Logstash is ook een Java-software, dus u kunt het mogelijk uitvoeren door een jar-bestand te downloaden en het uit te voeren met een JRE (die wordt geleverd door ubuntu)

Antwoord

U kunt het haproxy-logconfiguratiebestand wijzigen onder /etc/rsyslog.d/ om het bestand naar het gewenste pad te laten verwijzen. Niet zeker over andere distributie. Voor mij “gebruik ik Debian. Ik heb /etc/rsyslog.d/49-haproxy.conf gewijzigd zodat het verwijst naar /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 &~ 

U dient ook het logboekpad in /etc/logrotate.d/haproxy bij te werken naar het nieuwe pad. Zodat het het logbestand in een nieuw geconfigureerd pad roteert en comprimeert met gzip.

Start rsyslog.service opnieuw.

sudo systemctl restart rsyslog.service 

Nu haproxy.log.* -bestand bevindt zich in de /var/log/haproxy/ -directory.

Opmerkingen

  • Hoe maak ik aparte log voor fouten zoals /var/log/haproxy-errors.log zonder de originele haproxy.log te beïnvloeden?

Antwoord

Sinds versie 1.9 ondersteunt HAProxy logboekregistratie naar stdout en stderr.

Met dat in gedachten is het vrij triviaal om het naar een bestand te pipen.

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

En dan kun je HAProxy gewoon als volgt draaien:

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

Zoals je waarschijnlijk weet > pipes stdout naar het bestand haproxy.log en vervolgens 2>&1 leidingen stderr ook naar hetzelfde bestand. Het eindigt met & die het proces op de achtergrond plaatst.

Je kunt liefhebber worden en proberen een script in te stellen om het vorige exemplaar van haproxy door zoiets als dit te doen:

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

Moeilijk, zoals je waarschijnlijk kunt zien … niet aanbevolen.

Bewerken: inloggen op bestanden was vroeger een blokkerende gebeurtenis en dus niet aanbevolen, speciaal voor zoiets als HAProxy. Het HAProxy-team heeft op de release-post die hierboven is gelinkt overduidelijk gemaakt dat dit niet meer het geval is .

We hebben dit verzoek nogal wat ontvangen en hebben enige tijd besteed aan het plannen van de beste manier om het te implementeren, zonder te blokkeren, en we zijn verheugd aan te kondigen dat we een oplossing gevonden!

Reacties

  • waarom logt in op stdout / err ” niet aanbevolen “? is dit jouw mening of is er officiële documentatie over problemen hiermee?
  • @Florian, je hebt gelijk. Ik was misleid door gedrag uit het verleden. Het blokkeert niet op recente releases, dus de zin was opiniërend (en onjuist). Bewerkte het antwoord. Bedankt!

Answer

Je hebt geprobeerd om te configureren in de homedirectory van de gebruiker, haproxy heeft geen toestemming om toegang te krijgen tot de homedirectory van de gebruiker, zodat het probleem wordt veroorzaakt.

Probeer in plaats daarvan op een andere locatie, maak een directory aan in /var/<directory>

log /var/<directory>/ha.log 

Reacties

  • Ik heb sudo touch /var/log/ha.log geprobeerd en log /var/log/ha.log local0 naar mijn configuratie, maar kreeg dezelfde fout als hierboven connection refused.
  • Waarom geef je in het logboek uiteindelijk local0 op?
  • Ik heb geprobeerd het weg te laten, maar toen ik opnieuw opstartte, kreeg ik de fout 'log' expects <address> and <facility> as arguments., dus er was iets nodig. Volgens de instructies <facility> must be one of the 24 standard syslog facilities (waarvan ik denk dat dit een deel van het probleem kan zijn)

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *