Serverové logy a co v nich hledat
Logy jsou nudný textový soubor, ve kterém je zapsané všechno, co se s vaším webem za poslední měsíc dělo. Většina firem se do něj podívá až ve chvíli, kdy je pozdě.
Co v logu vlastně je
Každý požadavek na váš web zanechá jeden řádek. Kdo přišel, kdy, na jakou adresu, s jakým výsledkem, jak velká byla odpověď a odkud přišel. Vypadá to nepřehledně, ale je to jen šest sloupců oddělených mezerami. Když víte, který sloupec je který, čte se to překvapivě snadno.
Rozdíl proti Google Analytics je zásadní. Analytics zaznamená jen návštěvníka, kterému se načetl měřicí skript. Log zaznamená úplně všechno včetně robotů, botů, skenerů zranitelností a požadavků, které skončily chybou dřív, než se stránka vůbec vykreslila. Analytics vám neukáže, že Googlebot dvakrát denně naráží na rozbitou adresu.
Typický web s 3 000 návštěvami měsíčně vygeneruje log o 150 000 až 400 000 řádcích. Vypadá to jako moc, ale devadesát procent z toho jsou obrázky a styly, které vás nezajímají. Jeden filtr a zbyde pár tisíc řádků, které mají smysl.
Stavové kódy: čísla, která vám řeknou nejvíc
Nejrychlejší cesta do logu vede přes stavový kód. Je to trojciferné číslo u každého řádku a rozdělí vám požadavky na v pořádku, přesměrované, chybné a rozbité. Když si uděláte součet podle kódů, uvidíte zdraví webu za pět vteřin.
Zdravý web má drtivou většinu dvoustovek, nějaké tři sta jedničky u přesměrování a jednotky procent čtyřstovek. Když vidíte 404 nad pět procent všech požadavků, něco odkazuje na neexistující stránky. Když vidíte jakoukoli pětistovku, váš web někomu spadl a vy o tom nevíte.
Konkrétní příklad z praxe: u klienta jsem našel 1 240 chyb 404 měsíčně na jedné jediné adrese. Byl to odkaz ze staré tištěné vizitky, který vedl na zrušenou stránku s kontaktem. Přesměrování trvalo dvě minuty a přineslo zpátky lidi, kteří do té doby končili na chybové stránce.
- 200: vše v pořádku, stránka se doručila
- 301 a 302: přesměrování, trvalé a dočasné, hlídejte řetězce delší než jeden krok
- 403: přístup zamítnut, často špatná práva u souborů
- 404: stránka neexistuje, hledejte odkud na ni lidé chodí
- 429: příliš mnoho požadavků, někdo vás bombarduje nebo máte agresivní bota
- 500: chyba aplikace, tohle řešte hned, znamená to nefunkční web
- 502 a 504: server neodpověděl včas, typicky přetížený nebo špatně nastavený
Jak se ve vašem logu chová Googlebot
Googlebot má v logu vlastní podpis a dá se snadno vyfiltrovat. Zajímá vás, kolik stránek denně projde, které stránky navštěvuje nejčastěji a jestli náhodou nemarní čas na adresách, které vůbec nechcete v indexu.
Běžný obrázek u firemního webu s 30 stránkami: Googlebot projde 40 až 120 požadavků denně. Když vidíte, že 60 procent z toho padá na filtrované adresy s parametry nebo na stránkování, plýtvá časem na obsahu, který nemá hodnotu. Tohle je přímý důkaz, který vám žádný jiný nástroj nedá.
Druhá věc, kterou hledám: jaký stavový kód Googlebot dostává. Když robot pravidelně narazí na pětistovku, přestane chodit tak často. Viděl jsem web, kde po třech dnech výpadků klesla frekvence návštěv robota z 90 na 12 požadavků denně a trvalo šest týdnů, než se vrátila zpátky.
Útoky a pokusy, které v logu uvidíte
Každý veřejný web na internetu dostává automatizované pokusy o průnik. Není to osobní, roboti projíždějí adresní rozsahy a zkoušejí známé díry. Ve vašem logu se to projeví jako série požadavků na adresy, které na vašem webu vůbec neexistují.
Nejčastější vzorec: desítky až stovky požadavků na přihlašovací stránku WordPressu během několika minut, každý z jiné IP adresy. To je slovníkový útok na heslo. U klienta v Brně jsem takhle napočítal 8 400 pokusů za jediný týden. Web přitom WordPress vůbec neběžel, což je dobrá zpráva, ale zatěžovalo to server.
Statický web je proti tomuhle prakticky imunní, protože nemá administraci ani databázi, kam by se dalo dostat. To je jeden z důvodů, proč většinu firemních webů stavím jako statické. Není to módní rozhodnutí, je to rozhodnutí, které maže celou kategorii problémů.
- Opakované požadavky na wp-login.php nebo xmlrpc.php: útok na WordPress
- Adresy typu .env, .git nebo config.php: hledají uniklé přístupové údaje
- Podivné parametry s uvozovkami a SQL příkazy: pokus o vniknutí do databáze
- Stovky požadavků za sekundu z jedné IP: zahlcení nebo scraping obsahu
- User agent, který se vydává za prohlížeč, ale chodí strojově rychle
Co z logu firma opravdu pozná
Logy nejsou technická hračka. Vytáhnete z nich odpovědi na otázky, které zajímají majitele. Kolik lidí denně skončí na chybě místo na stránce, kterou hledali. Které staré adresy z letáků a vizitek pořád někdo zkouší. Jestli web v noci padá, aniž by si toho někdo všiml.
U klienta s e-shopem jsem v logu našel, že každý pátek večer mezi devátou a jedenáctou skáče doba odpovědi z 300 milisekund na 4 sekundy. Příčinou byla naplánovaná záloha databáze v nejsilnější nákupní hodinu. Přesunutí zálohy na třetí hodinu ranní stálo deset minut práce.
Druhý typický objev: stránka, kterou nikdo neotevírá, ale zabírá vám třetinu času robota. Nebo naopak stránka, na kterou chodí spousta lidí z externího odkazu, o kterém jste nevěděli, a vy na ní nemáte žádnou výzvu k akci.
Kolik rozbor logů stojí a co za to dostanete
Rozbor logů dělám buď jednorázově jako diagnostiku, když se něco děje a nikdo neví co, nebo pravidelně jako součást měsíční péče. Jednorázový rozbor má smysl, když web spadl, propadly pozice ve vyhledávání nebo si nejste jistí bezpečností.
Výstup není hromada čísel. Je to seznam nálezů se závažností a s tím, co s každým udělat. Typicky najdu tři až osm věcí, z nichž dvě jsou vážné a zbytek je úklid. Opravy se pak řeší zvlášť podle rozsahu, cenu vždycky napíšu předem.
U webů, které mám v měsíční péči za 2 990, procházím logy jednou měsíčně jako součást kontroly. U Provozu za 990 je to jen hlídání dostupnosti bez rozboru.
| Rozsah | Co obsahuje | Orientační cena |
|---|---|---|
| Rychlá kontrola | Stavové kódy, top chyby, dostupnost | 1 900 |
| Plný rozbor | Chyby, roboti, bezpečnost, výkon, nálezy | 4 900 |
| Rozbor plus opravy | Rozbor a nasazení oprav do rozsahu 4 hodin | 8 900 |
| Nastavení hlídání | Automatický alert při 500 a výpadku | 2 900 jednorázově |
| Péče měsíčně | Měsíční procházení logů a drobné opravy | 2 990 |
Časté otázky
Kde ty logy vůbec najdu, když je nikdy neviděl?
Záleží na hostingu. U českých poskytovatelů bývají v administraci pod položkou Logy nebo Statistiky, obvykle za posledních 30 dní. U Vercelu a podobných platforem je najdete v panelu projektu. Když je hosting nenabízí vůbec, je to samo o sobě důvod k přesunu jinam, protože létáte naslepo.
Jak často má smysl logy kontrolovat?
U běžného firemního webu stačí jednou měsíčně, což dělám v rámci péče. U e-shopu nebo webu, kde běží placená reklama, doporučuju automatické hlídání chyb 500 a výpadků, protože tam každá hodina nedostupnosti přímo stojí peníze. Nastavení hlídání je jednorázově 2 900 a pak už jen běží.
Znamená velké množství pokusů o průnik, že mě někdo cíleně napadá?
Skoro nikdy. Osmdesát procent těch pokusů jsou automatizovaní roboti, kteří projíždějí celý internet a zkoušejí známé zranitelnosti. Není to o vás. Nebezpečné je to jen tehdy, když máte skutečně děravý systém. U statického webu bez administrace nemají tyhle pokusy kam dopadnout.
Chcete web, který přivádí zákazníky?
Postavím vám ho na míru, s měřením a připravený na reklamy. Návrh dostanete zdarma a nezávazně.
Vybrat si termín hovoru →