Skip to content
Menu
CDhistory
CDhistory

HAProxy naplózás Syslog használatával

Posted on augusztus 21, 2021 by admin

Sok minden történhet, amikor egy felhasználó egy weboldalra lép. Még az is előfordul, hogy a felhasználói kérések nem érik el a kiszolgálót, ami esetleg azt a hamis pozitív jelzést adja, hogy minden rendben van. Régen elmúltak már azok az idők, amikor egy weboldal csak egy szervert használt. A mai elosztott világban sok szerver áll egy terheléselosztó mögött, amely elosztja a webhely felhasználói terhelését.

Honnan tudhatja tehát, hogy minden zökkenőmentesen működik-e a felhasználók és a szerverek között? A terheléselosztók és az olyan proxy-kiszolgálók, mint a HAProxy által kibocsátott naplók más perspektívát adnak. Ezekből megtudhatja például, hogy mennyi időt vesznek igénybe a felhasználói kérések, és hány kérés sikertelen. Ez az információ értékes, és több támpontot adhat, amikor éles környezetben orvosolja az incidenseket.

A mai bejegyzésben röviden ismertetem, hogyan működik a naplózás a HAProxyban, hogyan működik a naplózás konfigurálása, hogyan kell feldolgozni a naplókat, és hogyan kerülheti el, hogy a nagyméretű naplófájlok miatt kifogyjon a tárhely a szerverein.

  • Hogyan működik a naplózás a HAProxyban?
  • Naplózás konfigurálása Sysloghoz
  • Back-End szerverek konfigurálása
  • Rotate Logs With Logrotate
  • Következtetés

Hogyan működik a naplózás a HAProxyban?

A HAProxy telepítésekor beállíthatja, hogyan szeretne dolgozni az eszköz által rögzített naplókkal. Beállíthatja például, hogy a HAProxy egyszerre küldjön naplókat különböző helyekre. Lehet, hogy az egyik csapatnak valós időben kell megkapnia a naplókat, egy másik pedig a naplókat egy múltbeli tendencia azonosítására használhatja. Alternatív megoldásként egyszerűen más helyre, például egy központosított naplótárolási megoldáshoz hasonlóan máshová szeretné áthelyezni a naplókat.

Típusosan, amikor egy eszköz naplózását konfigurálja, a naplókat egy helyi lemezen szeretné rögzíteni. Egy olyan forgatókönyvben azonban, ahol sok naplóírási művelet lesz, ez kontraproduktív lehet. A teljesítmény romolhat, és előfordulhat, hogy a naplók egy része kimarad. A HAProxy alapértelmezés szerint úgy van konfigurálva, hogy a naplókat egy foglalatba írja, mivel ez gyorsabb, mint a naplók hálózaton keresztül történő elküldése vagy a közvetlen fájlba írás.

A HAProxy dokumentációjában van egy szakasz, amely részletesebben foglalkozik a naplózással. Ha már megismerte az alapokat ebből a bejegyzésből, gyorsan elmélyedhet más témákban, például a cookie-k vagy a HTTP fejlécek rögzítésében. Még azt is beállíthatja, hogy milyen típusú vagy terjedelmű naplókat szeretne látni.

Ha még nem tette meg, telepítse a HAProxy-t. Ubuntuban ezt így teheti meg:

$ sudo apt-get install haproxy$ haproxy -vHA-Proxy version 1.8.8-1ubuntu0.11 2020/06/22Copyright 2000-2018 Willy Tarreau <[email protected]>

Naplózás konfigurálása Sysloghoz

A HAProxy konfigurációs fájlban alapértelmezés szerint két szakasz van: a globális és az alapértelmezett. A globális szakaszban olyan alacsony szintű funkciókat konfigurálhat, mint a biztonság, a teljesítmény és a naplózási célpontok. A defaults szakaszban vannak azok a beállítások, amelyek az összes többi alábbi proxy-szekcióra, például a front endre és a back endre vonatkoznak. A cél az ismétlések elkerülése. A HAProxy weboldalán található bejegyzés részletesebben ismerteti az egyes szakaszokat, de esetünkben a globális és a defaults szakaszok elegendőek.

Az alapértelmezett konfigurációs fájlban (/etc/haproxy/haproxy.cfg) valami ilyesmi van a naplózáshoz:

global log /dev/log local0 log /dev/log local1 notice # ... other properties not included heredefaults log global # ... other properties not included here

Ha megnézzük a “/dev/log/” könyvtárat, akkor egy szimbolikus linket látunk a systemd naplójára, ami azt jelenti, hogy a naplókat a syslogba küldjük:

$ ls -la /dev/loglrwxrwxrwx 1 root root 28 Aug 21 22:37 /dev/log -> /run/systemd/journal/dev-log

A legújabb verziók, mint az Ubuntu 18.04, már telepítve van az rsyslog. Ellenkező esetben a “sudo apt install -y rsyslog” parancs futtatásával kell telepítenie a szerverén. Ezután nézd meg a konfigurációt az rsyslog mappában. Az én esetemben így néz ki:

 ls -la /etc/rsyslog.d/total 24drwxr-xr-x 2 root root 4096 Aug 21 22:41 .drwxr-xr-x 90 root root 4096 Aug 21 22:41 ..-rw-r--r-- 1 root root 314 Aug 15 2017 20-ufw.conf-rw-r--r-- 1 root root 255 Jun 3 02:08 21-cloudinit.conf-rw-r--r-- 1 root root 282 Jun 22 08:41 49-haproxy.conf-rw-r--r-- 1 root root 1124 Jan 30 2018 50-default.conf

