Linux logy sú zlatá baňa informácií. Teda, aspoň teoreticky. V praxi je to často skôr skládka, kde sa miešajú dôležité chybové hlášky s balastom o tom, že sa práve úspešne spustil cron job na rotáciu logov. Ak nevieš, kam siahnuť, stráviš hodiny scrollovaním v textových súboroch a nenájdeš nič.
Ale ak vieš, aké nástroje použiť a čo nimi vieš vyčarovať, zmení sa to na super schopnosť. V tomto článku ti ukážem praktický návod: od úplných základov, cez filtrovanie, až po menej známe kúsky, ktoré na bežnej SK/CZ scéne hneď tak nenájdeš. Zabudni na grafické rozhrania, dnes hráme „hardcore mode“.
Kde sú Linux logy a aký je medzi nimi bordel
Prvá vec, ktorú musíš pochopiť, je, že v Linuxe vládne (organizovaný) chaos. Väčšina moderných distribúcií dnes používa hybridný prístup – kombináciu moderného systemd journalu a klasických textových súborov.
Tradičné súbory (Stará škola)
Ak používaš Debian, Ubuntu, RHEL alebo Almu, väčšinu „mäsa“ nájdeš v adresári /var/log. Sú to obyčajné textové súbory, ktoré môžeš čítať čímkoľvek.
/var/log/syslog(Debian/Ubuntu) alebo/var/log/messages(RHEL/CentOS) – Toto je tvoj hlavný denník. Všeobecné systémové správy, hlášky služieb, ktoré nemajú vlastný log, a sem-tam nejaký error z aplikácie./var/log/auth.logalebo/var/log/secure– Svätý grál bezpečnosti. Tu vidíš, kto sa prihlasuje, kto používasudoa kto sa ti snaží hacknúť SSH./var/log/kern.log– Správy priamo od jadra (kernelu). Hardvér, drivery, sieťové karty./var/log/boot.log– Čo sa dialo pri štarte systému (ak ti server nenabehne, pozeraj sem).
Systemd journal (Nová škola)
Toto je binárna databáza logov. Nemôžeš ju otvoriť cez textový editor, musíš na ňu ísť cez príkaz journalctl. Výhodou je, že sa v nej ľahko vyhľadáva podľa času alebo služby, nevýhodou je, že ak sa poškodí, neprečítaš nič.
Rýchly prehľad logov v adresári:
|
1 2 3 4 |
cd /var/log ls -lh # zoznam log súborov aj s veľkosťou sudo ls -R # rekurzívne, keď chceš vidieť aj "za roh" do podadresárov |
Základné čítanie: terminál Linux a svätá trojica less, tail, head
Keď už vieš, kde tie Linux logy sú, poďme ich čítať. Najhorší nápad je otvoriť 2 GB log súbor v textovom editore nano alebo vim. Zaplníš si RAM a server ti kľakne. Terminál Linux má na to lepšie nástroje.
Ak s príkazovým riadkom len začínaš a príkazy ako cd alebo ls ti zatiaľ veľa nehovoria, odporúčam ti najprv prebehnúť náš článok o základných príkazoch v Linuxe, kde nájdeš všetko podstatné pre pohyb v systéme.
less – pohodlné čítanie veľkých logov
less je geniálny v tom, že neťahá celý súbor do pamäte. Načíta si len to, čo vidíš na obrazovke.
|
1 2 3 |
sudo less /var/log/syslog sudo less /var/log/auth.log |
V less sa musíš vedieť hýbať, inak si stratený. Tu sú klávesy, ktoré musíš dostať do prstov:
- Space / PageDown: Ďalšia stránka.
- b / PageUp: Späť o stránku.
- G (veľké G): Skok na úplný koniec súboru (najnovšie správy).
- g (malé g): Skok na začiatok.
- /text: Vyhľadanie textu smerom dopredu.
- ?text: Vyhľadanie smerom dozadu.
- n / N: Skok na ďalší / predchádzajúci výskyt hľadaného slova.
- q: Quit (odchod).
tail a head – konce a začiatky
Niekedy nepotrebuješ čítať román, chceš len vidieť koniec.
|
1 2 3 4 |
sudo tail /var/log/syslog # vypíše posledných 10 riadkov sudo tail -n 50 /var/log/syslog # vypíše posledných 50 riadkov sudo head /var/log/syslog # vypíše prvých 10 riadkov (väčšinou nuda) |
Živý „stream“ logu
Toto je funkcia, ktorú využiješ pri debugovaní najčastejšie. Spustíš službu, niečo nefunguje, a ty chceš vidieť, čo sa deje práve teraz.
|
1 2 3 |
sudo tail -f /var/log/syslog sudo tail -n 50 -f /var/log/apache2/access.log |
Prepínač -f (follow) drží súbor otvorený a vypisuje nové riadky tak, ako prichádzajú. Ukončíš to cez Ctrl+C.
Hľadanie v logoch: Ktorý príkaz v Linuxe ti nájde ihlu v kope sena
Prechádzať Linux logy očami je fajn, ak máš veľa času a málo priateľov. My ostatní používame grep. Je to asi najdôležitejší príkaz v Linuxe pre každého admina.
grep – základný filter
|
1 2 3 4 |
sudo grep "ERROR" /var/log/syslog sudo grep -i "failed password" /var/log/auth.log sudo grep -n "sshd" /var/log/auth.log |
-i(ignore case): Je mu jedno, či je to „Error“, „ERROR“ alebo „error“.-n(line number): Povie ti, na ktorom riadku sa text nachádza (užitočné, ak to chceš potom pozrieť vvim).
Viac kontextu (-A, -B, -C)
Samotná chyba často nestačí. Potrebuješ vedieť, čo sa stalo predtým, než to buchlo.
|
1 2 3 4 |
sudo grep -C 5 "error" /var/log/syslog # Context: 5 riadkov pred aj po sudo grep -A 10 "panic" /var/log/kern.log # After: 10 riadkov po sudo grep -B 10 "panic" /var/log/kern.log # Before: 10 riadkov pred |
Počítanie výskytov (-c)
Niekedy ťa nezaujíma text, ale štatistika.
|
1 2 |
sudo grep -c "Failed password" /var/log/auth.log |
Výstupom je len číslo. Napríklad 432. To ti povie, že máš problém, ale nezahltí ti obrazovku.
Pro Tip: Kombinácia živého streamu a filtra.
|
1 2 |
sudo tail -f /var/log/auth.log | grep "Failed password" |
Teraz vidíš v reálnom čase len neúspešné pokusy o prihlásenie. Perfektné „kino“ pre admina.
Šikovné textové nástroje: awk, cut, sort, uniq
Teraz sa dostávame do zóny „Data Science v termináli“. Keď Linux logy nestačí len čítať, ale chceš z nich spraviť report.
TOP útočníci podľa IP (SSH brute-force)
Chceš vedieť, ktorá IP adresa ťa bombarduje najviac?
|
1 2 3 4 5 6 7 |
sudo grep "Failed password" /var/log/auth.log \ | awk '{print $(NF-3)}' \ | sort \ | uniq -c \ | sort -nr \ | head |
Čo sa tu deje?
grepvyberie len relevantné riadky.awk '{print $(NF-3)}'je malý zázrak.NFznamená „Number of Fields“ (počet stĺpcov).NF-3znamená „tretí stĺpec od konca“. V logoch SSH je IP adresa zvyčajne presne tam. Je to robustnejšie ako počítať stĺpce od začiatku.sortzoradí IP adresy (nutné preuniq).uniq -cspočíta opakujúce sa riadky a vypíše počet.sort -nrzoradí výsledok numericky (-n) a reverzne (-r) – teda od najväčšieho po najmenší.headukáže top 10.
TOP URL z web logu (Apache/Nginx)
Ktorú stránku na tvojom webe ľudia (alebo boti) volajú najčastejšie?
|
1 2 3 4 5 6 |
awk '{print $7}' /var/log/apache2/access.log \ | sort \ | uniq -c \ | sort -nr \ | head |
V štandardnom formáte web logov je 7. stĺpec práve URL (cesta).
Menej známe, ale extrémne užitočné: journalctl
Ako som spomínal, na systémoch so systemd (čo je dnes skoro všetko) je journalctl prvá voľba. Je to moderný spôsob, ako spravovať Linux logy.
Základy journalctl
|
1 2 3 4 5 |
sudo journalctl # vypíše všetko (ako less) sudo journalctl -xe # posledné logy + detailné vysvetlivky chýb sudo journalctl -b # logy len od posledného bootu (reštartu) sudo journalctl -b -1 # logy z predchádzajúceho bootu (ak ti server spadol a ty nevieš prečo) |
Filtrovanie ako pán
Toto je sila journalu. Nemusíš grepom hľadať dátumy. Na niektorých systémoch musíš použiť sshd.service namiesto ssh.service
|
1 2 3 4 5 6 7 8 9 |
# Podľa služby sudo journalctl -u ssh.service sudo journalctl -u nginx.service # Podľa času sudo journalctl --since "2026-01-28 00:00:00" sudo journalctl --since "2 hours ago" sudo journalctl --since yesterday --until now |
Export do JSON
Ak potrebuješ logy poslať ďalej alebo spracovať skriptom, journalctl to vie natívne.
|
1 2 3 |
sudo journalctl -u ssh.service -o json sudo journalctl -o json-pretty | head |
Výstupom je krásne štruktúrovaný JSON, ktorý môžeš poslať do ELK stacku, Promethea alebo spracovať cez jq.
dmesg – keď sa sťažuje hardvér
dmesg číta tzv. kernel ring buffer. Sú to správy, ktoré generuje jadro systému ešte predtým, než nabehne disk alebo sieť. Je to neoceniteľný príkaz v Linuxe pri diagnostike hardvéru.
|
1 2 3 4 5 |
dmesg | less # všetko naraz dmesg -T | less # -T preloží časové pečiatky na čitateľný dátum dmesg -T | grep -i error # ukáž len chyby dmesg -T | grep -i usb # prečo mi nejde tá nová klávesnica? |
logrotate – ako sa Linux logy nezbláznia a nezaplnia disk
Logy rastú. Rýchlo. Ak by si ich nechal tak, za mesiac ti zaplnia disk a server kľakne. O toto sa stará služba logrotate.
Zvyčajne beží sama (cez cron), ale je dobré vedieť, kde býva:
- Konfigurácia:
/etc/logrotate.confa adresár/etc/logrotate.d/. - Ručné spustenie (napr. keď meníš config a chceš otestovať):
12sudo logrotate -f /etc/logrotate.conf
V konfigu nájdeš kľúčové slová:
daily,weekly: ako často rotovať.rotate 4: koľko starých verzií držať.compress: staré logy sa zbalia do.gz(šetrí miesto).
Parsing JSON logov: jq
Moderné aplikácie (Node.js, Python, Go) často logujú priamo do JSON formátu. Čítať to očami je utrpenie. Na to slúži nástroj jq.
|
1 2 3 4 |
cat app.log | jq '.' # sformátuje "guču" textu na pekný JSON cat app.log | jq '.level' # vytiahne len pole "level" cat app.log | jq 'select(.level=="error")' # vyfiltruje len error objekty |
Príklad z praxe: Spočítaj, koľko errorov sa vyskytlo v JSON logu.
|
1 2 |
cat app.log | jq 'select(.level=="error")' | wc -l |
Ak toto zvládneš, tvoj terminál Linux sa zmení na mocný analytický nástroj.
Praktické „recepty“ pre každodenného admina
Tu je pár hotových snippetov, ktoré môžeš rovno použiť pre Linux logy.
1. Sleduj realtime chyby konkrétnej služby
|
1 2 |
sudo journalctl -u nginx.service -f |
2. Hľadaj podozrivé SSH loginy za poslednú hodinu
|
1 2 |
sudo journalctl -u ssh.service --since "1 hour ago" | grep "Failed password" |
3. Kedy sa systém naposledy reštartoval?
|
1 2 3 4 |
sudo journalctl -b -1 -n 50 # Alebo jednoduchšie: last reboot | head |
4. Rýchly prehľad HTTP kódov (404, 500…) v access.log
|
1 2 3 4 5 6 |
awk '{print $9}' /var/log/nginx/access.log \ | sort \ | uniq -c \ | sort -nr \ | head |
(Predpokladáme, že 9. stĺpec je HTTP status code, čo je štandard).
Checklist: Log Master Starter Pack
Aby si na nič nezabudol, tu je rýchly zoznam krokov, keď riešiš incident:
- Identifikuj problém: Je to systém (kernel), služba (systemd) alebo aplikácia?
- Vyber správny log: /var/log/syslog pre všeobecné veci, journalctl pre služby.
- Použi tail -f: Sleduj, čo sa deje, keď vyvoláš chybu.
- Filtruj šum: Použi grep -v na odstránenie riadkov, ktoré ťa nezaujímajú.
- Hľadaj kontext: Použi grep -C alebo journalctl -xe.
- Skontroluj disk: Nie je problém len v tom, že df -h ukazuje 100% usage kvôli logom?
Zhrnutie: Mindset, nie len príkazy v Linuxe
Práca s logmi nie je o tom, že sa naučíš naspamäť všetky prepínače. Je to o prístupe. Namiesto otázky „aký príkaz na toto?“ sa skús na Linux logy pozerať takto:
- Kde to leží? (
/var/log/*alebojournalctl) - Ako to budem čítať? (
less,tail -f) - Ako to vyfiltrujem? (
grep,awk,jq) - Ako z toho spravím informáciu? (počítanie, triedenie)
Keď tieto štyri body spojíš, získaš „logový švajčiarsky nôž“ – sadu nástrojov, ktorými vyriešiš 80 % incidentov bez grafického rozhrania a bez drahého SIEM systému. A to je presne ten rozdiel medzi „užívateľom Linuxu“ a profíkom.
Zdroje :





