Apache naplózás alapjai

az Apache napló rögzíti azokat az eseményeket, amelyeket az Apache webszerver kezelt, beleértve más számítógépek kéréseit, az Apache által küldött válaszokat, valamint az Apache szerverre küldött belső műveleteket. Az útmutató ezen része ismerteti az Apache naplózás alapjait, beleértve az Apache által generált naplótípusokat, azok tárolásának helyét, valamint azok értelmezésének módját. Olyan speciális témákkal is foglalkozunk, mint az egyéni naplóformátumok beállítása, valamint a modulok konfigurálása a gazdagabb adatok eléréséhez.,

az Apache naplók típusai

az Apache kétféle naplót generál: hozzáférési naplók és hibanaplók.

hozzáférési napló

a hozzáférési napló információkat tartalmaz a webszerverbe érkező kérésekről. Ez az információ magában foglalhatja, hogy az emberek milyen oldalakat néznek meg, a kérelmek sikeres állapotát, valamint azt, hogy mennyi ideig tartott a szerver a válaszadásra. Íme egy példa egy tipikus hozzáférési naplóbejegyzésre:

hibanapló

a hibanapló információkat tartalmaz azokról a hibákról, amelyekkel a webszerver a kérelmek feldolgozása során találkozott, például a hiányzó fájlokról., Magában foglalja a szerverrel kapcsolatos diagnosztikai információkat is. Itt van egy példa hibanapló:

 File does not exist: /var/www/favicon.ico

Naplóhelyek

alapértelmezés szerint az Apache a kiszolgálón lévő külön fájlokban tárolja a hozzáférési és hibanapokat. A pontos hely az operációs rendszertől függ., Az operációs rendszer helyét a következő linkekre kattintva találhatja meg:

Debian / Ubuntu / Linux Mint
Redhat / Fedora / CentOS Configuration
OpenSUSE

Apache naplók konfigurálása

az Apache egy jól konfigurálható naplózási keretrendszerrel rendelkezik, amely lehetővé teszi a naplózási viselkedés globális vagy minden virtuális gazdagép esetében történő beállítását. Számos irányelv használható a naplózási viselkedés megváltoztatására. A közös irányelvek közül néhány a naplózási szintről és a naplóformátumról szóló irányelvek, amelyeket részletesebben ismertetünk.,

Log level Directive

The LogLevel directive details the minimum severity level of events that are logged to a specific destination. A súlyossági szint azt mutatja, hogy az esemény mennyire fontos, és az “Emerg” – től a “Trace8” – ig terjedhet, az “Emerg” pedig az instabilitáshoz vezető eseményeket, a” Trace8 ” pedig a nyomkövetési szintű üzeneteket képviseli. Például, LogLevel crit lehetővé teszi naplók “Crit”, “Alert”, “Emerg” súlyosságát keresztül, de figyelmen kívül hagyja az összes többi szinten.,

Log Format

aLogFormat direktíva szabályozza a log események elrendezését és formázását. Az Apache alapértelmezés szerint a Common Log formátumot (CLF) használja, de megadhatja saját formátum karakterláncát az egyes naplókban szereplő mezők megváltoztatásához.

használhatja a CustomLog irányelvet is a naplófájl helyének megváltoztatásához. Linux alatt az Apache gyakran ír naplókat a/var/log /apache2 vagy/var/log / httpd könyvtárakba az operációs rendszertől és a virtuális gazdagép felülírásától függően., Megadhat egy LogFormat karakterláncot is a fájlnév után, amely csak a formátum karakterláncot alkalmazza erre a fájlra.

például a következő konfiguráció naplókat ír a logs/access_log – ra a standard “common” formátum használatával. A naplók / alkönyvtár a ServerRoot direktívában megadott könyvtárhoz viszonyítva:

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common

CustomLog “logs / access_log” common

