protokol Apache zaznamenává události, které byly zpracovány webovým serverem Apache, včetně požadavků z jiných počítačů,odpovědí zaslaných Apache a akcí Interních na server Apache. Tato část průvodce vysvětluje základy protokolování Apache včetně typů protokolů generovaných Apache, kde jsou uloženy a jak je interpretovat. Budeme se také zabývat pokročilými tématy, jako je nastavení vlastních formátů protokolu a konfigurace modulů pro získání bohatších dat.,
typy protokolů Apache
Apache generuje dva druhy protokolů: protokoly přístupu a protokoly chyb.
protokol přístupu
protokol přístupu obsahuje informace o požadavcích přicházejících na webový server. Tyto informace mohou zahrnovat, jaké stránky lidé prohlížejí, stav úspěšnosti požadavků a jak dlouho server reagoval. Zde je příklad typického přístupu položka protokolu:
Chyba Přihlášení
protokol chyb obsahuje informace o chyby web serveru došlo při zpracování žádosti, jako jsou chybějící soubory., Obsahuje také diagnostické informace o samotném serveru. Zde je příklad protokolu chyb:
File does not exist: /var/www/favicon.ico
umístění protokolu
ve výchozím nastavení Apache ukládá přístupové a chybové protokoly do samostatných souborů na serveru. Přesné umístění závisí na vašem operačním systému., Můžete najít umístění pro váš operační systém kliknutím na následující odkazy:
Debian/Ubuntu/Linux Mint
Redhat/Fedora/CentOS Konfigurace
OpenSUSE
Konfigurace Apache Protokoly
Apache má vysoce konfigurovatelné protokolování rámec, který umožňuje nastavit protokolování chování globálně, nebo pro každý virtuální host. Existuje několik směrnic, které můžete použít ke změně chování protokolování. Některé z běžnějších směrnic jsou směrnice o úrovni protokolu a formátu protokolu, které podrobněji vysvětlíme.,
Protokol Úrovni Směrnice
LogLevel
směrnice určuje minimální úroveň závažnosti událostí, které jsou zaznamenány do zvláštního určení. Úroveň závažnosti představuje, jak důležité je událost, a může být v rozsahu od „Pohotovosti“, aby „Trace8“, s „Pohotovosti“, které představují události, které mohou vést k nestabilitě, a „Trace8“ představující stopy na úrovni zprávy. Například LogLevel crit
umožní protokoly s „Crit“, „Alert“ a „Pohotovosti“ závažnosti, ale bude ignorovat všechny ostatní úrovně.,
formát protokolu
směrniceLogFormat
řídí rozvržení a formátování událostí protokolu. Apache ve výchozím nastavení používá běžný formát protokolu (CLF), ale můžete zadat svůj vlastní řetězec formátu pro změnu polí obsažených v každém protokolu.
můžete také použít směrniciCustomLog
pro změnu umístění souboru protokolu. V Linuxu Apache běžně zapisuje protokoly do adresářů/var /log/apache2 nebo/var / log / httpd v závislosti na přepisu operačního systému a virtuálního hostitele., Můžete také definovat řetězec LogFormat za názvem souboru, který použije pouze řetězec formátu pro tento soubor.
například následující konfigurace zapíše protokoly do logs/access_log
pomocí standardního“ běžného “ formátu. Protokoly/ podadresář je relativní k adresáři, který je uvedený v Serveru směrnice:
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common
CustomLog „logs/access_ log“ common
můžete najít úplný seznam polí v Apache log dokumentace., Doporučujeme použití alespoň následujících pěti oblastech, jako jsou důležité pro sledování stavu serveru a k řešení problémů:
-
%>s
– kód stavu HTTP pro žádost. To ukazuje konečný stav žádost po nějaké interní přesměrování; pro původní stav, použijte %s. -
%U
– URL požadované trase, bez jakýchkoli dalších parametrů adresy URL jako query string. -
%a
– IP adresa klienta, který žádost podává., To je užitečné pro identifikaci provozu z určitého zdroje. - – jak dlouho trvalo zpracování požadavku během několika sekund. To je užitečné pro měření rychlosti vašeho webu. Použijte %D k provedení stejného měření v mikrosekundách.
- – také běžně známý jako ID požadavku, toto zaznamenává jedinečný identifikátor s každým požadavkem. To je užitečné pro sledování požadavku z Apache na server webové aplikace.,
Přiřazení Přezdívky
LogFormat
řetězce lze přiřadit přezdívky, které pak můžete použít s CustomLog
směrnice k zápisu přihlásí pomocí zadaného formátu. To vám umožní použít stejný formát protokolu pro několik souborů protokolu, aniž byste museli formát pokaždé předefinovat. To je zvláště užitečné při použití různých souborů protokolu pro více virtuálních hostitelů.
například vytvoříme příkladový formát a pojmenujeme jej „vhost_combined.,“Poté vytvoříme směrnici CustomLog
, která zapíše protokoly do souboru pomocí formátu vhost_combined.
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átování jako JSON
ukládání protokolů jako prostého textu usnadňuje skenování v případě, že někdy potřebujete číst soubory protokolu. To však ztěžuje používání nástrojů, jako jsou řešení správy protokolu, ke čtení protokolů, protože tyto nástroje musí vědět, jak jsou vaše protokoly formátovány. Většina řešení správy protokolu podporuje výchozí formát protokolu Apache, ale pokud ne, měli byste zvážit použití strukturovaného formátu, jako je JSON.,
JSON (zkratka pro JavaScript Object Notation)je flexibilní formát pro ukládání strukturovaných dat. JSON ukládá sbírku nestabilních párů jmen / hodnot, což vám umožní ukládat téměř jakýkoli datový typ a strukturu. JSON také účinně dokumentuje, protože název klíče popisuje data, která obsahuje. JSON podporuje mnoho základních datových typů, včetně řetězců, čísel, booleans, polí a nulových hodnot.,
Tady je příklad LogFormat
, který ukládá záznamy ve formátu JSON:
LogFormat "{ \"time\":\"%t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }"
Výchozí Virtuální Hostitel Přepíše
Virtuální Hostitele (vhosts) se používají ke spuštění více než jedny webové stránky na jediném serveru Apache. Pro každou vhost můžete definovat samostatnou konfiguraci protokolování, která má přednost před globální konfigurací protokolování. To vám umožní přihlásit každý web do samostatného adresáře, například. Ponechání těchto parametrů ve výchozím nastavení globální konfiguraci protokolování.
například následující konfigurace je pro vhost na příkladu.,KOMA. Záznamy jsou psány na samostatných access.log
error.log
soubory /var/www/example.com/logs
adresář:
následující části ukazují výchozí konfigurace umístění souboru a směrnic používaných v různých Linuxových distribucí.
Debian/Ubuntu/Linux Mint
Na Debian-založené distribuce, výchozí vhost konfigurace pro nešifrované stránky (port 80) lze nalézt na /etc/apache2/sites-available/000-default.conf
. Výchozí konfigurace vhost pro weby Šifrované pomocí SSL / TLS (port 443) je na /etc/apache2/sites-available/default-ssl.conf
.,
tabulka výchozích směrnic
* proměnná podmíněného prostředí. Poskytuje podporu pro více instancí serveru Apache.
** proměnná prostředí. Používá se k dynamickému nastavení počáteční cesty protokolu.
Red Hat / Fedora / CentOS
u distribucí založených na Red Hat je hlavní konfigurační soubor umístěn na /etc/httpd/conf/httpd.conf
. Další konfigurační soubory vhost můžete umístit do adresáře /etc/httpd/conf.d
, který server automaticky přečte při startu.
tabulka výchozích směrnic
* podmíněno načtením log_config_module.,
** podmíněno načtením logio_module.
OpenSUSE
V OpenSUSE, výchozí vhost konfigurace pro nešifrované stránky (port 80) se nachází v /etc/apache2/default-vhost.conf
, zatímco výchozí konfigurace pro servery šifrována pomocí SSL/TLS se nachází v /etc/apache2/default-vhost-ssl.conf
.
tabulka výchozích směrnic
* podmíněno načtením log_config_module.
** podmíněno načtením logio_module.
*** podmíněno načtením mod_ssl.,
moduly související s logem
webový server Apache nabízí řadu modulů, které buď mění způsob práce Apache, nebo rozšiřují jeho schopnost. Následující moduly přidávají nebo mění chování protokolování užitečnými způsoby.
mod_log_config
Toto je základní modul protokolování, který Apache používá, a ten, který jsme probrali v této části průvodce.
mod_log_debug
Tento modul poskytuje další možnosti pro protokolování ladicích zpráv., Můžete například přihlásit události na konkrétní cestu URL, požadavky protokolu po jejich zpracování, zprávy protokolu od konkrétního klienta, pokud mají za následek časové limity a další. Všimněte si, že tento modul je experimentální a nemusí být součástí distribuce Apache.
například následující konfigurace protokolů IP adresu klienta vždy, když to požaduje určitou cestu:
mod_log_forensic
Tento modul umožňuje logování před a po je žádost zpracována. Každému záznamu je přiřazeno jedinečné ID, které lze použít ke sledování událostí mezi forenzním logem a normálním logem., Forenzní logger však nepodporuje vlastní formáty. Tento modul také nahrazuje modul mod_unique_id.
jakmile je modul povolen, můžete pomocí klíčového slova forensic
určit, který soubor protokolu je forenzní protokol. Můžete také použít %{forensic-id}
vzor v další LogFormat
řetězce přidat forenzní data do normální záznamy. Zde používáme /var/www/example.com/logs/forensic.log
:
každý řádek ve forenzním protokolu začíná buď znakem “ + „nebo“ -„., „+“označuje řádek záznamu pro tento konkrétní požadavek a“ – “ označuje následující položky pro stejný požadavek.
například, následující položka protokolu byla generována pomocí volání http://localhost pomocí výchozí log formát:
konec záznam ze stejný požadavek se zobrazí jako:
-3264:55958cb4:0
Pokud konec položka se nezobrazí v protokolu, na žádost nedokončil.
mod_logio
Tento modul přidává možnost přihlásit počet bajtů odeslaných a přijatých na žádost., To zahrnuje bajty přijaté, odeslané a přenesené (kombinace přijatých a odeslaných). Modul také přesně odpovídá za změny velikosti V důsledku šifrování SSL a TLS. Tento modul vyžaduje mod_log_config a je obvykle součástí Apache ve výchozím nastavení.
Tento modul přidává směrnici LogIOTrackTTFB On|Off
, která přepíná možnost sledovat čas na první bajt (TTFB). TTFB je doba, od kdy je žádost přijata, když je odpověď poprvé odeslána klientovi., Poté můžete použít zahrnout měření TTFB do řetězceLogFormat
.
mod_filter
Tento modul poskytuje filtry citlivé na kontext výstupního řetězce registrací libovolného počtu poskytovatelů filtrů. mod_filter není specifický pro protokolování, ale umožňuje extrahování konkrétních požadavků na základě poskytovatele filtru. Kontextové kontejnery zahrnují: hlavní Apache config, vhost config, v adresářových značkách a .htaccess soubory.,
použití tohoto modulu umožňuje filtrování požadavků obsahujících položky, jako jsou určitá kritéria vstřikování a od které IP adresy pochází.
Tento modul je standardně poskytován v mnoha distribucích balíků, ale může vyžadovat povolení. Pro účely protokolování zašle směrnice FilterTrace informace do protokolu chyb.,li> FilterDeclare
– deklaruje inteligentní filtr
FilterProtocol
– způsobuje mod_filter zvládnout hlavičky odpovědi správněFilterProvider
– registruje filtr poskytovateleFilterTrace
– umožňuje ladění/diagnostické informace v protokolu chyb před poskytovatel zpracovánínásledující příklad se vztahuje filtrování v vhost kontextu kontejneru podmíněně na filtr a zahrnuje moduly:
mod_unique_id:
Tento modul konstrukty proměnné prostředí a jedinečný identifikátor pro každý požadavek., Často je součástí distribuce balíčků, ale může vyžadovat povolení. Tento jedinečný identifikátor je zapsán do protokolu přístupu.
Tento modul byl nahrazen mod_log_forensic pro forenzní účely,ale je stále podporován pro ostatní.
Na rozdíl od forenzního identifikátoru je jedinečný identifikátor předán správci aplikací prostřednictvím proměnné prostředí UNIQUE_ID. To umožňuje vývojářům aplikací sledovat požadavek prostřednictvím webového serveru na aplikační server. To může být užitečné pro ladění požadavku.,
Apache vypíná dětské procesy pro vyřizování požadavků a instance dítěte zpracovává několik požadavků najednou. V důsledku toho je někdy žádoucí použít jedinečný identifikátor k identifikaci jediného požadavku ve více instancích serveru a dětských procesech.
jakmile je modul povolen, ve výchozím nastavení poskytuje identifikátor obsluze aplikace.,
například:
UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA
identifikátor je vyrobena z 32-bitové IP adresy, 32-bit process ID, 32-bit časové razítko spolu s 16-bit čítač pro pevnější řešení než jeden-druhý, 32-bit závit index. Komponenta timestamp je UTC, aby se zabránilo problémům s úpravami letního času. Psovod aplikace by měl s identifikátorem zacházet pouze jako s neprůhledným tokenem a neměl by být rozdělen na složky.
viz. Analyzujte to. Zkontrolujte to. Vyřešte to
podívejte se, na čem záleží.
spusťte bezplatnou zkušební verzi