Nézd meg, hogy van egy “49-haproxy.conf” nevű fájl, ahol a HAProxy naplózás konfigurációja található. Ha nem lát ilyen fájlt, hozza létre. Itt van az alapértelmezett tartalom:

$ cat /etc/rsyslog.d/49-haproxy.conf# 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 logfileif $programname startswith 'haproxy' then /var/log/haproxy.log&~

Láthatod, hogy a naplófájlok a /var/log/haproxy.log fájlba fognak íródni. Onnan már a te feladatod, hogy csinálj valamit ezekkel a naplókkal. Előfordulhat azonban, hogy újra kell indítanod az rsyslogot és a HAProxy-t, mielőtt láthatsz néhány naplót. Ezt a következő parancsok futtatásával teheti meg:

sudo service rsyslog restartsudo service haproxy restart

Mindenesetre legalább néhány kezdeti naplót látnia kell, így:

$ cat /var/log/haproxy.logAug 21 22:42:44 ip-172-31-43-203 haproxy: 233/154135 (1814) : Exiting Master process...Aug 21 22:42:44 ip-172-31-43-203 haproxy: 233/154135 (1814) : Current worker 1815 exited with code 143Aug 21 22:42:44 ip-172-31-43-203 haproxy: 233/154135 (1814) : All workers exited. Exiting... (143)

Most, hogy vannak naplófájlok, itt az ideje, hogy csináljon velük valamit. Nem számít, hogy milyen eszközt használsz a haproxy.log fájlból származó naplófájlok feldolgozására. Választhat például egy olyan eszközt, mint a SolarWinds® Loggly®, amelynek van egy ügynöke is a naplók feldolgozására és automatikus elküldésére a Loggly-nak.

Back-End szerverek konfigurálása

Ha szeretné kipróbálni, hogyan működik a naplózás alapértelmezés szerint, ha több proxyt ad hozzá, akkor ezt megteheti, ha a haproxy végéhez hozzáad egy olyan konfigurációt, mint a következő.conf file:

backend webserversbalance roundrobinserver webserver1 Your-Webserver1-IP:80 checkserver webserver2 Your-Webserver2-IP:80 checkoption httpchk

A “Your-Webserver1-IP” és “Your-Webserver2-IP” helyett a forgalmat átirányítani kívánt szerverek IP-címét írja be. Mentse a módosításokat, és indítsa újra a HAProxy szolgáltatást. Vegye észre, hogy a back-end proxy szakaszban nem kellett naplózási konfigurációt megadnunk. Most már képesnek kell lennie arra, hogy a HAProxy-n keresztül forgalmat küldjön ezekre a back-end szerverekre, és a naplók automatikusan a haproxy.log fájlba kerülnek.

Rotate Logs With Logrotate

Végül, mint jó polgároknak, gondoskodnunk kell arról, hogy a haproxy.log ne eméssze fel az összes szervertárolót. Ehhez használhatjuk a logrotate-ot. Az én esetemben alapértelmezetten telepítve van, de a következő paranccsal is telepítheted:

sudo apt-get install logrotate

Ezután egy olyan konfigurációs fájlod lesz, mint a következő a haproxy.log fájl megtisztításához és tömörítéséhez:

cat /etc/logrotate.d/haproxy/var/log/haproxy.log { daily rotate 52 missingok notifempty compress delaycompress postrotate invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true endscript}

A fenti konfiguráció használata esetén a logrotate minden nap alkalmazni fogja ezt a szabályt, megtartva minden 52 napos vagy újabb naplót. A rotált fájlokat gzip formátumba is tömöríti. Nem kell aggódnia amiatt, hogy túl sok naplófájl van a szerveren – a logrotate eltávolítja a régebbi fájlokat. Ezzel az egyszerű beállítással elkerülheti, hogy az éjszaka közepén fel kelljen ébrednie a naplók eltávolításához. Remekül hangzik, igaz?

Hogy megbizonyosodjon arról, hogy a konfiguráció működik, indítsa újra a HAProxy-t és az rsyslogot:

sudo service rsyslog restartsudo service haproxy restart

Következtetés

A HAProxy által biztosított naplózási opcióknak csak a felszínét karcoltam. Folytathatod a hivatalos dokumentációban. Van egy kiváló bejegyzés a HAProxy blogon is, amely mélyebben belemegy abba, hogyan lehet megváltoztatni a naplózás formátumát, és még abba is, hogyan lehet profiling metrikákat kapni.

Megjegyzem, hogy egy Ubuntu 18.04-es szervert használtam az AWS-ben, és az itt tárgyalt konfigurációk többsége alapértelmezés szerint ott van. Nem minden szerver lesz így, de legalább most már tudod, hogyan működik a naplózás a HAProxyban, és hol vannak ezek a konfigurációk, így szükség esetén módosíthatod őket. Boldog naplózást!

Vélemény, hozzászólás? Kilépés a válaszból

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Legutóbbi bejegyzések

  • Az Acela visszatért: New York vagy Boston 99 dollárért
  • OMIM bejegyzés – # 608363 – CHROMOSOME 22q11.2 DUPLICATION SYNDROME
  • Kate Albrecht szülei – Tudj meg többet apjáról Chris Albrechtről és anyjáról Annie Albrechtről
  • Temple Fork Outfitters
  • Burr (regény)

Archívum

  • 2022 február
  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember
  • 2021 augusztus
  • 2021 július
  • 2021 június
  • 2021 május
  • 2021 április
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語
©2022 CDhistory | Powered by WordPress & Superb Themes