megtalálható az Apache naplódokumentációban található mezők teljes listája., Javasoljuk, hogy legalább a következő öt mezőt használja, mivel ezek fontosak a szerver egészségének megfigyelésére és a Hibaelhárításra:

  1. %>s – a kérés HTTP állapotkódja. Ez a belső átirányítás után mutatja a végső kérés állapotát; az eredeti állapothoz használja a %s.
  2. %U – a kért URL-elérési utat, kivéve minden további URL-paramétert, például egy lekérdezési karakterláncot.
  3. %a – a kérést benyújtó ügyfél IP-címe., Ez hasznos egy adott forrásból származó forgalom azonosításához.
  4. %T – mennyi ideig tartott a kérés másodpercek alatt történő feldolgozása. Ez hasznos a webhely sebességének mérésére. Használja a %D-t, hogy ugyanazt a mérést mikroszekundumban végezze el.
  5. %{UNIQUE_ID}e – más néven a kérés azonosítója, ez naplóz egy egyedi azonosítót minden kéréssel. Ez hasznos az Apache kérésének a webalkalmazás szerverére történő nyomon követéséhez.,

becenevek hozzárendelése

LogFormat karakterláncok hozzárendelhetők becenevekhez, amelyeket a CustomLog direktívával használhat naplók írásához a megadott formátumban. Ez lehetővé teszi, hogy ugyanazt a naplóformátumot használja több naplófájlhoz anélkül, hogy minden alkalommal újra kellene definiálnia a formátumot. Ez különösen akkor hasznos, ha különböző naplófájlokat használ több virtuális géphez.

például hozzunk létre egy példaformátumot, és nevezzük “vhost_combined” – nek.,”Ezután létrehozunk egy CustomLog irányelvet, amely naplókat ír egy fájlba a vhost_combined formátum használatával.

LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combinedCustomLog /var/log/apache2/vhost.log vhost_combined

formázás JSON

a naplók egyszerű szövegként történő tárolása megkönnyíti a szkennelést abban az esetben, ha valaha is el kell olvasnia a naplófájlokat. Ez azonban megnehezíti az olyan eszközök használatát, mint például a naplókezelő megoldások a naplók olvasásához, mivel ezeknek az eszközöknek tudniuk kell a naplók formázását. A legtöbb naplókezelő megoldás támogatja az alapértelmezett Apache naplóformátumot, de ha nem, akkor fontolóra kell vennie egy olyan strukturált formátum használatát, mint a JSON.,

JSON (rövid JavaScript objektum jelölés) egy rugalmas formátum tárolására strukturált adatok. JSON tárolja gyűjteménye nestable név / érték párok, így tárolja szinte bármilyen adattípus és struktúra. A JSON hatékonyan öndokumentálja is, mivel a kulcs neve leírja a benne lévő adatokat. A JSON számos alapvető adattípust támogat, beleértve a karakterláncokat, számokat, logikai elemeket, tömböket és null értékeket.,

itt van egy példa a LogFormat, amely tárolja naplók JSON formátumban:

LogFormat "{ \"time\":\"%t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }"

alapértelmezett virtuális Host felülírja

virtuális Hosts (vhosts) használják futtatni több mint egy weboldal egyetlen Apache szerveren. Megadhat egy külön naplózási konfigurációt minden egyes vhost számára, amely elsőbbséget élvez a globális naplózási konfigurációval szemben. Ez lehetővé teszi, hogy naplózza az egyes webhelyeket egy külön könyvtárba, például. Ha ezeket a paramétereket kihagyja, az alapértelmezés szerint a globális naplózási konfiguráció lesz.

például a következő konfiguráció egy vhost at példa.,com. A naplókat access.log és error.log /var/www/example.com/logs könyvtár:

a következő szakaszok a különböző Linux disztribúciókban használt alapértelmezett konfigurációs fájlhelyeket és irányelveket mutatják.

Debian / Ubuntu / Linux Mint

