Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Čitanje zapisa s alatom journalctl

Modul 6: Servisi i zapisi · Vrijeme čitanja: 11 minuta

Cilj učenja: Nakon ove lekcije moći ćete s journalctl ciljano pretraživati zapise svog poslužitelja (po usluzi, prioritetu i vremenu), znat ćete gdje se nalaze ostale datoteke zapisa i spriječit ćete da zapisi napune Vaš disk.

Ključni pojmovi: journald, journal, journalctl -u, -p, --since/--until, -f, -b, -e, -n, prioritet (err, warning, info), trajna pohrana, /var/log/journal, --disk-usage, --vacuum-size, /var/log, logrotate, rsyslog

Zapis kao prvi svjedok

Kada nešto na Vašem poslužitelju ne radi, razlog je gotovo uvijek zapisan u nekom zapisniku. Web-stranica koja prikazuje stranicu s pogreškom, usluga koja se ne pokreće, sigurnosna kopija koja se noćas nije izvršila: poslužitelj je to zapisao. Dobar administrator najprije pogleda zapis, a tek zatim počinje nešto mijenjati.

Na modernim Linux poslužiteljima journald (dio systemd-a) prikuplja poruke kernela, samog systemd-a i svih usluga u jedan zapisnik: journal. Čitate ga s journalctl.

Da biste mogli pročitati sve, morate biti u grupi adm ili systemd-journal, ili koristiti sudo. Bez tih prava vidite samo vlastite poruke.

Gdje se nalazi? Trajno ili privremeno

journald čuva journal na jednom od dva mjesta:

  • u /var/log/journal/: trajno, zapisi ostaju sačuvani nakon ponovnog pokretanja;
  • u /run/log/journal/: privremeno, u memoriji, nestaju nakon ponovnog pokretanja.

Zadana postavka (Storage=auto u /etc/systemd/journald.conf) odabire trajnu pohranu ako mapa /var/log/journal/ postoji. Na Debianu tu mapu paket systemd stvara već od Debiana 11, a na Ubuntuu također postoji. Provjerite to:

anna@web1:~$ ls -d /var/log/journal
/var/log/journal
anna@web1:~$ journalctl --list-boots | tail -n 3
 -2 3c1f... Sun 2026-11-01 04:30:12 CET Sun 2026-11-08 04:30:01 CET
 -1 9ab7... Sun 2026-11-08 04:30:40 CET Mon 2026-11-09 08:12:05 CET
  0 e41d... Mon 2026-11-09 08:12:30 CET Mon 2026-11-09 11:40:17 CET

Ako vidite samo jedno pokretanje sustava, a poslužitelj je već bio ponovno pokrenut, Vaši su zapisi privremeni. Stvorite mapu (sudo mkdir -p /var/log/journal i sudo systemd-tmpfiles --create --prefix /var/log/journal) i ponovno pokrenite journald. To je važno: nakon rušenja upravo želite znati što se dogodilo prije ponovnog pokretanja.

Od Debiana 12 Debian više ne instalira rsyslog prema zadanim postavkama. Taj je program nekada zapisivao tekstualne datoteke kao što su /var/log/syslog i /var/log/auth.log. Na novom Debian poslužitelju one stoga ne postoje; sve je u journalu. Ubuntu još uvijek ima rsyslog. Upute koje kažu "pogledajte u /var/log/auth.log" na Debianu možete prevesti u journalctl -u ssh.

Pretraživanje: filtri koje ćete stvarno koristiti

Bez filtra journalctl prikazuje sve, počevši od najstarijeg. To rijetko želite. Najvažniji filtri, koje možete kombinirati:

FiltarPrimjerŠto
-u <unit>journalctl -u nginxsamo ta usluga
-p <prioriteit>journalctl -p errsamo pogreške i ozbiljnije
--since, --until--since "2026-11-09 03:00" --until "04:00"vremensko razdoblje; također today, yesterday, "1 hour ago"
-bjournalctl -b, journalctl -b -1od ovog pokretanja sustava ili prethodnog
-fjournalctl -u nginx -fpraćenje uživo (kao tail -f), prekid s Ctrl+C
-ejournalctl -u ssh -eskok na kraj
-njournalctl -u ssh -n 50zadnjih 50 redaka
-kjournalctl -ksamo poruke kernela
--no-pagerbez listanja, korisno s grep

