Linux servera logi: journalctl, /var/log, tail -f
Servera logus skata divos veidos: ar journalctl (systemd žurnāls, kurā raksta lielākā daļa servisu) un caur failiem mapē /var/log. Dzīvo plūsmu ērti noķert ar komandu tail -f, bet kļūdas meklēt ar grep. Zemāk — ikdienas darba komandas.
Kur atrodas logi
- journald — centralizēts systemd žurnāls, pieejams ar
journalctl. - /var/log/ — atsevišķu servisu teksta faili (nginx, mysql, pasts).
- dmesg — kodola ziņojumi.
journalctl: galvenais rīks
Parādīt visu žurnālu (no beigām, ar ritināšanu):
journalctl -e
Dzīvā plūsma reāllaikā
journalctl -f
Analogs komandai tail -f, bet visam systemd žurnālam. Pārtraukt — Ctrl+C.
Konkrēta servisa logi
journalctl -u nginx
journalctl -u ssh -f
Filtrs pēc laika
journalctl --since "2026-05-26 09:00" --until "2026-05-26 10:00"
journalctl --since "1 hour ago"
journalctl --since today
Tikai kļūdas
Pēc prioritātes līmeņa (0 — emergency, 3 — error):
journalctl -p err -b
-b ierobežo izvadi ar pašreizējo sistēmas ielādi. Iepriekšējās ielādes logi:
journalctl -b -1
Kodola logi
journalctl -k
Pēdējās N rindas
journalctl -u nginx -n 50
Faili mapē /var/log
Noderīgi faili (atkarīgs no distributīva):
| Fails | Ko satur |
|---|---|
/var/log/syslog |
Vispārīgi sistēmas notikumi (Debian/Ubuntu) |
/var/log/auth.log |
Autentifikācija, SSH pieteikšanās |
/var/log/nginx/error.log |
Tīmekļa servera kļūdas |
/var/log/nginx/access.log |
Pieprasījumi vietnei |
/var/log/mysql/error.log |
MySQL/MariaDB kļūdas |
/var/log/dmesg |
Kodola ziņojumi startā |
tail, head, less
Faila dzīvā skatīšana:
tail -f /var/log/nginx/access.log
Pēdējās 100 rindas:
tail -n 100 /var/log/nginx/error.log
Pa lappusēm ar meklēšanu (nospiediet /, lai meklētu iekšpusē):
less /var/log/syslog
Sekot uzreiz vairākiem failiem:
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Meklēšana žurnālos ar grep
Atrast kļūdas:
grep -i "error" /var/log/nginx/error.log
Parādīt kontekstu (3 rindas pirms un pēc):
grep -i -C 3 "segfault" /var/log/syslog
Saskaitīt neveiksmīgas SSH pieteikšanās:
grep "Failed password" /var/log/auth.log | wc -l
Dzīvā plūsma ar filtru:
tail -f /var/log/nginx/access.log | grep " 500 "
Tīmekļa žurnālu analīze
Populārākās IP adreses pēc pieprasījumu skaita:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
Populārākie pieprasītie URL:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
Žurnālu izmērs un rotācija
Systemd žurnāla izmērs:
journalctl --disk-usage
Notīrīt vecos ierakstus, atstājot pēdējos 200 MB vai 7 dienas:
journalctl --vacuum-size=200M
journalctl --vacuum-time=7d
Teksta žurnāli tiek rotēti ar logrotate — iestatījumi mapē /etc/logrotate.d/.
Pastāvīga žurnāla glabāšana
Pēc noklusējuma dažās sistēmās journald glabā logus tikai atmiņā un zaudē tos pārstartēšanas laikā. Ieslēdziet pastāvīgu glabāšanu:
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
Tagad journalctl -b -1 parādīs iepriekšējo ielāžu logus — tas ir neaizstājami, analizējot pēkšņas pārstartēšanās.
Filtrēšana pēc vairākiem nosacījumiem
Journalctl kombinē filtrus. Konkrēta servisa kļūdas pēdējā stundā:
journalctl -u nginx -p err --since "1 hour ago"
Konkrēta procesa (PID) logi:
journalctl _PID=1234
Pēc izpildāmā faila:
journalctl /usr/sbin/sshd
Izvades formāts analīzei
Nodošanai skriptiem ērts ir JSON:
journalctl -u nginx -o json-pretty --since today
Kompakta izvade bez pārnesumiem un ar prioritātēm:
journalctl -o short-precise -p warning
Kļūdu monitorings reāllaikā
Salieciet «trauksmes paneli» — dzīvu plūsmu tikai ar kļūdām no visiem servisiem:
journalctl -f -p err
Atstājiet komandu atsevišķā tmux vai screen sesijā, lai uzreiz redzētu problēmas, tiklīdz tās parādās. Tā ir vienkārša paneļu alternatīva, kad ātri jāsaprot servera uzvedība.
Biežāk uzdotie jautājumi
Kāpēc /var/log/auth.log ir tukšs?
Sistēmās ar journald logi var netikt dublēti failos. Skatiet journalctl -u ssh.
Kā apskatīt nokritušā servisa logus?
journalctl -u servisa_nosaukums -n 100 --no-pager — parādīs pēdējās rindas pirms krišanas.
Logi aizņem daudz vietas — ko darīt?
Ierobežojiet žurnālu ar journalctl --vacuum-size un norādiet SystemMaxUse failā /etc/systemd/journald.conf.
Kā eksportēt logus failā?
journalctl -u nginx --since today > nginx-today.log.
Kāda ir atšķirība starp tail -f un journalctl -f?
tail -f seko vienam failam, journalctl -f — visam systemd žurnālam ar filtriem pēc servisa un prioritātes.
Pārliecinošs darbs ar žurnāliem vienkāršo ekspluatāciju. Izvietojiet projektu uz VPS nomas vai VPS drošībai un VPN. Monitoringu un incidentu analīzi uzņemsies Serveru administrēšana.