A Debian-alapú disztribúciókon a titkosítatlan webhelyek alapértelmezett vhost konfigurációja (80-as port) a /etc/apache2/sites-available/000-default.confcímen található. Az SSL/TLS (port 443) titkosítással titkosított webhelyek alapértelmezett vhost konfigurációja a /etc/apache2/sites-available/default-ssl.conf.,

alapértelmezett Irányelvek táblázata

* kondicionált környezeti változó. Támogatja a több Apache szerver példányok.

** környezeti változó. A kezdeti naplóút dinamikus beállítására szolgál.

Red Hat / Fedora / CentOS

a Red Hat alapú disztribúciókon a fő konfigurációs fájl a /etc/httpd/conf/httpd.confcímen található. További vhost config fájlokat helyezhet el a /etc/httpd/conf.d könyvtárban, amelyet a kiszolgáló automatikusan elolvassa a start-on.

táblázat Az alapértelmezett Irányelvek

* kondicionált betöltött log_config_module.,

** kondicionált betöltött logio_module.

OpenSUSE

az openSUSE-ban a titkosítatlan webhelyek alapértelmezett vhost konfigurációja (80-as port) a /etc/apache2/default-vhost.conf, míg az SSL/TLS-vel titkosított webhelyek alapértelmezett konfigurációja a /etc/apache2/default-vhost-ssl.conf.

táblázat Az alapértelmezett Irányelvek

* kondicionált betöltött log_config_module.

** kondicionált betöltött logio_module.

* * * kondicionált betöltött mod_ssl.,

naplóval kapcsolatos modulok

az Apache webszerver számos modult kínál, amelyek megváltoztatják az Apache működését, vagy kiterjesztik annak képességét. A következő modulok hasznos módon adják hozzá vagy módosítják a naplózási viselkedést.

mod_log_config

Ez az Apache által használt alapnaplózási modul, amelyet az útmutató ezen szakaszában lefedtünk.

mod_log_debug

Ez a modul további lehetőségeket biztosít a hibakeresési üzenetek naplózásához., Például naplózhatja az eseményeket egy adott URL-elérési útra, naplózhatja a kéréseket a feldolgozás után, naplózhatja az üzeneteket egy adott ügyféltől, ha azok időtúllépést eredményeznek stb. Vegye figyelembe, hogy ez a modul kísérleti jellegű, és előfordulhat, hogy nem szerepel az Apache disztribúcióban.

például a következő konfiguráció naplózza az ügyfél IP-címét, amikor egy adott elérési utat kér:

mod_log_forensic

Ez a modul lehetővé teszi a naplózást a kérés feldolgozása előtt és után. Minden bejegyzéshez egyedi azonosító tartozik, amely az események nyomon követésére használható a törvényszéki napló és a normál napló között., A forensic logger azonban nem támogatja az egyéni formátumokat. Ez a modul felülírja a mod_unique_id modult is.

a modul engedélyezése után a forensic kulcsszóval megadhatja, hogy melyik naplófájl az igazságügyi napló. Használhatja a %{forensic-id}mintát más LogFormat karakterláncokban is, hogy törvényszéki adatokat adjon a normál naplókhoz. Itt használjuk a /var/www/example.com/logs/forensic.log:

az igazságügyi napló minden sora ” + “vagy” – ” karakterrel kezdődik., a ” + “jelzi az adott kérés belépési naplóvonalát, a” – ” pedig ugyanazon kérés későbbi bejegyzéseit jelzi.

például a következő bejegyzést a napló által generált hívja http://localhost az alapértelmezett napló formátum:

A befejezés log bejegyzés ugyanabból a kérés jelenik meg:

-3264:55958cb4:0

Ha egy befejezés bejegyzés nem jelenik meg a naplóban, a kérelem nem teljes.

mod_logio