Prioriteti idu od 0 (emerg) do 7 (debug): emerg, alert, crit, err, warning, notice, info, debug. S -p err dobivate err i sve ozbiljnije. -p warning prikazuje i upozorenja.

Tipičan tijek pretraživanja. Vaša web-stranica od jutros vraća pogrešku 502:

anna@web1:~$ systemctl status php8.4-fpm
× php8.4-fpm.service - The PHP 8.4 FastCGI Process Manager
     Active: failed (Result: exit-code) since Mon 2026-11-09 07:02:11 CET; 4h ago
...
anna@web1:~$ sudo journalctl -u php8.4-fpm --since today -p warning --no-pager
nov 09 07:02:10 web1 php-fpm8.4[1830]: [09-Nov-2026 07:02:10] ERROR: [/etc/php/8.4/fpm/pool.d/www.conf:42] unknown entry 'pm.max_children '
nov 09 07:02:10 web1 php-fpm8.4[1830]: [09-Nov-2026 07:02:10] ERROR: FPM initialization failed
nov 09 07:02:11 web1 systemd[1]: php8.4-fpm.service: Main process exited, code=exited, status=78/CONFIG
nov 09 07:02:11 web1 systemd[1]: php8.4-fpm.service: Failed with result 'exit-code'.

Uzrok je doslovno zapisan: tipfeler u retku 42 konfiguracijske datoteke. Status 78 (CONFIG) potvrđuje da se radi o pogrešci u konfiguraciji. Ne morate ništa nagađati.

Dva savjeta za čitanje:

  • Čitajte odozgo prema dolje i potražite prvu pogrešku. Jedna pogreška često uzrokuje cijeli niz posljedičnih poruka. Prva je obično uzrok.
  • Pazite na vrijeme. Što se promijenilo oko tog trenutka? Automatsko ažuriranje (lekcija 4.2: /var/log/unattended-upgrades/), Vaša izmjena, ponovno pokretanje?

Ostale datoteke zapisa

Nije sve u journalu. Mnogi programi zapisuju i (ili samo) vlastite datoteke u /var/log/:

Datoteka ili mapaŠto
/var/log/nginx/access.log i error.logsvaki zahtjev i svaka pogreška nginxa
/var/log/apt/history.logšto je apt instalirao i kada
/var/log/unattended-upgrades/automatska ažuriranja (lekcija 4.2)
/var/log/fail2ban.logblokade (lekcija 5.3)
/var/log/mysql/ ili journalMariaDB/MySQL, ovisno o postavci

Velike tekstualne datoteke čitate s less (pretraživanje s /), kraj s tail -n 50, uživo s tail -f, a filtrirate s grep:

anna@web1:~$ sudo grep " 502 " /var/log/nginx/access.log | tail -n 5

Zapisi Docker kontejnera nisu u /var/log, nego kod samog Dockera: docker compose logs (lekcija 9.3).

Zapisi ne smiju napuniti Vaš disk

Pun disk jedan je od najčešćih razloga zbog kojih poslužitelj "odjednom" prestane raditi: baze podataka se zaustave, ažuriranja ne uspijevaju, a ponekad se više ne možete ni prijaviti. Zapisi su često krivci.

Journal sam sebe ograničava. Prema zadanim postavkama koristi najviše 10% datotečnog sustava, uz maksimum od 4 GB (SystemMaxUse=). Koliko trenutačno koristi i kako ga počistiti:

anna@web1:~$ journalctl --disk-usage
Archived and active journals take up 512.0M in the file system.
anna@web1:~$ sudo journalctl --vacuum-time=30d     # starije od 30 dana se briše
anna@web1:~$ sudo journalctl --vacuum-size=500M    # do 500 MB

