Kada se suočite s bilo kakvim problemima s performansama vašeg servera, prvo što trebate učiniti je provjeriti svoje Linux logove . U sistemskom logovu možete pronaći neke korisne dijagnostičke poruke iz različitih komponenti operativnog sistema poput kernela ili raznih servisa, tako da ćete najvjerovatnije tamo pronaći uzrok kvara.
Svaka poruka u dnevniku se generiše kao rezultat određenih događaja u operativnom sistemu: od korisnika, autorizacije do gašenja servisa ili otkazivanja aplikacije. Ovi događaji imaju različite prioritete u zavisnosti od toga koliko su kritični. Postoje sljedeće vrste događaja u Linuxu:
emerg- neuspjeh, najviši prioritet;alert- hitno upozorenje;crit- kritični događaj;err- obična greška;warn- obično upozorenje;notice- obavještenje;info- informativnu poruku;debug- informacije o otklanjanju grešaka;
Trenutno su glavne usluge za prikupljanje logova u Linuxu rsyslog i systemd-journald . Idu uz većinu modernih distribucijskih paketa i rade nezavisno.
rsyslog
Zapisnici ovog servisa nalaze se u folderu " /var/log/ " u obliku običnih tekstualnih datoteka. Poruke zapisnika se smještaju u različite datoteke ovisno o vrsti događaja. Na primjer, " /var/log/auth.log " sadrži informacije o autorizaciji korisnika u sistemu, a " /var/log/kern.log " sadrži poruke kernela. Nazivi datoteka mogu se razlikovati ovisno o distribucijskim paketima, pa pogledajmo konfiguracijsku datoteku da bismo dobili ideju gdje se nalazi " /etc/rsyslog.d/50-default.conf ".
Ova pravila prikazuju koja datoteka sadrži koju vrstu poruka dnevnika. Lijevi dio prikazuje vrstu poruke u sljedećem obliku „ [Izvor].[Prioritet] “, a desni dio prikazuje naziv datoteke dnevnika. Prilikom pisanja vrste poruke, može se dodati znak „ * “. To znači praznu vrijednost ili „ nijedan “ što je uklanja s liste. Pogledajmo detaljnije prva dva pravila.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Prvo pravilo znači da će sve poruke primljene od mehanizma autorizacije biti zabilježene u datoteku " /var/log/auth.log ". Svi pokušaji autorizacije (i uspješni i neuspješni) bit će zabilježeni u ovoj datoteci. Drugo pravilo označava da će sve poruke osim onih povezanih s autorizacijom biti zabilježene u datoteku " /var/log/syslog ". Ove dvije datoteke su obično najpopularnije. Sljedeća pravila definiraju putanju za pohranu logova kernela " kern.* " i logova mail servisa " mail.* "
Datoteke dnevnika mogu se otvoriti pomoću bilo kojeg tekstualnog editora, kao što su less , cat , tail . Otvorimo datoteku " /var/log/auth.log " .
less /var/log/auth.log
Svaki red datoteke je posebna poruka primljena od aplikacije ili usluge. Sve poruke bez obzira na njihov izvor imaju jedan format i sastoje se od 5 dijelova. Uzmimo za primjer istaknutu poruku na snimku ekrana.
- Vremenska oznaka poruke - “12. februar 06:18:33”
- Naziv računara koji je poslao poruku - “vds”
- Naziv aplikacije ili usluge koja je poslala poruku - “sshd”
- ID procesa - [653]
- Tekst poruke - “Prihvaćena lozinka za mihail sa 188.19.42.165 port 2849 ssh2”
Ovo je bio primjer uspješne veze na SSH.
A evo kako izgleda neuspješan pokušaj prijave:
Ova datoteka također snima komande s naprednim dozvolama
Otvorimo datoteku /var/log/ syslog
Istaknuta poruka na snimku ekrana je poruka o gašenju mrežnog interfejsa.
Za pretraživanje informacija kroz dugačke tekstualne datoteke koristite uslužni program grep . Sve poruke primljene od pptpd servisa možete pronaći u datoteci " /var/log/syslog ".
grep 'pptpd' /var/log/syslog
Tokom dijagnostike možete koristiti uslužni program tail koji može prikazati nekoliko posljednjih redova datoteka. Komanda " tail -f /var/log/syslog " će vam omogućiti da pratite zapise logova u realnom vremenu.
Servis rsyslog je veoma fleksibilan i moćan. Može se koristiti za prikupljanje logova u lokalnim sistemima kao i na nivou preduzeća. Kompletnu dokumentaciju možete pronaći na službenoj web stranici https://www.rsyslog.com/
Rotacija dnevnika u Linuxu
Snimanje logova se odvija kontinuirano, tako da veličina datoteka stalno raste. Mehanizam rotacije osigurava automatsko arhiviranje starih logova i kreiranje novih datoteka. U zavisnosti od pravila, to se može dešavati dnevno, sedmično, mjesečno ili prema ograničenju veličine. Kako se novi logovi kreiraju, stari se mogu jednostavno izbrisati ili poslati e-poštom. Rotaciju logova vrši uslužni program logrotate . Glavnu konfiguraciju možete pronaći u datoteci " /etc/logrotate.conf ". Sadržaj datoteka se također obrađuje u mapi " /etc/logrotate.d/ ".
Nova pravila se mogu evidentirati u glavnoj konfiguracijskoj datoteci. Međutim, najbolje je kreirati zasebnu datoteku u " /etc/logrotate.d/ ". Podrazumevano, u ovom direktoriju se nalazi nekoliko datoteka.
Pogledajmo datoteku " /etc/logrotate.d/rsyslog " koja sadrži pravila rotacije za logove rsyslog servisa.
Prvo, pravilo treba sadržavati putanju do datoteke evidencije, a zatim ići sve smjernice u zakrivljene zagrade.
- rotirati 7 - broj fajlova za čuvanje - 7
- svakodnevno - kreirajte novi fajl svaki dan
- kompresovati - komprimirati i arhivirati stare datoteke
Na snimku ekrana možete vidjeti da se u mapi " /var/log/ " nalazi glavni dnevnik " syslog " i 7 arhiva, što odgovara pravilima u konfiguracijskoj datoteci.
Detaljniji opis logrotate komande možete pronaći u priručniku, izvršavanjem komande „ man logrotate “.
Prikupljanje Linux dnevnika - dnevnik
Servis za prikupljanje logova systemd-journald je dio sistema za inicijalizaciju systemd . Linux log datoteke se pohranjuju u " /var/log/journal/ " u posebnom formatu i mogu se otvoriti uz pomoć uslužnog programa journalctl . Format zapisa je potpuno isti kao u rsyslog.
Naredba journalctl bez atributa prikazuje sve zapise, ali nije pogodna za veće logove. Pogledajmo neke opcije ovog uslužnog programa.
journalctl -b- prikaži sve zapise od posljednjeg startajournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- prikazati zapis u određenom vremenskom periodujournalctl -u pptpd- prikazati evidenciju određene uslugejournalctl -k- prikaži poruke kernelajournalctl -p err- prikaži poruke određenog prioriteta, poruke višeg prioriteta u ovom slučaju (crit, alert, emerg)journalctl -f- prikažite poruke u realnom vremenu
Za veću fleksibilnost možete kombinovati ove opcije. Prikažimo sve greške pptpd servisa.
journalctl -u pptpd -p err
Ako navedete putanju do izvršne datoteke kao atribut, uslužni program će prikazati sve poruke poslane ovom datotekom. Prikažimo sve poruke poslane datotekom „ /usr/bin/sudo “ od 04:15 18. februara 2020. U stvari, prikazat će sve naredbe izvršene s višim dozvolama.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Da saznate koliko prostora na disku zauzimaju datoteke evidencije za izvršavanje sljedeće naredbe
journalctl --disk-usage
Da biste ograničili datoteku dnevnika na 1Gb, izvršite sljedeću naredbu
journalctl --vacuum-size=1G
Otvaranje binarnih datoteka
Sada pogledajmo neke posebne datoteke u mapi " /var/log/ " gdje se pohranjuju svi pokušaji prijave. Ove datoteke su binarne i mogu se otvoriti samo posebnim programima.
/var/log/wtmp sadrži informacije o uspješnim pokušajima prijave. Koristite uslužni program last da ga otvorite.
/var/log/btmp - sadrži sve neuspješne pokušaje prijave. Može se otvoriti sa lastb sa naprednim dozvolama. Atribut -n definira broj prikazanih linija od kraja datoteke.
/var/log/lastlog - sadrži vrijeme posljednje prijave za svaki zapis računa. Može se otvoriti pomoću lastlog-a