Kai susiduriate su serverio našumo problemomis, pirmiausia turite patikrinti „Linux“ žurnalus . Sistemos žurnale galite rasti naudingų diagnostikos pranešimų iš skirtingų operacinės sistemos komponentų, tokių kaip branduolys ar įvairios paslaugos, todėl greičiausiai gedimo priežastį rasite ten.
Kiekvienas žurnalo pranešimas generuojamas dėl tam tikrų operacinės sistemos įvykių: nuo vartotojo, autorizacijos iki paslaugos išjungimo ar programos gedimo. Šie įvykiai turi skirtingus prioritetus, priklausomai nuo jų kritiškumo. „Linux“ sistemoje yra šie įvykių tipai:
emerg- nesėkmė, aukščiausias prioritetas;alert- skubus įspėjimas;crit- kritinis įvykis;err- įprasta klaida;warn- įprastas įspėjimas;notice- pranešimas;info- informacinis pranešimas;debug- derinimo informacija;
Šiuo metu pagrindinės žurnalų rinkimo paslaugos „Linux“ sistemoje yra „rsyslog“ ir „systemd-journald“ . Jos yra įtrauktos į daugumą šiuolaikinių platinimo paketų ir veikia savarankiškai.
rsyslog
Šios paslaugos žurnalai yra aplanke „ /var/log/ “ įprastų tekstinių failų pavidalu. Žurnalų pranešimai talpinami skirtinguose failuose, priklausomai nuo įvykio tipo. Pavyzdžiui, „ /var/log/auth.log “ yra informacija apie vartotojų autorizaciją sistemoje, o „ /var/log/kern.log “ – branduolio pranešimai. Failų pavadinimai gali skirtis skirtinguose platinimo paketuose, todėl pažvelkime į konfigūracijos failą, kad susidarytume vaizdą, kur yra „ /etc/rsyslog.d/50-default.conf “.
Šios taisyklės rodo, kuriame faile yra kiekvieno tipo žurnalo pranešimai. Kairėje dalyje rodomas pranešimo tipas tokia forma: „ [Šaltinis].[Prioritetas] “, o dešinėje – žurnalo failo pavadinimas. Rašant pranešimo tipą, galima pridėti simbolį „ * “. Tai reiškia tuščią reikšmę arba „ none “, kuris pašalina pranešimą iš sąrašo. Panagrinėkime pirmas dvi taisykles atidžiau.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Pirmoji taisyklė reiškia, kad visi iš autorizacijos mechanizmo gauti pranešimai bus įrašomi į failą „ /var/log/auth.log “. Visi autorizacijos bandymai (tiek sėkmingi, tiek nesėkmingi) bus registruojami šiame faile. Antroji taisyklė nurodo, kad visi pranešimai, išskyrus susijusius su autorizacija, bus įrašomi į failą „ /var/log/syslog “. Šie du failai paprastai yra populiariausi. Šios taisyklės apibrėžia kelią, kuriame saugomi branduolio žurnalai „ kern.* “ ir pašto tarnybos žurnalai „ mail.* “.
Žurnalų failus galima atidaryti naudojant bet kurį teksto redaktorių, pvz., „ less “ , „cat“ , „tail “. Atidarykime failą „ /var/log/auth.log “ .
less /var/log/auth.log
Kiekviena failo eilutė yra atskiras pranešimas, gautas iš programos ar paslaugos. Visi pranešimai, nepaisant jų šaltinio, yra vieno formato ir susideda iš 5 dalių. Kaip pavyzdį paimkime pažymėtą pranešimą ekrano kopijoje.
- Pranešimo laiko žyma – „Vasario 12 d. 06:18:33“
- Kompiuterio, iš kurio buvo išsiųstas pranešimas, pavadinimas – „vds“
- Programos ar paslaugos, kuri išsiuntė pranešimą, pavadinimas - „sshd“
- Proceso ID – [653]
- Pranešimo tekstas – „Priimtas slaptažodis mihail iš 188.19.42.165 prievado 2849 ssh2“
Tai buvo sėkmingo prisijungimo prie SSH pavyzdys.
Štai kaip atrodo nesėkmingas prisijungimo bandymas:
Šis failas taip pat įrašo komandas su išplėstiniais leidimais
Atidarykime failą /var/log/syslog
Ekrano kopijoje paryškintas pranešimas yra pranešimas apie tinklo sąsajos išjungimą.
Informacijos paieškai ilguose tekstiniuose failuose naudokite grep įrankį. Visus iš pptpd paslaugos gautus pranešimus galite rasti faile „ /var/log/syslog “.
grep 'pptpd' /var/log/syslog
Diagnostikos metu galite naudoti „tail“ programą, kuri gali rodyti kelias paskutines failų eilutes. Komanda „ tail -f /var/log/syslog “ leis jums stebėti žurnalų įrašymą realiuoju laiku.
„rsyslog“ paslauga yra labai lanksti ir galinga. Ji gali būti naudojama žurnalų rinkimui tiek vietinėse sistemose, tiek įmonės lygmeniu. Visą dokumentaciją galite rasti oficialioje svetainėje https://www.rsyslog.com/
Žurnalų rotacija Linux sistemoje
Žurnalų įrašymas vyksta nuolat, todėl failų dydis nuolat auga. Rotacijos mechanizmas užtikrina automatinį senų žurnalų archyvavimą ir naujų failų kūrimą. Priklausomai nuo taisyklių, tai gali vykti kasdien, kas savaitę, kas mėnesį arba pagal dydžio apribojimą. Sukūrus naujus žurnalus, senus galima tiesiog ištrinti arba išsiųsti el. paštu. Žurnalų rotaciją atlieka „ logrotate “ programa. Pagrindinę konfigūraciją galite rasti faile „ /etc/logrotate.conf “. Failų turinys taip pat apdorojamas aplanke „ /etc/logrotate.d/ “ .
Naujas taisykles galima registruoti pagrindiniame konfigūracijos faile. Tačiau geriausia sukurti atskirą failą aplanke „ /etc/logrotate.d/ “. Pagal numatytuosius nustatymus šiame kataloge yra keli failai.
Pažvelkime į failą „ /etc/logrotate.d/rsyslog “, kuriame yra „rsyslog “ paslaugos žurnalų rotacijos taisyklės.
Pirma, taisyklėje turi būti kelias į žurnalo failą, o tada visos gairės turi būti pateiktos lenktuose skliaustuose.
- pasukti 7 - saugotinų failų skaičius - 7
- kasdien - kiekvieną dieną sukurkite naują failą
- suspausti - suspausti ir archyvuoti senus failus
Ekrano kopijoje galite matyti, kad aplanke „ /var/log/ “ yra pagrindinis žurnalas „ syslog “ ir 7 archyvai, kurie atitinka konfigūracijos failo taisykles.
Išsamesnį „logrotate“ aprašymą galite rasti vadove, vykdydami komandą „ man logrotate “.
Linux žurnalų rinkimas – žurnalas
Žurnalų rinkimo paslauga „systemd-journald“ yra inicijavimo sistemos „systemd“ dalis . „Linux“ žurnalų failai saugomi specialiu formatu aplanke „ /var/log/journal/ “ ir gali būti atidaryti naudojant „journalctl“ įrankį. Įrašų formatas yra visiškai toks pat kaip ir „rsyslog“.
Komanda „journalctl“ be atributų rodo visus įrašus, bet netinka didesniems žurnalams. Pažvelkime į kai kurias šios priemonės parinktis.
journalctl -b- rodyti visus įrašus nuo paskutinio startojournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- rodyti įrašą per tam tikrą laikotarpįjournalctl -u pptpd- rodyti tam tikros paslaugos įrašusjournalctl -k- rodyti branduolio pranešimusjournalctl -p err- rodyti tam tikro prioriteto pranešimus, šiuo atveju aukštesnio prioriteto pranešimus (kritinis, įspėjimas, atsiradimas)journalctl -f- rodyti pranešimus realiuoju laiku
Dėl didesnio lankstumo galite derinti šias parinktis. Parodykime visas pptpd paslaugos klaidas.
journalctl -u pptpd -p err
Jei kaip atributą nurodysite vykdomojo failo kelią, programa rodys visus šio failo išsiųstus pranešimus. Parodykime visus failo „ /usr/bin/sudo “ išsiųstus pranešimus nuo 2020 m. vasario 18 d. 04:15. Tiesą sakant, bus rodomos visos komandos, vykdomos turint aukštesnius leidimus.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Norėdami sužinoti, kiek vietos diske užima žurnalo failai, norint vykdyti šią komandą
journalctl --disk-usage
Norėdami apriboti žurnalo failą iki 1 Gb, vykdykite šią komandą
journalctl --vacuum-size=1G
Dvejetainių failų atidarymas
Dabar pažvelkime į keletą specialių failų aplanke „ /var/log/ “, kuriame saugomi visi prisijungimo bandymai. Šie failai yra dvejetainiai ir juos galima atidaryti tik specialiomis programomis.
/var/log/wtmp yra informacija apie sėkmingus prisijungimo bandymus. Norėdami ją atidaryti, naudokite paskutinę programą.
/var/log/btmp – saugo visus nepavykusius prisijungimo bandymus. Jį galima atidaryti naudojant „lastb“ su išplėstinėmis teisėmis. Atributas -n nurodo eilučių, rodomų nuo failo pabaigos, skaičių.
/var/log/lastlog – jame yra paskutinio prisijungimo prie kiekvieno paskyros įrašo laikas. Jį galima atidaryti naudojant „lastlog“