Ako želite fiksno ograničenje, upišite u drop-in /etc/systemd/journald.conf.d/grootte.conf:

[Journal]
SystemMaxUse=1G

i ponovno pokrenite journald s sudo systemctl restart systemd-journald.

Tekstualne datoteke u /var/log održava logrotate: svaki dan ili tjedan datoteka se preimenuje (error.log.1), starije se verzije sažimaju (.gz), a najstarije se brišu. Pravila za pojedine programe nalaze se u /etc/logrotate.d/. Paketi iz distribucije donose vlastito pravilo. Ako Vaš vlastiti program ili skripta zapisuje u vlastitu datoteku zapisa, sami napravite pravilo, jer će inače datoteka beskonačno rasti.

Pronalaženje onoga što zauzima prostor:

anna@web1:~$ df -h /
anna@web1:~$ sudo du -xh /var/log | sort -h | tail -n 5

Zapisi i privatnost

Zapisi sadrže IP adrese, korisnička imena, a ponekad i adrese e-pošte: to su osobni podaci. Ne čuvajte ih dulje nego što je potrebno (nekoliko tjedana do nekoliko mjeseci uobičajeno je za mali poslužitelj), ne ostavljajte ih javno dostupnima (mapa /logs u Vašem webrootu poznata je pogreška) i ne kopirajte ih olako u usluge drugih.

Na AlmaLinuxu i Rocky Linuxu

journalctl radi jednako. Ondje je rsyslog još uvijek uključen prema zadanim postavkama, s datotekama kao što su /var/log/messages i /var/log/secure (pandan za auth.log). Poruke SELinuxa nalaze se u /var/log/audit/audit.log; ausearch -m avc -ts recent prikazuje nedavna odbijanja.

Sažetak

  • journald prikuplja sve poruke u journal; čitajte ga s journalctl, filtrirano po usluzi (-u), prioritetu (-p), vremenu (--since) i pokretanju sustava (-b).
  • Provjerite je li journal trajan (postoji li /var/log/journal), inače ćete nakon ponovnog pokretanja izgubiti zapise.
  • Debian 12 i noviji prema zadanim postavkama nemaju rsyslog, pa stoga ni /var/log/auth.log ni /var/log/syslog; sve je u journalu.
  • Potražite prvu pogrešku i pogledajte što se promijenilo oko tog trenutka.
  • Pratite veličinu: journal sam sebe ograničava (--disk-usage, --vacuum-*), a tekstualnim datotekama upravlja logrotate.

Kviz

1. Koja naredba prikazuje samo današnje pogreške nginxa?



2. Vaš je poslužitelj noćas ponovno pokrenut nakon rušenja. journalctl -b -1 vraća "Specifying boot ID or boot offset has no effect, no persistent journal was found". Što to znači?



3. Upute kažu da neuspjele SSH prijave nalazite u /var/log/auth.log, ali na Vašem novom Debian 13 poslužitelju ta datoteka ne postoji. Gdje ćete pogledati?



4. U zapisu je dvadeset poruka o pogreškama zaredom. Odakle počinjete?



5. Vaš je disk pun, a journalctl --disk-usage kaže 400 MB. Koji je najbolji sljedeći korak?



Zadatak

Zadatak Z6.2: Analiza usluge koja se ruši. U primjernoj datoteci journal-crash-1.txt nalazi se ispis naredbi systemctl status i journalctl za uslugu koja se stalno ponovno pokreće, a zatim odustaje. Odgovorite: kako se usluga zove, koliko je puta systemd pokušao pokrenuti je, s kojim se izlaznim kodom zaustavila, što je uzrok prema prvoj poruci o pogrešci i u koliko je sati systemd odustao? Program uspoređuje Vaše odgovore s fiksnim ključem. Nakon toga provjerite na vlastitom poslužitelju prikazuje li journalctl -p err -b pogreške i je li Vaš journal trajan.

Zadatak Z6.2: Analiza usluge koja se ruši

Datoteka uz ovaj zadatak: journal-crash-1.txt







Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno štivo

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…