Ko naletite na kakršne koli težave z delovanjem strežnika, morate najprej preveriti dnevnike Linuxa . V sistemskem dnevniku lahko najdete nekaj koristnih diagnostičnih sporočil iz različnih komponent operacijskega sistema, kot so jedro ali različne storitve, zato boste najverjetneje tam našli vzrok napake.
Vsako sporočilo v dnevniku je generirano kot posledica določenih dogodkov v operacijskem sistemu: od uporabnika, avtorizacije do zaustavitve storitve ali okvare aplikacije. Ti dogodki imajo različne prioritete glede na to, kako kritični so. V Linuxu obstajajo naslednje vrste dogodkov:
emerg- napaka, najvišja prioriteta;alert- nujno opozorilo;crit- kritični dogodek;err- navadna napaka;warn- navadno opozorilo;notice- obveščanje;info- informativno sporočilo;debug- informacije o odpravljanju napak;
Trenutno sta glavni storitvi za zbiranje dnevnikov v Linuxu rsyslog in systemd-journald . Priloženi sta večini sodobnih distribucijskih paketov in delujeta neodvisno.
rsyslog
Dnevniki te storitve se nahajajo v mapi » /var/log/ « v obliki navadnih besedilnih datotek. Sporočila dnevnika so shranjena v različnih datotekah, odvisno od vrste dogodka. Na primer, » /var/log/auth.log « vsebuje informacije o avtorizaciji uporabnikov v sistemu, » /var/log/kern.log « pa vsebuje sporočila jedra. Imena datotek se lahko razlikujejo med distribucijskimi paketi, zato si poglejmo konfiguracijsko datoteko, da dobimo predstavo o tem, kje je » /etc/rsyslog.d/50-default.conf «.
Ta pravila prikazujejo, katera datoteka vsebuje posamezno vrsto sporočil dnevnika. Levi del prikazuje vrsto sporočila v naslednji obliki » [Vir].[Prioriteta] «, desni del pa ime datoteke dnevnika. Med pisanjem vrste sporočila lahko dodamo znak » * «. To pomeni prazno vrednost ali » brez «, kar sporočilo odstrani s seznama. Oglejmo si podrobneje prvi dve pravili.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Prvo pravilo pomeni, da bodo vsa sporočila, prejeta iz mehanizma za avtorizacijo, zabeležena v datoteki » /var/log/auth.log «. Vsi poskusi avtorizacije (tako uspešni kot neuspešni) bodo zabeleženi v tej datoteki. Drugo pravilo določa, da bodo vsa sporočila, razen tistih, povezanih z avtorizacijo, zabeležena v datoteki » /var/log/syslog «. Ti dve datoteki sta običajno najbolj priljubljeni. Naslednja pravila določajo pot za shranjevanje dnevnikov jedra » kern.* « in dnevnikov poštne storitve » mail.* «.
Dnevniške datoteke lahko odprete s pomočjo katerega koli urejevalnika besedil, kot so less , cat , tail . Odprimo datoteko » /var/log/auth.log « .
less /var/log/auth.log
Vsaka vrstica datoteke je ločeno sporočilo, prejeto od aplikacije ali storitve. Vsa sporočila, ne glede na njihov izvor, imajo en format in so sestavljena iz 5 delov. Vzemimo za primer označeno sporočilo na posnetku zaslona.
- Časovni žig sporočila - »12. februar 06:18:33«
- Ime računalnika, ki je poslal sporočilo - “vds”
- Ime aplikacije ali storitve, ki je poslala sporočilo - “sshd”
- ID procesa - [653]
- Besedilo sporočila - “Sprejeto geslo za mihaila iz 188.19.42.165 vrat 2849 ssh2”
To je bil primer uspešne povezave s SSH.
In tako je videti neuspešen poskus prijave:
Ta datoteka beleži tudi ukaze z naprednimi dovoljenji
Odprimo datoteko /var/log/ syslog
Označeno sporočilo na posnetku zaslona je sporočilo o zaustavitvi omrežnega vmesnika.
Za iskanje informacij v dolgih besedilnih datotekah uporabite pripomoček grep . Vsa sporočila, prejeta od storitve pptpd , najdete v datoteki » /var/log/syslog «.
grep 'pptpd' /var/log/syslog
Med diagnostiko lahko uporabite pripomoček tail , ki lahko prikaže nekaj zadnjih vrstic datotek. Ukaz » tail -f /var/log/syslog « vam bo omogočil ogled zapisov dnevnikov v realnem času.
Storitev rsyslog je zelo prilagodljiva in zmogljiva. Uporablja se lahko za zbiranje dnevnikov v lokalnih sistemih kot tudi na ravni podjetja. Celotno dokumentacijo najdete na uradni spletni strani https://www.rsyslog.com/
Rotacija dnevnikov v Linuxu
Snemanje dnevnikov se dogaja neprekinjeno, zato velikost datotek nenehno narašča. Mehanizem rotacije zagotavlja samodejno arhiviranje starih dnevnikov in ustvarjanje novih datotek. Glede na pravila se lahko to zgodi dnevno, tedensko, mesečno ali po omejitvi velikosti. Ko se ustvarijo novi dnevniki, se lahko stari preprosto izbrišejo ali pošljejo po e-pošti. Rotacijo dnevnikov izvaja pripomoček logrotate . Glavno konfiguracijo najdete v datoteki » /etc/logrotate.conf «. Vsebina datotek se obdeluje tudi v mapi » /etc/logrotate.d/ «.
Nova pravila je mogoče zabeležiti v glavno konfiguracijsko datoteko. Vendar je najbolje, da ustvarite ločeno datoteko v » /etc/logrotate.d/ «. Privzeto je v tem imeniku nekaj datotek.
Oglejmo si datoteko » /etc/logrotate.d/rsyslog «, ki vsebuje pravila rotacije za dnevnike storitve rsyslog.
Najprej mora pravilo vsebovati pot do datoteke dnevnika in nato vse smernice v ukrivljenih oklepajih.
- zavrtite 7 - število datotek, ki jih je treba hraniti - 7
- vsak dan - vsak dan ustvarite novo datoteko
- stiskanje - stiskanje in arhiviranje starih datotek
Na posnetku zaslona lahko vidite, da se v mapi » /var/log/ « nahaja glavni dnevnik » syslog « in 7 arhivov, kar ustreza pravilom v konfiguracijski datoteki.
Podrobnejši opis ukaza logrotate najdete v priročniku z izvedbo ukaza » man logrotate « .
Zbiranje dnevnikov Linuxa - dnevnik
Storitev za zbiranje dnevnikov systemd-journald je del inicializacijskega sistema systemd . Datoteke dnevnikov Linuxa so shranjene v » /var/log/journal/ « v posebni obliki in jih je mogoče odpreti s pomočjo pripomočka journalctl . Oblika zapisov je popolnoma enaka kot v rsyslog.
Ukaz journalctl brez atributov prikaže vse zapise, vendar ni primeren za večje dnevnike. Oglejmo si nekaj možnosti tega pripomočka.
journalctl -b- prikaz vseh zapisov od zadnjega začetkajournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- prikaz zapisa v določenem časovnem obdobjujournalctl -u pptpd- prikaz evidence določene storitvejournalctl -k- prikaz sporočil jedrajournalctl -p err- prikaži sporočila z določeno prioriteto, v tem primeru sporočila z višjo prednostjo (crit, alert, emerg)journalctl -f- prikazovanje sporočil v realnem času
Za večjo prilagodljivost lahko te možnosti kombinirate. Prikažimo vse napake storitve pptpd.
journalctl -u pptpd -p err
Če kot atribut določite pot do izvedljive datoteke, bo pripomoček prikazal vsa sporočila, ki jih je poslala ta datoteka. Prikažimo vsa sporočila, ki jih je poslala datoteka » /usr/bin/sudo « od 04:15 18. februarja 2020. Pravzaprav bo prikazal vse ukaze, izvedene z višjimi dovoljenji.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Če želite ugotoviti, koliko prostora na disku zasedajo datoteke dnevnika za izvedbo naslednjega ukaza
journalctl --disk-usage
Če želite datoteko dnevnika omejiti na 1 Gb, izvedite naslednji ukaz
journalctl --vacuum-size=1G
Odpiranje binarnih datotek
Zdaj pa si poglejmo nekaj posebnih datotek v mapi » /var/log/ «, kjer so shranjeni vsi poskusi prijave. Te datoteke so binarne in jih je mogoče odpreti le s posebnimi programi.
/var/log/wtmp vsebuje informacije o uspešnih poskusih prijave. Za odpiranje uporabite pripomoček last.
/var/log/btmp - vsebuje vse neuspešne poskuse prijave. Odpre se lahko z ukazom lastb z naprednimi dovoljenji. Atribut -n določa število vrstic, prikazanih od konca datoteke.
/var/log/lastlog - vsebuje čas zadnje prijave za vsak zapis računa. Odpre se lahko z ukazom lastlog