Ez a modul hozzáadja a kérésenként küldött és fogadott bájtok számának naplózását., Ez magában foglalja a beérkezett, elküldött és átadott bájtokat (a kapott és elküldött kombináció). A modul az SSL és TLS titkosítás miatti méretváltozásokat is pontosan elszámolja. Ez a modul mod_log_config-et igényel, és alapértelmezés szerint általában az Apache-ban található.

Ez a modul hozzáadja a LogIOTrackTTFB On|Off irányelvet, amely átkapcsolja az idő nyomon követésének képességét az első bájtra (TTFB). TTFB az az idő, amikor a kérelem érkezik, amikor a válasz először küldött az ügyfélnek., Ezután használhatja a %^FB a ttfb mérést egy LogFormat karakterláncba.

mod_filter

Ez a modul kontextusérzékeny szűrőket biztosít a kimeneti lánchoz tetszőleges számú szűrőszolgáltató regisztrálásával. a mod_filter nem specifikus a naplózásra, de lehetővé teszi bizonyos kérések kibontását a szűrőszolgáltató alapján. A context containers tartalmazza: fő apache config, vhost config, belül könyvtár címkék, és .htaccess fájlok.,

ennek a modulnak a használata lehetővé teszi az olyan elemeket tartalmazó kérelmek szűrését, mint például bizonyos befecskendezési kritériumok, valamint hogy melyik IP-címről származik.

Ez a modul alapértelmezés szerint számos csomag disztribúcióban rendelkezésre áll, de engedélyezésre lehet szükség. A naplózás céljából a FilterTrace irányelv információkat tesz közzé a hibanaplóban.,li> FilterDeclare – kijelenti, intelligens szűrő

  • FilterProtocol – okoz-a mod_filter kezelni válasz fejlécek helyesen
  • FilterProvider – nyilvántartások szűrő szolgáltatók
  • FilterTrace – lehetővé teszi, hogy a hibakeresés/diagnosztikai információ, hogy a hiba napló előtt a szolgáltató feldolgozási
  • A következő példa vonatkozik a szűrés a vhost összefüggésben konténer feltételesen a filter modulok a következők:

    mod_unique_id:

    Ez a modul konstrukciók egy környezeti változót, valamint egy egyedi azonosítót minden kérést., Gyakran szerepel a csomag disztribúciókban, de engedélyezésre lehet szükség. Ez az egyedi azonosító a hozzáférési naplóba van írva.

    ezt a mod_log_forensic felülírta törvényszéki célokra, de mások számára továbbra is támogatott.

    a törvényszéki azonosítóval ellentétben az egyedi azonosítót az UNIQUE_ID környezeti változón keresztül továbbítják az alkalmazáskezelőnek. Ez lehetővé teszi az alkalmazásfejlesztők számára, hogy nyomon kövessék a kérést a webkiszolgálón keresztül az alkalmazáskiszolgálóra. Hasznos lehet egy kérés hibakereséséhez.,

    az Apache elindítja a gyermekfolyamatokat a kérések kezelésére, egy gyermekpéldány pedig egyszerre több kérést dolgoz fel. Ennek eredményeként néha kívánatos egy egyedi azonosítót használni egy kérés azonosítására több szerverpéldányon és gyermekfolyamaton keresztül.

    Ha engedélyezve van, a modul alapértelmezés szerint azonosítót ad az alkalmazáskezelőnek.,

    példa:

    UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA

    Az azonosító épített egy 32 bites IP cím, 32 bites process ID, 32 bites timestamp, amelyhez egy 16 bites számláló szigorúbb felbontású, mint egy single-második, 32 bites szál index. Az időbélyeg komponens UTC, hogy megakadályozza a nyári időszámítás módosításával kapcsolatos problémákat. Az alkalmazáskezelőnek az azonosítót csak átlátszatlan tokenként kell kezelnie, nem pedig összetevőkre bontva.

    lásd. Elemezze. Vizsgálja meg. Oldja meg

    nézze meg, mi számít.

    ingyenes próbaverzió indítása

    Vélemény, hozzászólás?

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

    Tovább az eszköztárra