Olen juuri asentanut haproxy omaan testipalvelin.

Onko olemassa tapaa, jolla se kirjoitettaisiin lokit paikalliseen tiedostoon syslogin sijaan?

Tämä on vain testausta varten, joten en halua aloittaa avaamista portit / syslogin sekoittaminen kaikilla testitiedoillani.

Valitettavasti ainoat löydetyt tiedot liittyvät kaikki kirjautumiseen syslog-palvelimelle.

Yritin käyttää tätä:

log /home/user/ha.log local0 

asetuksissani. Mutta se kertoi minulle:

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

Kun aloitin uudestaan. Joten loin tiedoston tiedostolla touch /home/user/ha.log ja aloitin uudelleen missä vaiheessa sain:

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

Onko tämä mahdollista, vai onko minun määritettävä syslog jne., jotta voin nähdä testitietoni?

Kommentit

  • En ' t luulevat HAProxy voi kirjautua tiedostoon, ja epäilen syyn tähän on, että levylle kirjoittaminen on estotoiminto. Miksi oikeastaan et halua käyttää syslogia? Config ei ole kovin hankalaa. Voit määrittää paikallisen palvelun HAProxylle ja määrittää syslog-demonisi kirjoittamaan kyseiset merkinnät toiseen tiedostoon, ei muihin syslog-tiedostoihin (tai verkkovirtoihin), jos ' et ole HAProxy-lokien ei tarvitse sekoittua kaikkeen muuhun.

Vastaa

Haproxy ei yksinkertaisesti tue ” kirjaaminen tiedostoihin. Kuten dokumentaatiossa ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ) todetaan, ”loki” -lauseke ottaa ensimmäisen parametrin osoite. Jos tuo ”sa-tiedosto”, se on unix-liitäntä ja HAProxy puhuu syslog-muodossa tässä liitännässä. Haproxy on suunniteltu näin, koska sen vastuu on välityspalvelinpyyntöihin, ei tiedostojen kirjoittamiseen. . Jos et halua sotkea koneesi kanssa, voit esimerkiksi asentaa lokikortin ja suorittaa: logstash -e "input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }" ja lisätä: log /tmp/haprxoy_log.sock sinun haproxy.cfg testata sitä.

Kommentit

  • I ' m hakemassa " E: Pakettilokia ei löydy ". Poistettiinko logstash ubuntuista?
  • @ user568021 näyttää siltä, että logstash ei ole Ubuntu, mutta elastinen (logstash ' s ylläpitäjä) tarjoaa apt-lähteen. Lisäksi logstash on Java-ohjelmisto, joten voit ehkä suorittaa sen lataamalla jar-tiedoston, joka käyttää sitä JRE: llä (jonka tarjoaa ubuntu).

Vastaa

Voit muuttaa haproksi-lokin määritystiedoston /etc/rsyslog.d/ -kohdassa osoittamaan tiedoston haluamallesi polulle. Et ole varma muusta jakelusta. Minulle ”käytän Debiania. Muutin /etc/rsyslog.d/49-haproxy.conf osoittamaan kohtaan /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 &~ 

Päivitä myös lokin polku kohdassa /etc/logrotate.d/haproxy uuteen polkuun. Jotta se kiertäisi ja pakkaa lokitiedostoa äskettäin määritetyllä polulla gzip.

Käynnistä sitten rsyslog.service uudelleen.

sudo systemctl restart rsyslog.service 

Nyt haproxy.log.* -tiedosto on hakemistossa /var/log/haproxy/.

Kommentit

  • Kuinka luon erillisen kirjaa virheitä, kuten /var/log/haproxy-errors.log, vaikuttamatta alkuperäiseen haproxy.logiin?

Vastaa

Koska versio 1.9 HAProxy tukee kirjaamista stdout ja stderr.

Tässä mielessä on melko triviaalia siirtää se tiedostoon.

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

Ja sitten voit yksinkertaisesti suorittaa HAProxyn näin:

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

Kuten luultavasti tiedät > -putket stdout tiedostoon haproxy.log ja sitten 2>&1 putket stderr myös samaan tiedostoon. Se päättyy tekstiin &, joka asettaa prosessin taustalle.

Voit saada faneja ja yrittää asettaa komentosarjan tappaaksesi edellisen haproxy tekemällä jotain tällaista:

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

Kova, kuten luultavasti voit sanoa … ei suositella.

Muokkaa: Tiedostoihin kirjautuminen oli aiemmin estotapahtuma, joten ei suositellaan erityisesti HAProxy-kaltaiselle. HAProxy-tiimi teki yllättä linkitetyssä julkaisutekstissä täysin selväksi, että tämä ei ole ole enää asia .

Olemme saaneet tämän pyynnön melko vähän ja olemme käyttäneet jonkin aikaa suunnitellessamme parhaan tavan toteuttaa se – estämättä – ja olemme iloisia voidessamme ilmoittaa, että olemme löysi ratkaisun!

Kommentit

  • miksi kirjaudutaan osoitteeseen stdout / err " ei suositella "? onko tämä mielipiteesi vai onko virallisia asiakirjoja ongelmista?
  • @Florian, olet oikeassa. Aiempi käyttäytyminen johti minuun väärin. Se ei estä viimeaikaisia julkaisuja, joten lause oli mielipiteellinen (ja väärä). Muokkasin vastausta. Kiitos!

Vastaa

Olet yrittänyt määrittää käyttäjän kotihakemistossa, haproksilla ei ole lupaa päästäksesi käyttäjän kotihakemistoon, mikä aiheuttaa ongelman.

Yritä sen sijaan muussa paikassa, luo hakemisto /var/<directory>

log /var/<directory>/ha.log 

Kommentit

  • Yritin sudo touch /var/log/ha.log ja lisäsin log /var/log/ha.log local0 määritykseeni, mutta sain saman virheen kuin yllä connection refused.
  • Lokissa miksi annat lopuksi local0?
  • Yritin jättää sen pois, mutta kun käynnistin uudelleen, sain virheen 'log' expects <address> and <facility> as arguments., joten tarvitsin jotain siellä. Ohjeiden mukaan <facility> must be one of the 24 standard syslog facilities (mikä voi mielestäni olla osa ongelmaa)

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *